# Conflicts: # access/views.pyfeature/fix_accout_not_found
@ -1,5 +1,5 @@ |
||||
DEBUG=True |
||||
SECRET_KEY='!eiquy7_+2#vn3z%zfp51$m-=tmvtcv*cj*@x$!v(_9btq0w=$' |
||||
DATABASE_URL='psql://postgres@127.0.0.1:5432/test_lms' |
||||
DATABASE_URL='psql://lms_dev_user:HJin2dt3@127.0.0.1:5432/lms_dev' |
||||
EMAIL_URL='smtp+tls://9ae31a1a770138:a7d79ee373a14c@smtp.mailtrap.io:2525' |
||||
CACHE_URL=rediscache://127.0.0.1:6379/1?client_class=django_redis.client.DefaultClient |
||||
|
After Width: | Height: | Size: 142 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
@ -0,0 +1,967 @@ |
||||
/* |
||||
DJANGO Admin styles |
||||
*/ |
||||
|
||||
@import url(fonts.css); |
||||
|
||||
body { |
||||
margin: 0; |
||||
padding: 0; |
||||
font-size: 14px; |
||||
font-family: "Roboto","Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; |
||||
color: #333; |
||||
background: #fff; |
||||
} |
||||
|
||||
/* LINKS */ |
||||
|
||||
a:link, a:visited { |
||||
color: #447e9b; |
||||
text-decoration: none; |
||||
} |
||||
|
||||
a:focus, a:hover { |
||||
color: #036; |
||||
} |
||||
|
||||
a:focus { |
||||
text-decoration: underline; |
||||
} |
||||
|
||||
a img { |
||||
border: none; |
||||
} |
||||
|
||||
a.section:link, a.section:visited { |
||||
color: #fff; |
||||
text-decoration: none; |
||||
} |
||||
|
||||
a.section:focus, a.section:hover { |
||||
text-decoration: underline; |
||||
} |
||||
|
||||
/* GLOBAL DEFAULTS */ |
||||
|
||||
p, ol, ul, dl { |
||||
margin: .2em 0 .8em 0; |
||||
} |
||||
|
||||
p { |
||||
padding: 0; |
||||
line-height: 140%; |
||||
} |
||||
|
||||
h1,h2,h3,h4,h5 { |
||||
font-weight: bold; |
||||
} |
||||
|
||||
h1 { |
||||
margin: 0 0 20px; |
||||
font-weight: 300; |
||||
font-size: 20px; |
||||
color: #666; |
||||
} |
||||
|
||||
h2 { |
||||
font-size: 16px; |
||||
margin: 1em 0 .5em 0; |
||||
} |
||||
|
||||
h2.subhead { |
||||
font-weight: normal; |
||||
margin-top: 0; |
||||
} |
||||
|
||||
h3 { |
||||
font-size: 14px; |
||||
margin: .8em 0 .3em 0; |
||||
color: #666; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
h4 { |
||||
font-size: 12px; |
||||
margin: 1em 0 .8em 0; |
||||
padding-bottom: 3px; |
||||
} |
||||
|
||||
h5 { |
||||
font-size: 10px; |
||||
margin: 1.5em 0 .5em 0; |
||||
color: #666; |
||||
text-transform: uppercase; |
||||
letter-spacing: 1px; |
||||
} |
||||
|
||||
ul li { |
||||
list-style-type: square; |
||||
padding: 1px 0; |
||||
} |
||||
|
||||
li ul { |
||||
margin-bottom: 0; |
||||
} |
||||
|
||||
li, dt, dd { |
||||
font-size: 13px; |
||||
line-height: 20px; |
||||
} |
||||
|
||||
dt { |
||||
font-weight: bold; |
||||
margin-top: 4px; |
||||
} |
||||
|
||||
dd { |
||||
margin-left: 0; |
||||
} |
||||
|
||||
form { |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
fieldset { |
||||
margin: 0; |
||||
padding: 0; |
||||
border: none; |
||||
border-top: 1px solid #eee; |
||||
} |
||||
|
||||
blockquote { |
||||
font-size: 11px; |
||||
color: #777; |
||||
margin-left: 2px; |
||||
padding-left: 10px; |
||||
border-left: 5px solid #ddd; |
||||
} |
||||
|
||||
code, pre { |
||||
font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; |
||||
color: #666; |
||||
font-size: 12px; |
||||
} |
||||
|
||||
pre.literal-block { |
||||
margin: 10px; |
||||
background: #eee; |
||||
padding: 6px 8px; |
||||
} |
||||
|
||||
code strong { |
||||
color: #930; |
||||
} |
||||
|
||||
hr { |
||||
clear: both; |
||||
color: #eee; |
||||
background-color: #eee; |
||||
height: 1px; |
||||
border: none; |
||||
margin: 0; |
||||
padding: 0; |
||||
font-size: 1px; |
||||
line-height: 1px; |
||||
} |
||||
|
||||
/* TEXT STYLES & MODIFIERS */ |
||||
|
||||
.small { |
||||
font-size: 11px; |
||||
} |
||||
|
||||
.tiny { |
||||
font-size: 10px; |
||||
} |
||||
|
||||
p.tiny { |
||||
margin-top: -2px; |
||||
} |
||||
|
||||
.mini { |
||||
font-size: 10px; |
||||
} |
||||
|
||||
p.mini { |
||||
margin-top: -3px; |
||||
} |
||||
|
||||
.help, p.help, form p.help { |
||||
font-size: 11px; |
||||
color: #999; |
||||
} |
||||
|
||||
.help-tooltip { |
||||
cursor: help; |
||||
} |
||||
|
||||
p img, h1 img, h2 img, h3 img, h4 img, td img { |
||||
vertical-align: middle; |
||||
} |
||||
|
||||
.quiet, a.quiet:link, a.quiet:visited { |
||||
color: #999; |
||||
font-weight: normal; |
||||
} |
||||
|
||||
.float-right { |
||||
float: right; |
||||
} |
||||
|
||||
.float-left { |
||||
float: left; |
||||
} |
||||
|
||||
.clear { |
||||
clear: both; |
||||
} |
||||
|
||||
.align-left { |
||||
text-align: left; |
||||
} |
||||
|
||||
.align-right { |
||||
text-align: right; |
||||
} |
||||
|
||||
.example { |
||||
margin: 10px 0; |
||||
padding: 5px 10px; |
||||
background: #efefef; |
||||
} |
||||
|
||||
.nowrap { |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
/* TABLES */ |
||||
|
||||
table { |
||||
border-collapse: collapse; |
||||
border-color: #ccc; |
||||
} |
||||
|
||||
td, th { |
||||
font-size: 13px; |
||||
line-height: 16px; |
||||
border-bottom: 1px solid #eee; |
||||
vertical-align: top; |
||||
padding: 8px; |
||||
font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; |
||||
} |
||||
|
||||
th { |
||||
font-weight: 600; |
||||
text-align: left; |
||||
} |
||||
|
||||
thead th, |
||||
tfoot td { |
||||
color: #666; |
||||
padding: 5px 10px; |
||||
font-size: 11px; |
||||
background: #fff; |
||||
border: none; |
||||
border-top: 1px solid #eee; |
||||
border-bottom: 1px solid #eee; |
||||
} |
||||
|
||||
tfoot td { |
||||
border-bottom: none; |
||||
border-top: 1px solid #eee; |
||||
} |
||||
|
||||
tr.alt { |
||||
background: #f6f6f6; |
||||
} |
||||
|
||||
.row1 { |
||||
background: #fff; |
||||
} |
||||
|
||||
.row2 { |
||||
background: #f9f9f9; |
||||
} |
||||
|
||||
/* SORTABLE TABLES */ |
||||
|
||||
thead th { |
||||
padding: 5px 10px; |
||||
line-height: normal; |
||||
text-transform: uppercase; |
||||
background: #f6f6f6; |
||||
} |
||||
|
||||
thead th a:link, thead th a:visited { |
||||
color: #666; |
||||
} |
||||
|
||||
thead th.sorted { |
||||
background: #eee; |
||||
} |
||||
|
||||
thead th.sorted .text { |
||||
padding-right: 42px; |
||||
} |
||||
|
||||
table thead th .text span { |
||||
padding: 8px 10px; |
||||
display: block; |
||||
} |
||||
|
||||
table thead th .text a { |
||||
display: block; |
||||
cursor: pointer; |
||||
padding: 8px 10px; |
||||
} |
||||
|
||||
table thead th .text a:focus, table thead th .text a:hover { |
||||
background: #eee; |
||||
} |
||||
|
||||
thead th.sorted a.sortremove { |
||||
visibility: hidden; |
||||
} |
||||
|
||||
table thead th.sorted:hover a.sortremove { |
||||
visibility: visible; |
||||
} |
||||
|
||||
table thead th.sorted .sortoptions { |
||||
display: block; |
||||
padding: 9px 5px 0 5px; |
||||
float: right; |
||||
text-align: right; |
||||
} |
||||
|
||||
table thead th.sorted .sortpriority { |
||||
font-size: .8em; |
||||
min-width: 12px; |
||||
text-align: center; |
||||
vertical-align: 3px; |
||||
margin-left: 2px; |
||||
margin-right: 2px; |
||||
} |
||||
|
||||
table thead th.sorted .sortoptions a { |
||||
position: relative; |
||||
width: 14px; |
||||
height: 14px; |
||||
display: inline-block; |
||||
background: url(../img/sorting-icons.svg) 0 0 no-repeat; |
||||
background-size: 14px auto; |
||||
} |
||||
|
||||
table thead th.sorted .sortoptions a.sortremove { |
||||
background-position: 0 0; |
||||
} |
||||
|
||||
table thead th.sorted .sortoptions a.sortremove:after { |
||||
content: '\\'; |
||||
position: absolute; |
||||
top: -6px; |
||||
left: 3px; |
||||
font-weight: 200; |
||||
font-size: 18px; |
||||
color: #999; |
||||
} |
||||
|
||||
table thead th.sorted .sortoptions a.sortremove:focus:after, |
||||
table thead th.sorted .sortoptions a.sortremove:hover:after { |
||||
color: #447e9b; |
||||
} |
||||
|
||||
table thead th.sorted .sortoptions a.sortremove:focus, |
||||
table thead th.sorted .sortoptions a.sortremove:hover { |
||||
background-position: 0 -14px; |
||||
} |
||||
|
||||
table thead th.sorted .sortoptions a.ascending { |
||||
background-position: 0 -28px; |
||||
} |
||||
|
||||
table thead th.sorted .sortoptions a.ascending:focus, |
||||
table thead th.sorted .sortoptions a.ascending:hover { |
||||
background-position: 0 -42px; |
||||
} |
||||
|
||||
table thead th.sorted .sortoptions a.descending { |
||||
top: 1px; |
||||
background-position: 0 -56px; |
||||
} |
||||
|
||||
table thead th.sorted .sortoptions a.descending:focus, |
||||
table thead th.sorted .sortoptions a.descending:hover { |
||||
background-position: 0 -70px; |
||||
} |
||||
|
||||
/* FORM DEFAULTS */ |
||||
|
||||
input, textarea, select, .form-row p, form .button { |
||||
margin: 2px 0; |
||||
padding: 2px 3px; |
||||
vertical-align: middle; |
||||
font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; |
||||
font-weight: normal; |
||||
font-size: 13px; |
||||
} |
||||
|
||||
textarea { |
||||
vertical-align: top; |
||||
} |
||||
|
||||
input[type=text], input[type=password], input[type=email], input[type=url], |
||||
input[type=number], textarea, select, .vTextField { |
||||
border: 1px solid #ccc; |
||||
border-radius: 4px; |
||||
padding: 5px 6px; |
||||
margin-top: 0; |
||||
} |
||||
|
||||
input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, |
||||
input[type=url]:focus, input[type=number]:focus, textarea:focus, select:focus, |
||||
.vTextField:focus { |
||||
border-color: #999; |
||||
} |
||||
|
||||
select { |
||||
height: 30px; |
||||
} |
||||
|
||||
select[multiple] { |
||||
min-height: 150px; |
||||
} |
||||
|
||||
/* FORM BUTTONS */ |
||||
|
||||
.button, input[type=submit], input[type=button], .submit-row input, a.button { |
||||
background: #79aec8; |
||||
padding: 10px 15px; |
||||
border: none; |
||||
border-radius: 4px; |
||||
color: #fff; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
a.button { |
||||
padding: 4px 5px; |
||||
} |
||||
|
||||
.button:active, input[type=submit]:active, input[type=button]:active, |
||||
.button:focus, input[type=submit]:focus, input[type=button]:focus, |
||||
.button:hover, input[type=submit]:hover, input[type=button]:hover { |
||||
background: #609ab6; |
||||
} |
||||
|
||||
.button[disabled], input[type=submit][disabled], input[type=button][disabled] { |
||||
opacity: 0.4; |
||||
} |
||||
|
||||
.button.default, input[type=submit].default, .submit-row input.default { |
||||
float: right; |
||||
border: none; |
||||
font-weight: 400; |
||||
background: #417690; |
||||
} |
||||
|
||||
.button.default:active, input[type=submit].default:active, |
||||
.button.default:focus, input[type=submit].default:focus, |
||||
.button.default:hover, input[type=submit].default:hover { |
||||
background: #205067; |
||||
} |
||||
|
||||
.button[disabled].default, |
||||
input[type=submit][disabled].default, |
||||
input[type=button][disabled].default { |
||||
opacity: 0.4; |
||||
} |
||||
|
||||
|
||||
/* MODULES */ |
||||
|
||||
.module { |
||||
border: none; |
||||
margin-bottom: 30px; |
||||
background: #fff; |
||||
} |
||||
|
||||
.module p, .module ul, .module h3, .module h4, .module dl, .module pre { |
||||
padding-left: 10px; |
||||
padding-right: 10px; |
||||
} |
||||
|
||||
.module blockquote { |
||||
margin-left: 12px; |
||||
} |
||||
|
||||
.module ul, .module ol { |
||||
margin-left: 1.5em; |
||||
} |
||||
|
||||
.module h3 { |
||||
margin-top: .6em; |
||||
} |
||||
|
||||
.module h2, .module caption, .inline-group h2 { |
||||
margin: 0; |
||||
padding: 8px; |
||||
font-weight: 400; |
||||
font-size: 13px; |
||||
text-align: left; |
||||
background: #79aec8; |
||||
color: #fff; |
||||
} |
||||
|
||||
.module caption, |
||||
.inline-group h2 { |
||||
font-size: 12px; |
||||
letter-spacing: 0.5px; |
||||
text-transform: uppercase; |
||||
} |
||||
|
||||
.module table { |
||||
border-collapse: collapse; |
||||
} |
||||
|
||||
/* MESSAGES & ERRORS */ |
||||
|
||||
ul.messagelist { |
||||
padding: 0; |
||||
margin: 0; |
||||
} |
||||
|
||||
ul.messagelist li { |
||||
display: block; |
||||
font-weight: 400; |
||||
font-size: 13px; |
||||
padding: 10px 10px 10px 65px; |
||||
margin: 0 0 10px 0; |
||||
background: #dfd url(../img/icon-yes.svg) 40px 12px no-repeat; |
||||
background-size: 16px auto; |
||||
color: #333; |
||||
} |
||||
|
||||
ul.messagelist li.warning { |
||||
background: #ffc url(../img/icon-alert.svg) 40px 14px no-repeat; |
||||
background-size: 14px auto; |
||||
} |
||||
|
||||
ul.messagelist li.error { |
||||
background: #ffefef url(../img/icon-no.svg) 40px 12px no-repeat; |
||||
background-size: 16px auto; |
||||
} |
||||
|
||||
.errornote { |
||||
font-size: 14px; |
||||
font-weight: 700; |
||||
display: block; |
||||
padding: 10px 12px; |
||||
margin: 0 0 10px 0; |
||||
color: #ba2121; |
||||
border: 1px solid #ba2121; |
||||
border-radius: 4px; |
||||
background-color: #fff; |
||||
background-position: 5px 12px; |
||||
} |
||||
|
||||
ul.errorlist { |
||||
margin: 0 0 4px; |
||||
padding: 0; |
||||
color: #ba2121; |
||||
background: #fff; |
||||
} |
||||
|
||||
ul.errorlist li { |
||||
font-size: 13px; |
||||
display: block; |
||||
margin-bottom: 4px; |
||||
} |
||||
|
||||
ul.errorlist li:first-child { |
||||
margin-top: 0; |
||||
} |
||||
|
||||
ul.errorlist li a { |
||||
color: inherit; |
||||
text-decoration: underline; |
||||
} |
||||
|
||||
td ul.errorlist { |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
td ul.errorlist li { |
||||
margin: 0; |
||||
} |
||||
|
||||
.form-row.errors { |
||||
margin: 0; |
||||
border: none; |
||||
border-bottom: 1px solid #eee; |
||||
background: none; |
||||
} |
||||
|
||||
.form-row.errors ul.errorlist li { |
||||
padding-left: 0; |
||||
} |
||||
|
||||
.errors input, .errors select, .errors textarea { |
||||
border: 1px solid #ba2121; |
||||
} |
||||
|
||||
div.system-message { |
||||
background: #ffc; |
||||
margin: 10px; |
||||
padding: 6px 8px; |
||||
font-size: .8em; |
||||
} |
||||
|
||||
div.system-message p.system-message-title { |
||||
padding: 4px 5px 4px 25px; |
||||
margin: 0; |
||||
color: #c11; |
||||
background: #ffefef url(../img/icon-no.svg) 5px 5px no-repeat; |
||||
} |
||||
|
||||
.description { |
||||
font-size: 12px; |
||||
padding: 5px 0 0 12px; |
||||
} |
||||
|
||||
/* BREADCRUMBS */ |
||||
|
||||
div.breadcrumbs { |
||||
background: #79aec8; |
||||
padding: 10px 40px; |
||||
border: none; |
||||
font-size: 14px; |
||||
color: #c4dce8; |
||||
text-align: left; |
||||
} |
||||
|
||||
div.breadcrumbs a { |
||||
color: #fff; |
||||
} |
||||
|
||||
div.breadcrumbs a:focus, div.breadcrumbs a:hover { |
||||
color: #c4dce8; |
||||
} |
||||
|
||||
/* ACTION ICONS */ |
||||
|
||||
.addlink { |
||||
padding-left: 16px; |
||||
background: url(../img/icon-addlink.svg) 0 1px no-repeat; |
||||
} |
||||
|
||||
.changelink, .inlinechangelink { |
||||
padding-left: 16px; |
||||
background: url(../img/icon-changelink.svg) 0 1px no-repeat; |
||||
} |
||||
|
||||
.deletelink { |
||||
padding-left: 16px; |
||||
background: url(../img/icon-deletelink.svg) 0 1px no-repeat; |
||||
} |
||||
|
||||
a.deletelink:link, a.deletelink:visited { |
||||
color: #CC3434; |
||||
} |
||||
|
||||
a.deletelink:focus, a.deletelink:hover { |
||||
color: #993333; |
||||
text-decoration: none; |
||||
} |
||||
|
||||
/* OBJECT TOOLS */ |
||||
|
||||
.object-tools { |
||||
font-size: 10px; |
||||
font-weight: bold; |
||||
padding-left: 0; |
||||
float: right; |
||||
position: relative; |
||||
margin-top: -48px; |
||||
} |
||||
|
||||
.form-row .object-tools { |
||||
margin-top: 5px; |
||||
margin-bottom: 5px; |
||||
float: none; |
||||
height: 2em; |
||||
padding-left: 3.5em; |
||||
} |
||||
|
||||
.object-tools li { |
||||
display: block; |
||||
float: left; |
||||
margin-left: 5px; |
||||
height: 16px; |
||||
} |
||||
|
||||
.object-tools a { |
||||
border-radius: 15px; |
||||
} |
||||
|
||||
.object-tools a:link, .object-tools a:visited { |
||||
display: block; |
||||
float: left; |
||||
padding: 3px 12px; |
||||
background: #999; |
||||
font-weight: 400; |
||||
font-size: 11px; |
||||
text-transform: uppercase; |
||||
letter-spacing: 0.5px; |
||||
color: #fff; |
||||
} |
||||
|
||||
.object-tools a:focus, .object-tools a:hover { |
||||
background-color: #417690; |
||||
} |
||||
|
||||
.object-tools a:focus{ |
||||
text-decoration: none; |
||||
} |
||||
|
||||
.object-tools a.viewsitelink, .object-tools a.golink,.object-tools a.addlink { |
||||
background-repeat: no-repeat; |
||||
background-position: 93% center; |
||||
padding-right: 26px; |
||||
} |
||||
|
||||
.object-tools a.viewsitelink, .object-tools a.golink { |
||||
background-image: url(../img/tooltag-arrowright.svg); |
||||
} |
||||
|
||||
.object-tools a.addlink { |
||||
background-image: url(../img/tooltag-add.svg); |
||||
} |
||||
|
||||
/* OBJECT HISTORY */ |
||||
|
||||
table#change-history { |
||||
width: 100%; |
||||
} |
||||
|
||||
table#change-history tbody th { |
||||
width: 16em; |
||||
} |
||||
|
||||
/* PAGE STRUCTURE */ |
||||
|
||||
#container { |
||||
position: relative; |
||||
width: 100%; |
||||
min-width: 980px; |
||||
padding: 0; |
||||
} |
||||
|
||||
#content { |
||||
padding: 20px 40px; |
||||
} |
||||
|
||||
.dashboard #content { |
||||
width: 600px; |
||||
} |
||||
|
||||
#content-main { |
||||
float: left; |
||||
width: 100%; |
||||
} |
||||
|
||||
#content-related { |
||||
float: right; |
||||
width: 260px; |
||||
position: relative; |
||||
margin-right: -300px; |
||||
} |
||||
|
||||
#footer { |
||||
clear: both; |
||||
padding: 10px; |
||||
} |
||||
|
||||
/* COLUMN TYPES */ |
||||
|
||||
.colMS { |
||||
margin-right: 300px; |
||||
} |
||||
|
||||
.colSM { |
||||
margin-left: 300px; |
||||
} |
||||
|
||||
.colSM #content-related { |
||||
float: left; |
||||
margin-right: 0; |
||||
margin-left: -300px; |
||||
} |
||||
|
||||
.colSM #content-main { |
||||
float: right; |
||||
} |
||||
|
||||
.popup .colM { |
||||
width: auto; |
||||
} |
||||
|
||||
/* HEADER */ |
||||
|
||||
#header { |
||||
width: auto; |
||||
height: 40px; |
||||
padding: 10px 40px; |
||||
background: #417690; |
||||
line-height: 40px; |
||||
color: #ffc; |
||||
overflow: hidden; |
||||
} |
||||
|
||||
#header a:link, #header a:visited { |
||||
color: #fff; |
||||
} |
||||
|
||||
#header a:focus , #header a:hover { |
||||
text-decoration: underline; |
||||
} |
||||
|
||||
#branding { |
||||
float: left; |
||||
} |
||||
|
||||
#branding h1 { |
||||
padding: 0; |
||||
margin: 0 20px 0 0; |
||||
font-weight: 300; |
||||
font-size: 24px; |
||||
color: #f5dd5d; |
||||
} |
||||
|
||||
#branding h1, #branding h1 a:link, #branding h1 a:visited { |
||||
color: #f5dd5d; |
||||
} |
||||
|
||||
#branding h2 { |
||||
padding: 0 10px; |
||||
font-size: 14px; |
||||
margin: -8px 0 8px 0; |
||||
font-weight: normal; |
||||
color: #ffc; |
||||
} |
||||
|
||||
#branding a:hover { |
||||
text-decoration: none; |
||||
} |
||||
|
||||
#user-tools { |
||||
float: right; |
||||
padding: 0; |
||||
margin: 0 0 0 20px; |
||||
font-weight: 300; |
||||
font-size: 11px; |
||||
letter-spacing: 0.5px; |
||||
text-transform: uppercase; |
||||
text-align: right; |
||||
} |
||||
|
||||
#user-tools a { |
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.25); |
||||
} |
||||
|
||||
#user-tools a:focus, #user-tools a:hover { |
||||
text-decoration: none; |
||||
border-bottom-color: #79aec8; |
||||
color: #79aec8; |
||||
} |
||||
|
||||
/* SIDEBAR */ |
||||
|
||||
#content-related { |
||||
background: #f8f8f8; |
||||
} |
||||
|
||||
#content-related .module { |
||||
background: none; |
||||
} |
||||
|
||||
#content-related h3 { |
||||
font-size: 14px; |
||||
color: #666; |
||||
padding: 0 16px; |
||||
margin: 0 0 16px; |
||||
} |
||||
|
||||
#content-related h4 { |
||||
font-size: 13px; |
||||
} |
||||
|
||||
#content-related p { |
||||
padding-left: 16px; |
||||
padding-right: 16px; |
||||
} |
||||
|
||||
#content-related .actionlist { |
||||
padding: 0; |
||||
margin: 16px; |
||||
} |
||||
|
||||
#content-related .actionlist li { |
||||
line-height: 1.2; |
||||
margin-bottom: 10px; |
||||
padding-left: 18px; |
||||
} |
||||
|
||||
#content-related .module h2 { |
||||
background: none; |
||||
padding: 16px; |
||||
margin-bottom: 16px; |
||||
border-bottom: 1px solid #eaeaea; |
||||
font-size: 18px; |
||||
color: #333; |
||||
} |
||||
|
||||
.delete-confirmation form input[type="submit"] { |
||||
background: #ba2121; |
||||
border-radius: 4px; |
||||
padding: 10px 15px; |
||||
color: #fff; |
||||
} |
||||
|
||||
.delete-confirmation form input[type="submit"]:active, |
||||
.delete-confirmation form input[type="submit"]:focus, |
||||
.delete-confirmation form input[type="submit"]:hover { |
||||
background: #a41515; |
||||
} |
||||
|
||||
.delete-confirmation form .cancel-link { |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
height: 15px; |
||||
line-height: 15px; |
||||
background: #ddd; |
||||
border-radius: 4px; |
||||
padding: 10px 15px; |
||||
color: #333; |
||||
margin: 0 0 0 10px; |
||||
} |
||||
|
||||
.delete-confirmation form .cancel-link:active, |
||||
.delete-confirmation form .cancel-link:focus, |
||||
.delete-confirmation form .cancel-link:hover { |
||||
background: #ccc; |
||||
} |
||||
|
||||
/* POPUP */ |
||||
.popup #content { |
||||
padding: 20px; |
||||
} |
||||
|
||||
.popup #container { |
||||
min-width: 0; |
||||
} |
||||
|
||||
.popup #header { |
||||
padding: 10px 20px; |
||||
} |
||||
@ -0,0 +1,341 @@ |
||||
/* CHANGELISTS */ |
||||
|
||||
#changelist { |
||||
position: relative; |
||||
width: 100%; |
||||
} |
||||
|
||||
#changelist table { |
||||
width: 100%; |
||||
} |
||||
|
||||
.change-list .hiddenfields { display:none; } |
||||
|
||||
.change-list .filtered table { |
||||
border-right: none; |
||||
} |
||||
|
||||
.change-list .filtered { |
||||
min-height: 400px; |
||||
} |
||||
|
||||
.change-list .filtered .results, .change-list .filtered .paginator, |
||||
.filtered #toolbar, .filtered div.xfull { |
||||
margin-right: 280px; |
||||
width: auto; |
||||
} |
||||
|
||||
.change-list .filtered table tbody th { |
||||
padding-right: 1em; |
||||
} |
||||
|
||||
#changelist-form .results { |
||||
overflow-x: auto; |
||||
} |
||||
|
||||
#changelist .toplinks { |
||||
border-bottom: 1px solid #ddd; |
||||
} |
||||
|
||||
#changelist .paginator { |
||||
color: #666; |
||||
border-bottom: 1px solid #eee; |
||||
background: #fff; |
||||
overflow: hidden; |
||||
} |
||||
|
||||
/* CHANGELIST TABLES */ |
||||
|
||||
#changelist table thead th { |
||||
padding: 0; |
||||
white-space: nowrap; |
||||
vertical-align: middle; |
||||
} |
||||
|
||||
#changelist table thead th.action-checkbox-column { |
||||
width: 1.5em; |
||||
text-align: center; |
||||
} |
||||
|
||||
#changelist table tbody td.action-checkbox { |
||||
text-align: center; |
||||
} |
||||
|
||||
#changelist table tfoot { |
||||
color: #666; |
||||
} |
||||
|
||||
/* TOOLBAR */ |
||||
|
||||
#changelist #toolbar { |
||||
padding: 8px 10px; |
||||
margin-bottom: 15px; |
||||
border-top: 1px solid #eee; |
||||
border-bottom: 1px solid #eee; |
||||
background: #f8f8f8; |
||||
color: #666; |
||||
} |
||||
|
||||
#changelist #toolbar form input { |
||||
border-radius: 4px; |
||||
font-size: 14px; |
||||
padding: 5px; |
||||
color: #333; |
||||
} |
||||
|
||||
#changelist #toolbar form #searchbar { |
||||
height: 19px; |
||||
border: 1px solid #ccc; |
||||
padding: 2px 5px; |
||||
margin: 0; |
||||
vertical-align: top; |
||||
font-size: 13px; |
||||
} |
||||
|
||||
#changelist #toolbar form #searchbar:focus { |
||||
border-color: #999; |
||||
} |
||||
|
||||
#changelist #toolbar form input[type="submit"] { |
||||
border: 1px solid #ccc; |
||||
padding: 2px 10px; |
||||
margin: 0; |
||||
vertical-align: middle; |
||||
background: #fff; |
||||
box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; |
||||
cursor: pointer; |
||||
color: #333; |
||||
} |
||||
|
||||
#changelist #toolbar form input[type="submit"]:focus, |
||||
#changelist #toolbar form input[type="submit"]:hover { |
||||
border-color: #999; |
||||
} |
||||
|
||||
#changelist #changelist-search img { |
||||
vertical-align: middle; |
||||
margin-right: 4px; |
||||
} |
||||
|
||||
/* FILTER COLUMN */ |
||||
|
||||
#changelist-filter { |
||||
position: absolute; |
||||
top: 0; |
||||
right: 0; |
||||
z-index: 1000; |
||||
width: 240px; |
||||
background: #f8f8f8; |
||||
border-left: none; |
||||
margin: 0; |
||||
} |
||||
|
||||
#changelist-filter h2 { |
||||
font-size: 14px; |
||||
text-transform: uppercase; |
||||
letter-spacing: 0.5px; |
||||
padding: 5px 15px; |
||||
margin-bottom: 12px; |
||||
border-bottom: none; |
||||
} |
||||
|
||||
#changelist-filter h3 { |
||||
font-weight: 400; |
||||
font-size: 14px; |
||||
padding: 0 15px; |
||||
margin-bottom: 10px; |
||||
} |
||||
|
||||
#changelist-filter ul { |
||||
margin: 5px 0; |
||||
padding: 0 15px 15px; |
||||
border-bottom: 1px solid #eaeaea; |
||||
} |
||||
|
||||
#changelist-filter ul:last-child { |
||||
border-bottom: none; |
||||
padding-bottom: none; |
||||
} |
||||
|
||||
#changelist-filter li { |
||||
list-style-type: none; |
||||
margin-left: 0; |
||||
padding-left: 0; |
||||
} |
||||
|
||||
#changelist-filter a { |
||||
display: block; |
||||
color: #999; |
||||
} |
||||
|
||||
#changelist-filter li.selected { |
||||
border-left: 5px solid #eaeaea; |
||||
padding-left: 10px; |
||||
margin-left: -15px; |
||||
} |
||||
|
||||
#changelist-filter li.selected a { |
||||
color: #5b80b2; |
||||
} |
||||
|
||||
#changelist-filter a:focus, #changelist-filter a:hover, |
||||
#changelist-filter li.selected a:focus, |
||||
#changelist-filter li.selected a:hover { |
||||
color: #036; |
||||
} |
||||
|
||||
/* DATE DRILLDOWN */ |
||||
|
||||
.change-list ul.toplinks { |
||||
display: block; |
||||
float: left; |
||||
padding: 0; |
||||
margin: 0; |
||||
width: 100%; |
||||
} |
||||
|
||||
.change-list ul.toplinks li { |
||||
padding: 3px 6px; |
||||
font-weight: bold; |
||||
list-style-type: none; |
||||
display: inline-block; |
||||
} |
||||
|
||||
.change-list ul.toplinks .date-back a { |
||||
color: #999; |
||||
} |
||||
|
||||
.change-list ul.toplinks .date-back a:focus, |
||||
.change-list ul.toplinks .date-back a:hover { |
||||
color: #036; |
||||
} |
||||
|
||||
/* PAGINATOR */ |
||||
|
||||
.paginator { |
||||
font-size: 13px; |
||||
padding-top: 10px; |
||||
padding-bottom: 10px; |
||||
line-height: 22px; |
||||
margin: 0; |
||||
border-top: 1px solid #ddd; |
||||
} |
||||
|
||||
.paginator a:link, .paginator a:visited { |
||||
padding: 2px 6px; |
||||
background: #79aec8; |
||||
text-decoration: none; |
||||
color: #fff; |
||||
} |
||||
|
||||
.paginator a.showall { |
||||
padding: 0; |
||||
border: none; |
||||
background: none; |
||||
color: #5b80b2; |
||||
} |
||||
|
||||
.paginator a.showall:focus, .paginator a.showall:hover { |
||||
background: none; |
||||
color: #036; |
||||
} |
||||
|
||||
.paginator .end { |
||||
margin-right: 6px; |
||||
} |
||||
|
||||
.paginator .this-page { |
||||
padding: 2px 6px; |
||||
font-weight: bold; |
||||
font-size: 13px; |
||||
vertical-align: top; |
||||
} |
||||
|
||||
.paginator a:focus, .paginator a:hover { |
||||
color: white; |
||||
background: #036; |
||||
} |
||||
|
||||
/* ACTIONS */ |
||||
|
||||
.filtered .actions { |
||||
margin-right: 280px; |
||||
border-right: none; |
||||
} |
||||
|
||||
#changelist table input { |
||||
margin: 0; |
||||
vertical-align: baseline; |
||||
} |
||||
|
||||
#changelist table tbody tr.selected { |
||||
background-color: #FFFFCC; |
||||
} |
||||
|
||||
#changelist .actions { |
||||
padding: 10px; |
||||
background: #fff; |
||||
border-top: none; |
||||
border-bottom: none; |
||||
line-height: 24px; |
||||
color: #999; |
||||
} |
||||
|
||||
#changelist .actions.selected { |
||||
background: #fffccf; |
||||
border-top: 1px solid #fffee8; |
||||
border-bottom: 1px solid #edecd6; |
||||
} |
||||
|
||||
#changelist .actions span.all, |
||||
#changelist .actions span.action-counter, |
||||
#changelist .actions span.clear, |
||||
#changelist .actions span.question { |
||||
font-size: 13px; |
||||
margin: 0 0.5em; |
||||
display: none; |
||||
} |
||||
|
||||
#changelist .actions:last-child { |
||||
border-bottom: none; |
||||
} |
||||
|
||||
#changelist .actions select { |
||||
vertical-align: top; |
||||
height: 24px; |
||||
background: none; |
||||
border: 1px solid #ccc; |
||||
border-radius: 4px; |
||||
font-size: 14px; |
||||
padding: 0 0 0 4px; |
||||
margin: 0; |
||||
margin-left: 10px; |
||||
} |
||||
|
||||
#changelist .actions select:focus { |
||||
border-color: #999; |
||||
} |
||||
|
||||
#changelist .actions label { |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
font-size: 13px; |
||||
} |
||||
|
||||
#changelist .actions .button { |
||||
font-size: 13px; |
||||
border: 1px solid #ccc; |
||||
border-radius: 4px; |
||||
background: #fff; |
||||
box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; |
||||
cursor: pointer; |
||||
height: 24px; |
||||
line-height: 1; |
||||
padding: 4px 8px; |
||||
margin: 0; |
||||
color: #333; |
||||
} |
||||
|
||||
#changelist .actions .button:focus, #changelist .actions .button:hover { |
||||
border-color: #999; |
||||
} |
||||
@ -0,0 +1,30 @@ |
||||
/* DASHBOARD */ |
||||
|
||||
.dashboard .module table th { |
||||
width: 100%; |
||||
} |
||||
|
||||
.dashboard .module table td { |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
.dashboard .module table td a { |
||||
display: block; |
||||
padding-right: .6em; |
||||
} |
||||
|
||||
/* RECENT ACTIONS MODULE */ |
||||
|
||||
.module ul.actionlist { |
||||
margin-left: 0; |
||||
} |
||||
|
||||
ul.actionlist li { |
||||
list-style-type: none; |
||||
} |
||||
|
||||
ul.actionlist li { |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
-o-text-overflow: ellipsis; |
||||
} |
||||
@ -0,0 +1,20 @@ |
||||
@font-face { |
||||
font-family: 'Roboto'; |
||||
src: url('../fonts/Roboto-Bold-webfont.woff'); |
||||
font-weight: 700; |
||||
font-style: normal; |
||||
} |
||||
|
||||
@font-face { |
||||
font-family: 'Roboto'; |
||||
src: url('../fonts/Roboto-Regular-webfont.woff'); |
||||
font-weight: 400; |
||||
font-style: normal; |
||||
} |
||||
|
||||
@font-face { |
||||
font-family: 'Roboto'; |
||||
src: url('../fonts/Roboto-Light-webfont.woff'); |
||||
font-weight: 300; |
||||
font-style: normal; |
||||
} |
||||
@ -0,0 +1,499 @@ |
||||
@import url('widgets.css'); |
||||
|
||||
/* FORM ROWS */ |
||||
|
||||
.form-row { |
||||
overflow: hidden; |
||||
padding: 10px; |
||||
font-size: 13px; |
||||
border-bottom: 1px solid #eee; |
||||
} |
||||
|
||||
.form-row img, .form-row input { |
||||
vertical-align: middle; |
||||
} |
||||
|
||||
.form-row label input[type="checkbox"] { |
||||
margin-top: 0; |
||||
vertical-align: 0; |
||||
} |
||||
|
||||
form .form-row p { |
||||
padding-left: 0; |
||||
} |
||||
|
||||
.hidden { |
||||
display: none; |
||||
} |
||||
|
||||
/* FORM LABELS */ |
||||
|
||||
label { |
||||
font-weight: normal; |
||||
color: #666; |
||||
font-size: 13px; |
||||
} |
||||
|
||||
.required label, label.required { |
||||
font-weight: bold; |
||||
color: #333; |
||||
} |
||||
|
||||
/* RADIO BUTTONS */ |
||||
|
||||
form ul.radiolist li { |
||||
list-style-type: none; |
||||
} |
||||
|
||||
form ul.radiolist label { |
||||
float: none; |
||||
display: inline; |
||||
} |
||||
|
||||
form ul.radiolist input[type="radio"] { |
||||
margin: -2px 4px 0 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
form ul.inline { |
||||
margin-left: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
form ul.inline li { |
||||
float: left; |
||||
padding-right: 7px; |
||||
} |
||||
|
||||
/* ALIGNED FIELDSETS */ |
||||
|
||||
.aligned label { |
||||
display: block; |
||||
padding: 4px 10px 0 0; |
||||
float: left; |
||||
width: 160px; |
||||
word-wrap: break-word; |
||||
line-height: 1; |
||||
} |
||||
|
||||
.aligned label:not(.vCheckboxLabel):after { |
||||
content: ''; |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
height: 26px; |
||||
} |
||||
|
||||
.aligned label + p { |
||||
padding: 6px 0; |
||||
margin-top: 0; |
||||
margin-bottom: 0; |
||||
margin-left: 170px; |
||||
} |
||||
|
||||
.aligned ul label { |
||||
display: inline; |
||||
float: none; |
||||
width: auto; |
||||
} |
||||
|
||||
.aligned .form-row input { |
||||
margin-bottom: 0; |
||||
} |
||||
|
||||
.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { |
||||
width: 350px; |
||||
} |
||||
|
||||
form .aligned ul { |
||||
margin-left: 160px; |
||||
padding-left: 10px; |
||||
} |
||||
|
||||
form .aligned ul.radiolist { |
||||
display: inline-block; |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
form .aligned p.help { |
||||
clear: left; |
||||
margin-top: 0; |
||||
margin-left: 160px; |
||||
padding-left: 10px; |
||||
} |
||||
|
||||
form .aligned label + p.help { |
||||
margin-left: 0; |
||||
padding-left: 0; |
||||
} |
||||
|
||||
form .aligned p.help:last-child { |
||||
margin-bottom: 0; |
||||
padding-bottom: 0; |
||||
} |
||||
|
||||
form .aligned input + p.help, |
||||
form .aligned textarea + p.help, |
||||
form .aligned select + p.help { |
||||
margin-left: 160px; |
||||
padding-left: 10px; |
||||
} |
||||
|
||||
form .aligned ul li { |
||||
list-style: none; |
||||
} |
||||
|
||||
form .aligned table p { |
||||
margin-left: 0; |
||||
padding-left: 0; |
||||
} |
||||
|
||||
.aligned .vCheckboxLabel { |
||||
float: none; |
||||
width: auto; |
||||
display: inline-block; |
||||
vertical-align: -3px; |
||||
padding: 0 0 5px 5px; |
||||
} |
||||
|
||||
.aligned .vCheckboxLabel + p.help { |
||||
margin-top: -4px; |
||||
} |
||||
|
||||
.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { |
||||
width: 610px; |
||||
} |
||||
|
||||
.checkbox-row p.help { |
||||
margin-left: 0; |
||||
padding-left: 0; |
||||
} |
||||
|
||||
fieldset .field-box { |
||||
float: left; |
||||
margin-right: 20px; |
||||
} |
||||
|
||||
/* WIDE FIELDSETS */ |
||||
|
||||
.wide label { |
||||
width: 200px; |
||||
} |
||||
|
||||
form .wide p, form .wide input + p.help { |
||||
margin-left: 200px; |
||||
} |
||||
|
||||
form .wide p.help { |
||||
padding-left: 38px; |
||||
} |
||||
|
||||
.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { |
||||
width: 450px; |
||||
} |
||||
|
||||
/* COLLAPSED FIELDSETS */ |
||||
|
||||
fieldset.collapsed * { |
||||
display: none; |
||||
} |
||||
|
||||
fieldset.collapsed h2, fieldset.collapsed { |
||||
display: block; |
||||
} |
||||
|
||||
fieldset.collapsed { |
||||
border: 1px solid #eee; |
||||
border-radius: 4px; |
||||
overflow: hidden; |
||||
} |
||||
|
||||
fieldset.collapsed h2 { |
||||
background: #f8f8f8; |
||||
color: #666; |
||||
} |
||||
|
||||
fieldset .collapse-toggle { |
||||
color: #fff; |
||||
} |
||||
|
||||
fieldset.collapsed .collapse-toggle { |
||||
background: transparent; |
||||
display: inline; |
||||
color: #447e9b; |
||||
} |
||||
|
||||
/* MONOSPACE TEXTAREAS */ |
||||
|
||||
fieldset.monospace textarea { |
||||
font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; |
||||
} |
||||
|
||||
/* SUBMIT ROW */ |
||||
|
||||
.submit-row { |
||||
padding: 12px 14px; |
||||
margin: 0 0 20px; |
||||
background: #f8f8f8; |
||||
border: 1px solid #eee; |
||||
border-radius: 4px; |
||||
text-align: right; |
||||
overflow: hidden; |
||||
} |
||||
|
||||
body.popup .submit-row { |
||||
overflow: auto; |
||||
} |
||||
|
||||
.submit-row input { |
||||
height: 35px; |
||||
line-height: 15px; |
||||
margin: 0 0 0 5px; |
||||
} |
||||
|
||||
.submit-row input.default { |
||||
margin: 0 0 0 8px; |
||||
text-transform: uppercase; |
||||
} |
||||
|
||||
.submit-row p { |
||||
margin: 0.3em; |
||||
} |
||||
|
||||
.submit-row p.deletelink-box { |
||||
float: left; |
||||
margin: 0; |
||||
} |
||||
|
||||
.submit-row a.deletelink { |
||||
display: block; |
||||
background: #ba2121; |
||||
border-radius: 4px; |
||||
padding: 10px 15px; |
||||
height: 15px; |
||||
line-height: 15px; |
||||
color: #fff; |
||||
} |
||||
|
||||
.submit-row a.deletelink:focus, |
||||
.submit-row a.deletelink:hover, |
||||
.submit-row a.deletelink:active { |
||||
background: #a41515; |
||||
} |
||||
|
||||
/* CUSTOM FORM FIELDS */ |
||||
|
||||
.vSelectMultipleField { |
||||
vertical-align: top; |
||||
} |
||||
|
||||
.vCheckboxField { |
||||
border: none; |
||||
} |
||||
|
||||
.vDateField, .vTimeField { |
||||
margin-right: 2px; |
||||
margin-bottom: 4px; |
||||
} |
||||
|
||||
.vDateField { |
||||
min-width: 6.85em; |
||||
} |
||||
|
||||
.vTimeField { |
||||
min-width: 4.7em; |
||||
} |
||||
|
||||
.vURLField { |
||||
width: 30em; |
||||
} |
||||
|
||||
.vLargeTextField, .vXMLLargeTextField { |
||||
width: 48em; |
||||
} |
||||
|
||||
.flatpages-flatpage #id_content { |
||||
height: 40.2em; |
||||
} |
||||
|
||||
.module table .vPositiveSmallIntegerField { |
||||
width: 2.2em; |
||||
} |
||||
|
||||
.vTextField { |
||||
width: 20em; |
||||
} |
||||
|
||||
.vIntegerField { |
||||
width: 5em; |
||||
} |
||||
|
||||
.vBigIntegerField { |
||||
width: 10em; |
||||
} |
||||
|
||||
.vForeignKeyRawIdAdminField { |
||||
width: 5em; |
||||
} |
||||
|
||||
/* INLINES */ |
||||
|
||||
.inline-group { |
||||
padding: 0; |
||||
margin: 0 0 30px; |
||||
} |
||||
|
||||
.inline-group thead th { |
||||
padding: 8px 10px; |
||||
} |
||||
|
||||
.inline-group .aligned label { |
||||
width: 160px; |
||||
} |
||||
|
||||
.inline-related { |
||||
position: relative; |
||||
} |
||||
|
||||
.inline-related h3 { |
||||
margin: 0; |
||||
color: #666; |
||||
padding: 5px; |
||||
font-size: 13px; |
||||
background: #f8f8f8; |
||||
border-top: 1px solid #eee; |
||||
border-bottom: 1px solid #eee; |
||||
} |
||||
|
||||
.inline-related h3 span.delete { |
||||
float: right; |
||||
} |
||||
|
||||
.inline-related h3 span.delete label { |
||||
margin-left: 2px; |
||||
font-size: 11px; |
||||
} |
||||
|
||||
.inline-related fieldset { |
||||
margin: 0; |
||||
background: #fff; |
||||
border: none; |
||||
width: 100%; |
||||
} |
||||
|
||||
.inline-related fieldset.module h3 { |
||||
margin: 0; |
||||
padding: 2px 5px 3px 5px; |
||||
font-size: 11px; |
||||
text-align: left; |
||||
font-weight: bold; |
||||
background: #bcd; |
||||
color: #fff; |
||||
} |
||||
|
||||
.inline-group .tabular fieldset.module { |
||||
border: none; |
||||
} |
||||
|
||||
.inline-related.tabular fieldset.module table { |
||||
width: 100%; |
||||
} |
||||
|
||||
.last-related fieldset { |
||||
border: none; |
||||
} |
||||
|
||||
.inline-group .tabular tr.has_original td { |
||||
padding-top: 2em; |
||||
} |
||||
|
||||
.inline-group .tabular tr td.original { |
||||
padding: 2px 0 0 0; |
||||
width: 0; |
||||
_position: relative; |
||||
} |
||||
|
||||
.inline-group .tabular th.original { |
||||
width: 0px; |
||||
padding: 0; |
||||
} |
||||
|
||||
.inline-group .tabular td.original p { |
||||
position: absolute; |
||||
left: 0; |
||||
height: 1.1em; |
||||
padding: 2px 9px; |
||||
overflow: hidden; |
||||
font-size: 9px; |
||||
font-weight: bold; |
||||
color: #666; |
||||
_width: 700px; |
||||
} |
||||
|
||||
.inline-group ul.tools { |
||||
padding: 0; |
||||
margin: 0; |
||||
list-style: none; |
||||
} |
||||
|
||||
.inline-group ul.tools li { |
||||
display: inline; |
||||
padding: 0 5px; |
||||
} |
||||
|
||||
.inline-group div.add-row, |
||||
.inline-group .tabular tr.add-row td { |
||||
color: #666; |
||||
background: #f8f8f8; |
||||
padding: 8px 10px; |
||||
border-bottom: 1px solid #eee; |
||||
} |
||||
|
||||
.inline-group .tabular tr.add-row td { |
||||
padding: 8px 10px; |
||||
border-bottom: 1px solid #eee; |
||||
} |
||||
|
||||
.inline-group ul.tools a.add, |
||||
.inline-group div.add-row a, |
||||
.inline-group .tabular tr.add-row td a { |
||||
background: url(../img/icon-addlink.svg) 0 1px no-repeat; |
||||
padding-left: 16px; |
||||
font-size: 12px; |
||||
} |
||||
|
||||
.empty-form { |
||||
display: none; |
||||
} |
||||
|
||||
/* RELATED FIELD ADD ONE / LOOKUP */ |
||||
|
||||
.add-another, .related-lookup { |
||||
margin-left: 5px; |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
background-repeat: no-repeat; |
||||
background-size: 14px; |
||||
} |
||||
|
||||
.add-another { |
||||
width: 16px; |
||||
height: 16px; |
||||
background-image: url(../img/icon-addlink.svg); |
||||
} |
||||
|
||||
.related-lookup { |
||||
width: 16px; |
||||
height: 16px; |
||||
background-image: url(../img/search.svg); |
||||
} |
||||
|
||||
form .related-widget-wrapper ul { |
||||
display: inline-block; |
||||
margin-left: 0; |
||||
padding-left: 0; |
||||
} |
||||
|
||||
.clearable-file-input input { |
||||
margin-top: 0; |
||||
} |
||||
@ -0,0 +1,78 @@ |
||||
/* LOGIN FORM */ |
||||
|
||||
body.login { |
||||
background: #f8f8f8; |
||||
} |
||||
|
||||
.login #header { |
||||
height: auto; |
||||
padding: 5px 16px; |
||||
} |
||||
|
||||
.login #header h1 { |
||||
font-size: 18px; |
||||
} |
||||
|
||||
.login #header h1 a { |
||||
color: #fff; |
||||
} |
||||
|
||||
.login #content { |
||||
padding: 20px 20px 0; |
||||
} |
||||
|
||||
.login #container { |
||||
background: #fff; |
||||
border: 1px solid #eaeaea; |
||||
border-radius: 4px; |
||||
overflow: hidden; |
||||
width: 28em; |
||||
min-width: 300px; |
||||
margin: 100px auto; |
||||
} |
||||
|
||||
.login #content-main { |
||||
width: 100%; |
||||
} |
||||
|
||||
.login .form-row { |
||||
padding: 4px 0; |
||||
float: left; |
||||
width: 100%; |
||||
border-bottom: none; |
||||
} |
||||
|
||||
.login .form-row label { |
||||
padding-right: 0.5em; |
||||
line-height: 2em; |
||||
font-size: 1em; |
||||
clear: both; |
||||
color: #333; |
||||
} |
||||
|
||||
.login .form-row #id_username, .login .form-row #id_password { |
||||
clear: both; |
||||
padding: 8px; |
||||
width: 100%; |
||||
-webkit-box-sizing: border-box; |
||||
-moz-box-sizing: border-box; |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
.login span.help { |
||||
font-size: 10px; |
||||
display: block; |
||||
} |
||||
|
||||
.login .submit-row { |
||||
clear: both; |
||||
padding: 1em 0 0 9.4em; |
||||
margin: 0; |
||||
border: none; |
||||
background: none; |
||||
text-align: left; |
||||
} |
||||
|
||||
.login .password-reset-link { |
||||
text-align: center; |
||||
} |
||||
@ -0,0 +1,256 @@ |
||||
body { |
||||
direction: rtl; |
||||
} |
||||
|
||||
/* LOGIN */ |
||||
|
||||
.login .form-row { |
||||
float: right; |
||||
} |
||||
|
||||
.login .form-row label { |
||||
float: right; |
||||
padding-left: 0.5em; |
||||
padding-right: 0; |
||||
text-align: left; |
||||
} |
||||
|
||||
.login .submit-row { |
||||
clear: both; |
||||
padding: 1em 9.4em 0 0; |
||||
} |
||||
|
||||
/* GLOBAL */ |
||||
|
||||
th { |
||||
text-align: right; |
||||
} |
||||
|
||||
.module h2, .module caption { |
||||
text-align: right; |
||||
} |
||||
|
||||
.module ul, .module ol { |
||||
margin-left: 0; |
||||
margin-right: 1.5em; |
||||
} |
||||
|
||||
.addlink, .changelink { |
||||
padding-left: 0; |
||||
padding-right: 16px; |
||||
background-position: 100% 1px; |
||||
} |
||||
|
||||
.deletelink { |
||||
padding-left: 0; |
||||
padding-right: 16px; |
||||
background-position: 100% 1px; |
||||
} |
||||
|
||||
.object-tools { |
||||
float: left; |
||||
} |
||||
|
||||
thead th:first-child, |
||||
tfoot td:first-child { |
||||
border-left: none; |
||||
} |
||||
|
||||
/* LAYOUT */ |
||||
|
||||
#user-tools { |
||||
right: auto; |
||||
left: 0; |
||||
text-align: left; |
||||
} |
||||
|
||||
div.breadcrumbs { |
||||
text-align: right; |
||||
} |
||||
|
||||
#content-main { |
||||
float: right; |
||||
} |
||||
|
||||
#content-related { |
||||
float: left; |
||||
margin-left: -300px; |
||||
margin-right: auto; |
||||
} |
||||
|
||||
.colMS { |
||||
margin-left: 300px; |
||||
margin-right: 0; |
||||
} |
||||
|
||||
/* SORTABLE TABLES */ |
||||
|
||||
table thead th.sorted .sortoptions { |
||||
float: left; |
||||
} |
||||
|
||||
thead th.sorted .text { |
||||
padding-right: 0; |
||||
padding-left: 42px; |
||||
} |
||||
|
||||
/* dashboard styles */ |
||||
|
||||
.dashboard .module table td a { |
||||
padding-left: .6em; |
||||
padding-right: 16px; |
||||
} |
||||
|
||||
/* changelists styles */ |
||||
|
||||
.change-list .filtered table { |
||||
border-left: none; |
||||
border-right: 0px none; |
||||
} |
||||
|
||||
#changelist-filter { |
||||
right: auto; |
||||
left: 0; |
||||
border-left: none; |
||||
border-right: none; |
||||
} |
||||
|
||||
.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { |
||||
margin-right: 0; |
||||
margin-left: 280px; |
||||
} |
||||
|
||||
#changelist-filter li.selected { |
||||
border-left: none; |
||||
padding-left: 10px; |
||||
margin-left: 0; |
||||
border-right: 5px solid #eaeaea; |
||||
padding-right: 10px; |
||||
margin-right: -15px; |
||||
} |
||||
|
||||
.filtered .actions { |
||||
margin-left: 280px; |
||||
margin-right: 0; |
||||
} |
||||
|
||||
#changelist table tbody td:first-child, #changelist table tbody th:first-child { |
||||
border-right: none; |
||||
border-left: none; |
||||
} |
||||
|
||||
/* FORMS */ |
||||
|
||||
.aligned label { |
||||
padding: 0 0 3px 1em; |
||||
float: right; |
||||
} |
||||
|
||||
.submit-row { |
||||
text-align: left |
||||
} |
||||
|
||||
.submit-row p.deletelink-box { |
||||
float: right; |
||||
} |
||||
|
||||
.submit-row input.default { |
||||
margin-left: 0; |
||||
} |
||||
|
||||
.vDateField, .vTimeField { |
||||
margin-left: 2px; |
||||
} |
||||
|
||||
.aligned .form-row input { |
||||
margin-left: 5px; |
||||
} |
||||
|
||||
form ul.inline li { |
||||
float: right; |
||||
padding-right: 0; |
||||
padding-left: 7px; |
||||
} |
||||
|
||||
input[type=submit].default, .submit-row input.default { |
||||
float: left; |
||||
} |
||||
|
||||
fieldset .field-box { |
||||
float: right; |
||||
margin-left: 20px; |
||||
margin-right: 0; |
||||
} |
||||
|
||||
.errorlist li { |
||||
background-position: 100% 12px; |
||||
padding: 0; |
||||
} |
||||
|
||||
.errornote { |
||||
background-position: 100% 12px; |
||||
padding: 10px 12px; |
||||
} |
||||
|
||||
/* WIDGETS */ |
||||
|
||||
.calendarnav-previous { |
||||
top: 0; |
||||
left: auto; |
||||
right: 10px; |
||||
} |
||||
|
||||
.calendarnav-next { |
||||
top: 0; |
||||
right: auto; |
||||
left: 10px; |
||||
} |
||||
|
||||
.calendar caption, .calendarbox h2 { |
||||
text-align: center; |
||||
} |
||||
|
||||
.selector { |
||||
float: right; |
||||
} |
||||
|
||||
.selector .selector-filter { |
||||
text-align: right; |
||||
} |
||||
|
||||
.inline-deletelink { |
||||
float: left; |
||||
} |
||||
|
||||
form .form-row p.datetime { |
||||
overflow: hidden; |
||||
} |
||||
|
||||
/* MISC */ |
||||
|
||||
.inline-related h2, .inline-group h2 { |
||||
text-align: right |
||||
} |
||||
|
||||
.inline-related h3 span.delete { |
||||
padding-right: 20px; |
||||
padding-left: inherit; |
||||
left: 10px; |
||||
right: inherit; |
||||
float:left; |
||||
} |
||||
|
||||
.inline-related h3 span.delete label { |
||||
margin-left: inherit; |
||||
margin-right: 2px; |
||||
} |
||||
|
||||
/* IE7 specific bug fixes */ |
||||
|
||||
div.colM { |
||||
position: relative; |
||||
} |
||||
|
||||
.submit-row input { |
||||
float: left; |
||||
} |
||||
@ -0,0 +1,565 @@ |
||||
/* SELECTOR (FILTER INTERFACE) */ |
||||
|
||||
.selector { |
||||
width: 800px; |
||||
float: left; |
||||
} |
||||
|
||||
.selector select { |
||||
width: 380px; |
||||
height: 17.2em; |
||||
} |
||||
|
||||
.selector-available, .selector-chosen { |
||||
float: left; |
||||
width: 380px; |
||||
text-align: center; |
||||
margin-bottom: 5px; |
||||
} |
||||
|
||||
.selector-chosen select { |
||||
border-top: none; |
||||
} |
||||
|
||||
.selector-available h2, .selector-chosen h2 { |
||||
border: 1px solid #ccc; |
||||
border-radius: 4px 4px 0 0; |
||||
} |
||||
|
||||
.selector-chosen h2 { |
||||
background: #79aec8; |
||||
color: #fff; |
||||
} |
||||
|
||||
.selector .selector-available h2 { |
||||
background: #f8f8f8; |
||||
color: #666; |
||||
} |
||||
|
||||
.selector .selector-filter { |
||||
background: white; |
||||
border: 1px solid #ccc; |
||||
border-width: 0 1px; |
||||
padding: 8px; |
||||
color: #999; |
||||
font-size: 10px; |
||||
margin: 0; |
||||
text-align: left; |
||||
} |
||||
|
||||
.selector .selector-filter label, |
||||
.inline-group .aligned .selector .selector-filter label { |
||||
float: left; |
||||
margin: 7px 0 0; |
||||
width: 18px; |
||||
height: 18px; |
||||
padding: 0; |
||||
overflow: hidden; |
||||
line-height: 1; |
||||
} |
||||
|
||||
.selector .selector-available input { |
||||
width: 320px; |
||||
margin-left: 8px; |
||||
} |
||||
|
||||
.selector ul.selector-chooser { |
||||
float: left; |
||||
width: 22px; |
||||
background-color: #eee; |
||||
border-radius: 10px; |
||||
margin: 10em 5px 0 5px; |
||||
padding: 0; |
||||
} |
||||
|
||||
.selector-chooser li { |
||||
margin: 0; |
||||
padding: 3px; |
||||
list-style-type: none; |
||||
} |
||||
|
||||
.selector select { |
||||
padding: 0 10px; |
||||
margin: 0 0 10px; |
||||
border-radius: 0 0 4px 4px; |
||||
} |
||||
|
||||
.selector-add, .selector-remove { |
||||
width: 16px; |
||||
height: 16px; |
||||
display: block; |
||||
text-indent: -3000px; |
||||
overflow: hidden; |
||||
cursor: default; |
||||
opacity: 0.3; |
||||
} |
||||
|
||||
.active.selector-add, .active.selector-remove { |
||||
opacity: 1; |
||||
} |
||||
|
||||
.active.selector-add:hover, .active.selector-remove:hover { |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.selector-add { |
||||
background: url(../img/selector-icons.svg) 0 -96px no-repeat; |
||||
} |
||||
|
||||
.active.selector-add:focus, .active.selector-add:hover { |
||||
background-position: 0 -112px; |
||||
} |
||||
|
||||
.selector-remove { |
||||
background: url(../img/selector-icons.svg) 0 -64px no-repeat; |
||||
} |
||||
|
||||
.active.selector-remove:focus, .active.selector-remove:hover { |
||||
background-position: 0 -80px; |
||||
} |
||||
|
||||
a.selector-chooseall, a.selector-clearall { |
||||
display: inline-block; |
||||
height: 16px; |
||||
text-align: left; |
||||
margin: 1px auto 3px; |
||||
overflow: hidden; |
||||
font-weight: bold; |
||||
line-height: 16px; |
||||
color: #666; |
||||
text-decoration: none; |
||||
opacity: 0.3; |
||||
} |
||||
|
||||
a.active.selector-chooseall:focus, a.active.selector-clearall:focus, |
||||
a.active.selector-chooseall:hover, a.active.selector-clearall:hover { |
||||
color: #447e9b; |
||||
} |
||||
|
||||
a.active.selector-chooseall, a.active.selector-clearall { |
||||
opacity: 1; |
||||
} |
||||
|
||||
a.active.selector-chooseall:hover, a.active.selector-clearall:hover { |
||||
cursor: pointer; |
||||
} |
||||
|
||||
a.selector-chooseall { |
||||
padding: 0 18px 0 0; |
||||
background: url(../img/selector-icons.svg) right -160px no-repeat; |
||||
cursor: default; |
||||
} |
||||
|
||||
a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { |
||||
background-position: 100% -176px; |
||||
} |
||||
|
||||
a.selector-clearall { |
||||
padding: 0 0 0 18px; |
||||
background: url(../img/selector-icons.svg) 0 -128px no-repeat; |
||||
cursor: default; |
||||
} |
||||
|
||||
a.active.selector-clearall:focus, a.active.selector-clearall:hover { |
||||
background-position: 0 -144px; |
||||
} |
||||
|
||||
/* STACKED SELECTORS */ |
||||
|
||||
.stacked { |
||||
float: left; |
||||
width: 490px; |
||||
} |
||||
|
||||
.stacked select { |
||||
width: 480px; |
||||
height: 10.1em; |
||||
} |
||||
|
||||
.stacked .selector-available, .stacked .selector-chosen { |
||||
width: 480px; |
||||
} |
||||
|
||||
.stacked .selector-available { |
||||
margin-bottom: 0; |
||||
} |
||||
|
||||
.stacked .selector-available input { |
||||
width: 422px; |
||||
} |
||||
|
||||
.stacked ul.selector-chooser { |
||||
height: 22px; |
||||
width: 50px; |
||||
margin: 0 0 10px 40%; |
||||
background-color: #eee; |
||||
border-radius: 10px; |
||||
} |
||||
|
||||
.stacked .selector-chooser li { |
||||
float: left; |
||||
padding: 3px 3px 3px 5px; |
||||
} |
||||
|
||||
.stacked .selector-chooseall, .stacked .selector-clearall { |
||||
display: none; |
||||
} |
||||
|
||||
.stacked .selector-add { |
||||
background: url(../img/selector-icons.svg) 0 -32px no-repeat; |
||||
cursor: default; |
||||
} |
||||
|
||||
.stacked .active.selector-add { |
||||
background-position: 0 -48px; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.stacked .selector-remove { |
||||
background: url(../img/selector-icons.svg) 0 0 no-repeat; |
||||
cursor: default; |
||||
} |
||||
|
||||
.stacked .active.selector-remove { |
||||
background-position: 0 -16px; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.selector .help-icon { |
||||
background: url(../img/icon-unknown.svg) 0 0 no-repeat; |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
margin: -2px 0 0 2px; |
||||
width: 13px; |
||||
height: 13px; |
||||
} |
||||
|
||||
.selector .selector-chosen .help-icon { |
||||
background: url(../img/icon-unknown-alt.svg) 0 0 no-repeat; |
||||
} |
||||
|
||||
.selector .search-label-icon { |
||||
background: url(../img/search.svg) 0 0 no-repeat; |
||||
display: inline-block; |
||||
height: 18px; |
||||
width: 18px; |
||||
} |
||||
|
||||
/* DATE AND TIME */ |
||||
|
||||
p.datetime { |
||||
line-height: 20px; |
||||
margin: 0; |
||||
padding: 0; |
||||
color: #666; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
.datetime span { |
||||
white-space: nowrap; |
||||
font-weight: normal; |
||||
font-size: 11px; |
||||
color: #ccc; |
||||
} |
||||
|
||||
.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { |
||||
min-width: 0; |
||||
margin-left: 5px; |
||||
margin-bottom: 4px; |
||||
} |
||||
|
||||
table p.datetime { |
||||
font-size: 11px; |
||||
margin-left: 0; |
||||
padding-left: 0; |
||||
} |
||||
|
||||
.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon { |
||||
position: relative; |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
height: 16px; |
||||
width: 16px; |
||||
overflow: hidden; |
||||
} |
||||
|
||||
.datetimeshortcuts .clock-icon { |
||||
background: url(../img/icon-clock.svg) 0 0 no-repeat; |
||||
} |
||||
|
||||
.datetimeshortcuts a:focus .clock-icon, |
||||
.datetimeshortcuts a:hover .clock-icon { |
||||
background-position: 0 -16px; |
||||
} |
||||
|
||||
.datetimeshortcuts .date-icon { |
||||
background: url(../img/icon-calendar.svg) 0 0 no-repeat; |
||||
top: -1px; |
||||
} |
||||
|
||||
.datetimeshortcuts a:focus .date-icon, |
||||
.datetimeshortcuts a:hover .date-icon { |
||||
background-position: 0 -16px; |
||||
} |
||||
|
||||
.timezonewarning { |
||||
font-size: 11px; |
||||
color: #999; |
||||
} |
||||
|
||||
/* URL */ |
||||
|
||||
p.url { |
||||
line-height: 20px; |
||||
margin: 0; |
||||
padding: 0; |
||||
color: #666; |
||||
font-size: 11px; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
.url a { |
||||
font-weight: normal; |
||||
} |
||||
|
||||
/* FILE UPLOADS */ |
||||
|
||||
p.file-upload { |
||||
line-height: 20px; |
||||
margin: 0; |
||||
padding: 0; |
||||
color: #666; |
||||
font-size: 11px; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
.aligned p.file-upload { |
||||
margin-left: 170px; |
||||
} |
||||
|
||||
.file-upload a { |
||||
font-weight: normal; |
||||
} |
||||
|
||||
.file-upload .deletelink { |
||||
margin-left: 5px; |
||||
} |
||||
|
||||
span.clearable-file-input label { |
||||
color: #333; |
||||
font-size: 11px; |
||||
display: inline; |
||||
float: none; |
||||
} |
||||
|
||||
/* CALENDARS & CLOCKS */ |
||||
|
||||
.calendarbox, .clockbox { |
||||
margin: 5px auto; |
||||
font-size: 12px; |
||||
width: 19em; |
||||
text-align: center; |
||||
background: white; |
||||
border: 1px solid #ddd; |
||||
border-radius: 4px; |
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); |
||||
overflow: hidden; |
||||
position: relative; |
||||
} |
||||
|
||||
.clockbox { |
||||
width: auto; |
||||
} |
||||
|
||||
.calendar { |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
.calendar table { |
||||
margin: 0; |
||||
padding: 0; |
||||
border-collapse: collapse; |
||||
background: white; |
||||
width: 100%; |
||||
} |
||||
|
||||
.calendar caption, .calendarbox h2 { |
||||
margin: 0; |
||||
text-align: center; |
||||
border-top: none; |
||||
background: #f5dd5d; |
||||
font-weight: 700; |
||||
font-size: 12px; |
||||
color: #333; |
||||
} |
||||
|
||||
.calendar th { |
||||
padding: 8px 5px; |
||||
background: #f8f8f8; |
||||
border-bottom: 1px solid #ddd; |
||||
font-weight: 400; |
||||
font-size: 12px; |
||||
text-align: center; |
||||
color: #666; |
||||
} |
||||
|
||||
.calendar td { |
||||
font-weight: 400; |
||||
font-size: 12px; |
||||
text-align: center; |
||||
padding: 0; |
||||
border-top: 1px solid #eee; |
||||
border-bottom: none; |
||||
} |
||||
|
||||
.calendar td.selected a { |
||||
background: #79aec8; |
||||
color: #fff; |
||||
} |
||||
|
||||
.calendar td.nonday { |
||||
background: #f8f8f8; |
||||
} |
||||
|
||||
.calendar td.today a { |
||||
font-weight: 700; |
||||
} |
||||
|
||||
.calendar td a, .timelist a { |
||||
display: block; |
||||
font-weight: 400; |
||||
padding: 6px; |
||||
text-decoration: none; |
||||
color: #444; |
||||
} |
||||
|
||||
.calendar td a:focus, .timelist a:focus, |
||||
.calendar td a:hover, .timelist a:hover { |
||||
background: #79aec8; |
||||
color: white; |
||||
} |
||||
|
||||
.calendar td a:active, .timelist a:active { |
||||
background: #417690; |
||||
color: white; |
||||
} |
||||
|
||||
.calendarnav { |
||||
font-size: 10px; |
||||
text-align: center; |
||||
color: #ccc; |
||||
margin: 0; |
||||
padding: 1px 3px; |
||||
} |
||||
|
||||
.calendarnav a:link, #calendarnav a:visited, |
||||
#calendarnav a:focus, #calendarnav a:hover { |
||||
color: #999; |
||||
} |
||||
|
||||
.calendar-shortcuts { |
||||
background: white; |
||||
font-size: 11px; |
||||
line-height: 11px; |
||||
border-top: 1px solid #eee; |
||||
padding: 8px 0; |
||||
color: #ccc; |
||||
} |
||||
|
||||
.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { |
||||
display: block; |
||||
position: absolute; |
||||
top: 8px; |
||||
width: 15px; |
||||
height: 15px; |
||||
text-indent: -9999px; |
||||
padding: 0; |
||||
} |
||||
|
||||
.calendarnav-previous { |
||||
left: 10px; |
||||
background: url(../img/calendar-icons.svg) 0 0 no-repeat; |
||||
} |
||||
|
||||
.calendarbox .calendarnav-previous:focus, |
||||
.calendarbox .calendarnav-previous:hover { |
||||
background-position: 0 -15px; |
||||
} |
||||
|
||||
.calendarnav-next { |
||||
right: 10px; |
||||
background: url(../img/calendar-icons.svg) 0 -30px no-repeat; |
||||
} |
||||
|
||||
.calendarbox .calendarnav-next:focus, |
||||
.calendarbox .calendarnav-next:hover { |
||||
background-position: 0 -45px; |
||||
} |
||||
|
||||
.calendar-cancel { |
||||
margin: 0; |
||||
padding: 4px 0; |
||||
font-size: 12px; |
||||
background: #eee; |
||||
border-top: 1px solid #ddd; |
||||
color: #333; |
||||
} |
||||
|
||||
.calendar-cancel:focus, .calendar-cancel:hover { |
||||
background: #ddd; |
||||
} |
||||
|
||||
.calendar-cancel a { |
||||
color: black; |
||||
display: block; |
||||
} |
||||
|
||||
ul.timelist, .timelist li { |
||||
list-style-type: none; |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
.timelist a { |
||||
padding: 2px; |
||||
} |
||||
|
||||
/* EDIT INLINE */ |
||||
|
||||
.inline-deletelink { |
||||
float: right; |
||||
text-indent: -9999px; |
||||
background: url(../img/inline-delete.svg) 0 0 no-repeat; |
||||
width: 16px; |
||||
height: 16px; |
||||
border: 0px none; |
||||
} |
||||
|
||||
.inline-deletelink:focus, .inline-deletelink:hover { |
||||
cursor: pointer; |
||||
} |
||||
|
||||
/* RELATED WIDGET WRAPPER */ |
||||
.related-widget-wrapper { |
||||
float: left; /* display properly in form rows with multiple fields */ |
||||
overflow: hidden; /* clear floated contents */ |
||||
} |
||||
|
||||
.related-widget-wrapper-link { |
||||
opacity: 0.3; |
||||
} |
||||
|
||||
.related-widget-wrapper-link:link { |
||||
opacity: .8; |
||||
} |
||||
|
||||
.related-widget-wrapper-link:link:focus, |
||||
.related-widget-wrapper-link:link:hover { |
||||
opacity: 1; |
||||
} |
||||
|
||||
select + .related-widget-wrapper-link, |
||||
.related-widget-wrapper-link + .related-widget-wrapper-link { |
||||
margin-left: 7px; |
||||
} |
||||
@ -0,0 +1,202 @@ |
||||
|
||||
Apache License |
||||
Version 2.0, January 2004 |
||||
http://www.apache.org/licenses/ |
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
||||
|
||||
1. Definitions. |
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, |
||||
and distribution as defined by Sections 1 through 9 of this document. |
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by |
||||
the copyright owner that is granting the License. |
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all |
||||
other entities that control, are controlled by, or are under common |
||||
control with that entity. For the purposes of this definition, |
||||
"control" means (i) the power, direct or indirect, to cause the |
||||
direction or management of such entity, whether by contract or |
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the |
||||
outstanding shares, or (iii) beneficial ownership of such entity. |
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity |
||||
exercising permissions granted by this License. |
||||
|
||||
"Source" form shall mean the preferred form for making modifications, |
||||
including but not limited to software source code, documentation |
||||
source, and configuration files. |
||||
|
||||
"Object" form shall mean any form resulting from mechanical |
||||
transformation or translation of a Source form, including but |
||||
not limited to compiled object code, generated documentation, |
||||
and conversions to other media types. |
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or |
||||
Object form, made available under the License, as indicated by a |
||||
copyright notice that is included in or attached to the work |
||||
(an example is provided in the Appendix below). |
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object |
||||
form, that is based on (or derived from) the Work and for which the |
||||
editorial revisions, annotations, elaborations, or other modifications |
||||
represent, as a whole, an original work of authorship. For the purposes |
||||
of this License, Derivative Works shall not include works that remain |
||||
separable from, or merely link (or bind by name) to the interfaces of, |
||||
the Work and Derivative Works thereof. |
||||
|
||||
"Contribution" shall mean any work of authorship, including |
||||
the original version of the Work and any modifications or additions |
||||
to that Work or Derivative Works thereof, that is intentionally |
||||
submitted to Licensor for inclusion in the Work by the copyright owner |
||||
or by an individual or Legal Entity authorized to submit on behalf of |
||||
the copyright owner. For the purposes of this definition, "submitted" |
||||
means any form of electronic, verbal, or written communication sent |
||||
to the Licensor or its representatives, including but not limited to |
||||
communication on electronic mailing lists, source code control systems, |
||||
and issue tracking systems that are managed by, or on behalf of, the |
||||
Licensor for the purpose of discussing and improving the Work, but |
||||
excluding communication that is conspicuously marked or otherwise |
||||
designated in writing by the copyright owner as "Not a Contribution." |
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity |
||||
on behalf of whom a Contribution has been received by Licensor and |
||||
subsequently incorporated within the Work. |
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of |
||||
this License, each Contributor hereby grants to You a perpetual, |
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
||||
copyright license to reproduce, prepare Derivative Works of, |
||||
publicly display, publicly perform, sublicense, and distribute the |
||||
Work and such Derivative Works in Source or Object form. |
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of |
||||
this License, each Contributor hereby grants to You a perpetual, |
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
||||
(except as stated in this section) patent license to make, have made, |
||||
use, offer to sell, sell, import, and otherwise transfer the Work, |
||||
where such license applies only to those patent claims licensable |
||||
by such Contributor that are necessarily infringed by their |
||||
Contribution(s) alone or by combination of their Contribution(s) |
||||
with the Work to which such Contribution(s) was submitted. If You |
||||
institute patent litigation against any entity (including a |
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work |
||||
or a Contribution incorporated within the Work constitutes direct |
||||
or contributory patent infringement, then any patent licenses |
||||
granted to You under this License for that Work shall terminate |
||||
as of the date such litigation is filed. |
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the |
||||
Work or Derivative Works thereof in any medium, with or without |
||||
modifications, and in Source or Object form, provided that You |
||||
meet the following conditions: |
||||
|
||||
(a) You must give any other recipients of the Work or |
||||
Derivative Works a copy of this License; and |
||||
|
||||
(b) You must cause any modified files to carry prominent notices |
||||
stating that You changed the files; and |
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works |
||||
that You distribute, all copyright, patent, trademark, and |
||||
attribution notices from the Source form of the Work, |
||||
excluding those notices that do not pertain to any part of |
||||
the Derivative Works; and |
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its |
||||
distribution, then any Derivative Works that You distribute must |
||||
include a readable copy of the attribution notices contained |
||||
within such NOTICE file, excluding those notices that do not |
||||
pertain to any part of the Derivative Works, in at least one |
||||
of the following places: within a NOTICE text file distributed |
||||
as part of the Derivative Works; within the Source form or |
||||
documentation, if provided along with the Derivative Works; or, |
||||
within a display generated by the Derivative Works, if and |
||||
wherever such third-party notices normally appear. The contents |
||||
of the NOTICE file are for informational purposes only and |
||||
do not modify the License. You may add Your own attribution |
||||
notices within Derivative Works that You distribute, alongside |
||||
or as an addendum to the NOTICE text from the Work, provided |
||||
that such additional attribution notices cannot be construed |
||||
as modifying the License. |
||||
|
||||
You may add Your own copyright statement to Your modifications and |
||||
may provide additional or different license terms and conditions |
||||
for use, reproduction, or distribution of Your modifications, or |
||||
for any such Derivative Works as a whole, provided Your use, |
||||
reproduction, and distribution of the Work otherwise complies with |
||||
the conditions stated in this License. |
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise, |
||||
any Contribution intentionally submitted for inclusion in the Work |
||||
by You to the Licensor shall be under the terms and conditions of |
||||
this License, without any additional terms or conditions. |
||||
Notwithstanding the above, nothing herein shall supersede or modify |
||||
the terms of any separate license agreement you may have executed |
||||
with Licensor regarding such Contributions. |
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade |
||||
names, trademarks, service marks, or product names of the Licensor, |
||||
except as required for reasonable and customary use in describing the |
||||
origin of the Work and reproducing the content of the NOTICE file. |
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or |
||||
agreed to in writing, Licensor provides the Work (and each |
||||
Contributor provides its Contributions) on an "AS IS" BASIS, |
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
||||
implied, including, without limitation, any warranties or conditions |
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
||||
PARTICULAR PURPOSE. You are solely responsible for determining the |
||||
appropriateness of using or redistributing the Work and assume any |
||||
risks associated with Your exercise of permissions under this License. |
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, |
||||
whether in tort (including negligence), contract, or otherwise, |
||||
unless required by applicable law (such as deliberate and grossly |
||||
negligent acts) or agreed to in writing, shall any Contributor be |
||||
liable to You for damages, including any direct, indirect, special, |
||||
incidental, or consequential damages of any character arising as a |
||||
result of this License or out of the use or inability to use the |
||||
Work (including but not limited to damages for loss of goodwill, |
||||
work stoppage, computer failure or malfunction, or any and all |
||||
other commercial damages or losses), even if such Contributor |
||||
has been advised of the possibility of such damages. |
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing |
||||
the Work or Derivative Works thereof, You may choose to offer, |
||||
and charge a fee for, acceptance of support, warranty, indemnity, |
||||
or other liability obligations and/or rights consistent with this |
||||
License. However, in accepting such obligations, You may act only |
||||
on Your own behalf and on Your sole responsibility, not on behalf |
||||
of any other Contributor, and only if You agree to indemnify, |
||||
defend, and hold each Contributor harmless for any liability |
||||
incurred by, or claims asserted against, such Contributor by reason |
||||
of your accepting any such warranty or additional liability. |
||||
|
||||
END OF TERMS AND CONDITIONS |
||||
|
||||
APPENDIX: How to apply the Apache License to your work. |
||||
|
||||
To apply the Apache License to your work, attach the following |
||||
boilerplate notice, with the fields enclosed by brackets "[]" |
||||
replaced with your own identifying information. (Don't include |
||||
the brackets!) The text should be enclosed in the appropriate |
||||
comment syntax for the file format. We also recommend that a |
||||
file or class name and description of purpose be included on the |
||||
same "printed page" as the copyright notice for easier |
||||
identification within third-party archives. |
||||
|
||||
Copyright [yyyy] [name of copyright owner] |
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); |
||||
you may not use this file except in compliance with the License. |
||||
You may obtain a copy of the License at |
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0 |
||||
|
||||
Unless required by applicable law or agreed to in writing, software |
||||
distributed under the License is distributed on an "AS IS" BASIS, |
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
See the License for the specific language governing permissions and |
||||
limitations under the License. |
||||
@ -0,0 +1,2 @@ |
||||
Roboto webfont source: https://www.google.com/fonts/specimen/Roboto |
||||
Weights used in this project: Light (300), Regular (400), Bold (700) |
||||
@ -0,0 +1,20 @@ |
||||
The MIT License (MIT) |
||||
|
||||
Copyright (c) 2014 Code Charm Ltd |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of |
||||
this software and associated documentation files (the "Software"), to deal in |
||||
the Software without restriction, including without limitation the rights to |
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of |
||||
the Software, and to permit persons to whom the Software is furnished to do so, |
||||
subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in all |
||||
copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS |
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
@ -0,0 +1,7 @@ |
||||
All icons are taken from Font Awesome (http://fontawesome.io/) project. |
||||
The Font Awesome font is licensed under the SIL OFL 1.1: |
||||
- http://scripts.sil.org/OFL |
||||
|
||||
SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG |
||||
Font-Awesome-SVG-PNG is licensed under the MIT license (see file license |
||||
in current folder). |
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 331 B |
|
After Width: | Height: | Size: 504 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 380 B |
|
After Width: | Height: | Size: 677 B |
|
After Width: | Height: | Size: 392 B |
|
After Width: | Height: | Size: 560 B |
|
After Width: | Height: | Size: 655 B |
|
After Width: | Height: | Size: 655 B |
|
After Width: | Height: | Size: 436 B |
|
After Width: | Height: | Size: 560 B |
|
After Width: | Height: | Size: 458 B |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 331 B |
|
After Width: | Height: | Size: 280 B |
@ -0,0 +1,135 @@ |
||||
(function() { |
||||
'use strict'; |
||||
var SelectBox = { |
||||
cache: {}, |
||||
init: function(id) { |
||||
var box = document.getElementById(id); |
||||
var node; |
||||
SelectBox.cache[id] = []; |
||||
var cache = SelectBox.cache[id]; |
||||
for (var i = 0, j = box.options.length; i < j; i++) { |
||||
node = box.options[i]; |
||||
cache.push({value: node.value, text: node.text, displayed: 1}); |
||||
} |
||||
}, |
||||
redisplay: function(id) { |
||||
// Repopulate HTML select box from cache
|
||||
var box = document.getElementById(id); |
||||
var node; |
||||
box.options.length = 0; // clear all options
|
||||
var cache = SelectBox.cache[id]; |
||||
for (var i = 0, j = cache.length; i < j; i++) { |
||||
node = cache[i]; |
||||
if (node.displayed) { |
||||
var new_option = new Option(node.text, node.value, false, false); |
||||
// Shows a tooltip when hovering over the option
|
||||
new_option.setAttribute("title", node.text); |
||||
box.options[box.options.length] = new_option; |
||||
} |
||||
} |
||||
}, |
||||
filter: function(id, text) { |
||||
// Redisplay the HTML select box, displaying only the choices containing ALL
|
||||
// the words in text. (It's an AND search.)
|
||||
var tokens = text.toLowerCase().split(/\s+/); |
||||
var node, token; |
||||
var cache = SelectBox.cache[id]; |
||||
for (var i = 0, j = cache.length; i < j; i++) { |
||||
node = cache[i]; |
||||
node.displayed = 1; |
||||
var numTokens = tokens.length; |
||||
for (var k = 0; k < numTokens; k++) { |
||||
token = tokens[k]; |
||||
if (node.text.toLowerCase().indexOf(token) === -1) { |
||||
node.displayed = 0; |
||||
} |
||||
} |
||||
} |
||||
SelectBox.redisplay(id); |
||||
}, |
||||
delete_from_cache: function(id, value) { |
||||
var node, delete_index = null; |
||||
var cache = SelectBox.cache[id]; |
||||
for (var i = 0, j = cache.length; i < j; i++) { |
||||
node = cache[i]; |
||||
if (node.value === value) { |
||||
delete_index = i; |
||||
break; |
||||
} |
||||
} |
||||
var k = cache.length - 1; |
||||
for (i = delete_index; i < k; i++) { |
||||
cache[i] = cache[i + 1]; |
||||
} |
||||
cache.length--; |
||||
}, |
||||
add_to_cache: function(id, option) { |
||||
SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); |
||||
}, |
||||
cache_contains: function(id, value) { |
||||
// Check if an item is contained in the cache
|
||||
var node; |
||||
var cache = SelectBox.cache[id]; |
||||
for (var i = 0, j = cache.length; i < j; i++) { |
||||
node = cache[i]; |
||||
if (node.value === value) { |
||||
return true; |
||||
} |
||||
} |
||||
return false; |
||||
}, |
||||
move: function(from, to) { |
||||
var from_box = document.getElementById(from); |
||||
var option; |
||||
var boxOptions = from_box.options; |
||||
for (var i = 0, j = boxOptions.length; i < j; i++) { |
||||
option = boxOptions[i]; |
||||
if (option.selected && SelectBox.cache_contains(from, option.value)) { |
||||
SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1}); |
||||
SelectBox.delete_from_cache(from, option.value); |
||||
} |
||||
} |
||||
SelectBox.redisplay(from); |
||||
SelectBox.redisplay(to); |
||||
}, |
||||
move_all: function(from, to) { |
||||
var from_box = document.getElementById(from); |
||||
var option; |
||||
var boxOptions = from_box.options; |
||||
for (var i = 0, j = boxOptions.length; i < j; i++) { |
||||
option = boxOptions[i]; |
||||
if (SelectBox.cache_contains(from, option.value)) { |
||||
SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1}); |
||||
SelectBox.delete_from_cache(from, option.value); |
||||
} |
||||
} |
||||
SelectBox.redisplay(from); |
||||
SelectBox.redisplay(to); |
||||
}, |
||||
sort: function(id) { |
||||
SelectBox.cache[id].sort(function(a, b) { |
||||
a = a.text.toLowerCase(); |
||||
b = b.text.toLowerCase(); |
||||
try { |
||||
if (a > b) { |
||||
return 1; |
||||
} |
||||
if (a < b) { |
||||
return -1; |
||||
} |
||||
} |
||||
catch (e) { |
||||
// silently fail on IE 'unknown' exception
|
||||
} |
||||
return 0; |
||||
} ); |
||||
}, |
||||
select_all: function(id) { |
||||
var box = document.getElementById(id); |
||||
for (var i = 0; i < box.options.length; i++) { |
||||
box.options[i].selected = 'selected'; |
||||
} |
||||
} |
||||
}; |
||||
window.SelectBox = SelectBox; |
||||
})(); |
||||
@ -0,0 +1,198 @@ |
||||
/*global SelectBox, addEvent, gettext, interpolate, quickElement, SelectFilter*/ |
||||
/* |
||||
SelectFilter2 - Turns a multiple-select box into a filter interface. |
||||
|
||||
Requires core.js, SelectBox.js and addevent.js. |
||||
*/ |
||||
(function($) { |
||||
'use strict'; |
||||
function findForm(node) { |
||||
// returns the node of the form containing the given node
|
||||
if (node.tagName.toLowerCase() !== 'form') { |
||||
return findForm(node.parentNode); |
||||
} |
||||
return node; |
||||
} |
||||
|
||||
window.SelectFilter = { |
||||
init: function(field_id, field_name, is_stacked) { |
||||
if (field_id.match(/__prefix__/)) { |
||||
// Don't initialize on empty forms.
|
||||
return; |
||||
} |
||||
var from_box = document.getElementById(field_id); |
||||
from_box.id += '_from'; // change its ID
|
||||
from_box.className = 'filtered'; |
||||
|
||||
var ps = from_box.parentNode.getElementsByTagName('p'); |
||||
for (var i = 0; i < ps.length; i++) { |
||||
if (ps[i].className.indexOf("info") !== -1) { |
||||
// Remove <p class="info">, because it just gets in the way.
|
||||
from_box.parentNode.removeChild(ps[i]); |
||||
} else if (ps[i].className.indexOf("help") !== -1) { |
||||
// Move help text up to the top so it isn't below the select
|
||||
// boxes or wrapped off on the side to the right of the add
|
||||
// button:
|
||||
from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild); |
||||
} |
||||
} |
||||
|
||||
// <div class="selector"> or <div class="selector stacked">
|
||||
var selector_div = quickElement('div', from_box.parentNode); |
||||
selector_div.className = is_stacked ? 'selector stacked' : 'selector'; |
||||
|
||||
// <div class="selector-available">
|
||||
var selector_available = quickElement('div', selector_div); |
||||
selector_available.className = 'selector-available'; |
||||
var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name])); |
||||
quickElement( |
||||
'span', title_available, '', |
||||
'class', 'help help-tooltip help-icon', |
||||
'title', interpolate( |
||||
gettext( |
||||
'This is the list of available %s. You may choose some by ' + |
||||
'selecting them in the box below and then clicking the ' + |
||||
'"Choose" arrow between the two boxes.' |
||||
), |
||||
[field_name] |
||||
) |
||||
); |
||||
|
||||
var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter'); |
||||
filter_p.className = 'selector-filter'; |
||||
|
||||
var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input'); |
||||
|
||||
quickElement( |
||||
'span', search_filter_label, '', |
||||
'class', 'help-tooltip search-label-icon', |
||||
'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]) |
||||
); |
||||
|
||||
filter_p.appendChild(document.createTextNode(' ')); |
||||
|
||||
var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter")); |
||||
filter_input.id = field_id + '_input'; |
||||
|
||||
selector_available.appendChild(from_box); |
||||
var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', 'javascript:void(0);', 'id', field_id + '_add_all_link'); |
||||
choose_all.className = 'selector-chooseall'; |
||||
|
||||
// <ul class="selector-chooser">
|
||||
var selector_chooser = quickElement('ul', selector_div); |
||||
selector_chooser.className = 'selector-chooser'; |
||||
var add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', 'javascript:void(0);', 'id', field_id + '_add_link'); |
||||
add_link.className = 'selector-add'; |
||||
var remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', 'javascript:void(0);', 'id', field_id + '_remove_link'); |
||||
remove_link.className = 'selector-remove'; |
||||
|
||||
// <div class="selector-chosen">
|
||||
var selector_chosen = quickElement('div', selector_div); |
||||
selector_chosen.className = 'selector-chosen'; |
||||
var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name])); |
||||
quickElement( |
||||
'span', title_chosen, '', |
||||
'class', 'help help-tooltip help-icon', |
||||
'title', interpolate( |
||||
gettext( |
||||
'This is the list of chosen %s. You may remove some by ' + |
||||
'selecting them in the box below and then clicking the ' + |
||||
'"Remove" arrow between the two boxes.' |
||||
), |
||||
[field_name] |
||||
) |
||||
); |
||||
|
||||
var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name')); |
||||
to_box.className = 'filtered'; |
||||
var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', 'javascript:void(0);', 'id', field_id + '_remove_all_link'); |
||||
clear_all.className = 'selector-clearall'; |
||||
|
||||
from_box.setAttribute('name', from_box.getAttribute('name') + '_old'); |
||||
|
||||
// Set up the JavaScript event handlers for the select box filter interface
|
||||
addEvent(choose_all, 'click', function() { SelectBox.move_all(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); }); |
||||
addEvent(add_link, 'click', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); }); |
||||
addEvent(remove_link, 'click', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); }); |
||||
addEvent(clear_all, 'click', function() { SelectBox.move_all(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); }); |
||||
addEvent(filter_input, 'keypress', function(e) { SelectFilter.filter_key_press(e, field_id); }); |
||||
addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); }); |
||||
addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); }); |
||||
addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id); }); |
||||
addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id); }); |
||||
addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); }); |
||||
addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); }); |
||||
addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); }); |
||||
SelectBox.init(field_id + '_from'); |
||||
SelectBox.init(field_id + '_to'); |
||||
// Move selected from_box options to to_box
|
||||
SelectBox.move(field_id + '_from', field_id + '_to'); |
||||
|
||||
if (!is_stacked) { |
||||
// In horizontal mode, give the same height to the two boxes.
|
||||
var j_from_box = $(from_box); |
||||
var j_to_box = $(to_box); |
||||
var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); }; |
||||
if (j_from_box.outerHeight() > 0) { |
||||
resize_filters(); // This fieldset is already open. Resize now.
|
||||
} else { |
||||
// This fieldset is probably collapsed. Wait for its 'show' event.
|
||||
j_to_box.closest('fieldset').one('show.fieldset', resize_filters); |
||||
} |
||||
} |
||||
|
||||
// Initial icon refresh
|
||||
SelectFilter.refresh_icons(field_id); |
||||
}, |
||||
refresh_icons: function(field_id) { |
||||
var from = $('#' + field_id + '_from'); |
||||
var to = $('#' + field_id + '_to'); |
||||
var is_from_selected = from.find('option:selected').length > 0; |
||||
var is_to_selected = to.find('option:selected').length > 0; |
||||
// Active if at least one item is selected
|
||||
$('#' + field_id + '_add_link').toggleClass('active', is_from_selected); |
||||
$('#' + field_id + '_remove_link').toggleClass('active', is_to_selected); |
||||
// Active if the corresponding box isn't empty
|
||||
$('#' + field_id + '_add_all_link').toggleClass('active', from.find('option').length > 0); |
||||
$('#' + field_id + '_remove_all_link').toggleClass('active', to.find('option').length > 0); |
||||
}, |
||||
filter_key_press: function(event, field_id) { |
||||
var from = document.getElementById(field_id + '_from'); |
||||
// don't submit form if user pressed Enter
|
||||
if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) { |
||||
from.selectedIndex = 0; |
||||
SelectBox.move(field_id + '_from', field_id + '_to'); |
||||
from.selectedIndex = 0; |
||||
event.preventDefault(); |
||||
return false; |
||||
} |
||||
}, |
||||
filter_key_up: function(event, field_id) { |
||||
var from = document.getElementById(field_id + '_from'); |
||||
var temp = from.selectedIndex; |
||||
SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value); |
||||
from.selectedIndex = temp; |
||||
return true; |
||||
}, |
||||
filter_key_down: function(event, field_id) { |
||||
var from = document.getElementById(field_id + '_from'); |
||||
// right arrow -- move across
|
||||
if ((event.which && event.which === 39) || (event.keyCode && event.keyCode === 39)) { |
||||
var old_index = from.selectedIndex; |
||||
SelectBox.move(field_id + '_from', field_id + '_to'); |
||||
from.selectedIndex = (old_index === from.length) ? from.length - 1 : old_index; |
||||
return false; |
||||
} |
||||
// down arrow -- wrap around
|
||||
if ((event.which && event.which === 40) || (event.keyCode && event.keyCode === 40)) { |
||||
from.selectedIndex = (from.length === from.selectedIndex + 1) ? 0 : from.selectedIndex + 1; |
||||
} |
||||
// up arrow -- wrap around
|
||||
if ((event.which && event.which === 38) || (event.keyCode && event.keyCode === 38)) { |
||||
from.selectedIndex = (from.selectedIndex === 0) ? from.length - 1 : from.selectedIndex - 1; |
||||
} |
||||
return true; |
||||
} |
||||
}; |
||||
|
||||
})(django.jQuery); |
||||
@ -0,0 +1,146 @@ |
||||
/*global _actions_icnt, gettext, interpolate, ngettext*/ |
||||
(function($) { |
||||
'use strict'; |
||||
var lastChecked; |
||||
|
||||
$.fn.actions = function(opts) { |
||||
var options = $.extend({}, $.fn.actions.defaults, opts); |
||||
var actionCheckboxes = $(this); |
||||
var list_editable_changed = false; |
||||
var showQuestion = function() { |
||||
$(options.acrossClears).hide(); |
||||
$(options.acrossQuestions).show(); |
||||
$(options.allContainer).hide(); |
||||
}, |
||||
showClear = function() { |
||||
$(options.acrossClears).show(); |
||||
$(options.acrossQuestions).hide(); |
||||
$(options.actionContainer).toggleClass(options.selectedClass); |
||||
$(options.allContainer).show(); |
||||
$(options.counterContainer).hide(); |
||||
}, |
||||
reset = function() { |
||||
$(options.acrossClears).hide(); |
||||
$(options.acrossQuestions).hide(); |
||||
$(options.allContainer).hide(); |
||||
$(options.counterContainer).show(); |
||||
}, |
||||
clearAcross = function() { |
||||
reset(); |
||||
$(options.acrossInput).val(0); |
||||
$(options.actionContainer).removeClass(options.selectedClass); |
||||
}, |
||||
checker = function(checked) { |
||||
if (checked) { |
||||
showQuestion(); |
||||
} else { |
||||
reset(); |
||||
} |
||||
$(actionCheckboxes).prop("checked", checked) |
||||
.parent().parent().toggleClass(options.selectedClass, checked); |
||||
}, |
||||
updateCounter = function() { |
||||
var sel = $(actionCheckboxes).filter(":checked").length; |
||||
// _actions_icnt is defined in the generated HTML
|
||||
// and contains the total amount of objects in the queryset
|
||||
$(options.counterContainer).html(interpolate( |
||||
ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { |
||||
sel: sel, |
||||
cnt: _actions_icnt |
||||
}, true)); |
||||
$(options.allToggle).prop("checked", function() { |
||||
var value; |
||||
if (sel === actionCheckboxes.length) { |
||||
value = true; |
||||
showQuestion(); |
||||
} else { |
||||
value = false; |
||||
clearAcross(); |
||||
} |
||||
return value; |
||||
}); |
||||
}; |
||||
// Show counter by default
|
||||
$(options.counterContainer).show(); |
||||
// Check state of checkboxes and reinit state if needed
|
||||
$(this).filter(":checked").each(function(i) { |
||||
$(this).parent().parent().toggleClass(options.selectedClass); |
||||
updateCounter(); |
||||
if ($(options.acrossInput).val() === 1) { |
||||
showClear(); |
||||
} |
||||
}); |
||||
$(options.allToggle).show().click(function() { |
||||
checker($(this).prop("checked")); |
||||
updateCounter(); |
||||
}); |
||||
$("a", options.acrossQuestions).click(function(event) { |
||||
event.preventDefault(); |
||||
$(options.acrossInput).val(1); |
||||
showClear(); |
||||
}); |
||||
$("a", options.acrossClears).click(function(event) { |
||||
event.preventDefault(); |
||||
$(options.allToggle).prop("checked", false); |
||||
clearAcross(); |
||||
checker(0); |
||||
updateCounter(); |
||||
}); |
||||
lastChecked = null; |
||||
$(actionCheckboxes).click(function(event) { |
||||
if (!event) { event = window.event; } |
||||
var target = event.target ? event.target : event.srcElement; |
||||
if (lastChecked && $.data(lastChecked) !== $.data(target) && event.shiftKey === true) { |
||||
var inrange = false; |
||||
$(lastChecked).prop("checked", target.checked) |
||||
.parent().parent().toggleClass(options.selectedClass, target.checked); |
||||
$(actionCheckboxes).each(function() { |
||||
if ($.data(this) === $.data(lastChecked) || $.data(this) === $.data(target)) { |
||||
inrange = (inrange) ? false : true; |
||||
} |
||||
if (inrange) { |
||||
$(this).prop("checked", target.checked) |
||||
.parent().parent().toggleClass(options.selectedClass, target.checked); |
||||
} |
||||
}); |
||||
} |
||||
$(target).parent().parent().toggleClass(options.selectedClass, target.checked); |
||||
lastChecked = target; |
||||
updateCounter(); |
||||
}); |
||||
$('form#changelist-form table#result_list tr').find('td:gt(0) :input').change(function() { |
||||
list_editable_changed = true; |
||||
}); |
||||
$('form#changelist-form button[name="index"]').click(function(event) { |
||||
if (list_editable_changed) { |
||||
return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.")); |
||||
} |
||||
}); |
||||
$('form#changelist-form input[name="_save"]').click(function(event) { |
||||
var action_changed = false; |
||||
$('select option:selected', options.actionContainer).each(function() { |
||||
if ($(this).val()) { |
||||
action_changed = true; |
||||
} |
||||
}); |
||||
if (action_changed) { |
||||
if (list_editable_changed) { |
||||
return confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")); |
||||
} else { |
||||
return confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button.")); |
||||
} |
||||
} |
||||
}); |
||||
}; |
||||
/* Setup plugin defaults */ |
||||
$.fn.actions.defaults = { |
||||
actionContainer: "div.actions", |
||||
counterContainer: "span.action-counter", |
||||
allContainer: "div.actions span.all", |
||||
acrossInput: "div.actions input.select-across", |
||||
acrossQuestions: "div.actions span.question", |
||||
acrossClears: "div.actions span.clear", |
||||
allToggle: "#action-toggle", |
||||
selectedClass: "selected" |
||||
}; |
||||
})(django.jQuery); |
||||
@ -0,0 +1,6 @@ |
||||
(function(a){var f;a.fn.actions=function(q){var b=a.extend({},a.fn.actions.defaults,q),g=a(this),e=!1,k=function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()},l=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},m=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},n=function(){m(); |
||||
a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)},p=function(c){c?k():m();a(g).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},h=function(){var c=a(g).filter(":checked").length;a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:_actions_icnt},!0));a(b.allToggle).prop("checked",function(){var a;c===g.length?(a=!0,k()):(a=!1,n());return a})};a(b.counterContainer).show();a(this).filter(":checked").each(function(c){a(this).parent().parent().toggleClass(b.selectedClass); |
||||
h();1===a(b.acrossInput).val()&&l()});a(b.allToggle).show().click(function(){p(a(this).prop("checked"));h()});a("a",b.acrossQuestions).click(function(c){c.preventDefault();a(b.acrossInput).val(1);l()});a("a",b.acrossClears).click(function(c){c.preventDefault();a(b.allToggle).prop("checked",!1);n();p(0);h()});f=null;a(g).click(function(c){c||(c=window.event);var d=c.target?c.target:c.srcElement;if(f&&a.data(f)!==a.data(d)&&!0===c.shiftKey){var e=!1;a(f).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass, |
||||
d.checked);a(g).each(function(){if(a.data(this)===a.data(f)||a.data(this)===a.data(d))e=e?!1:!0;e&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);f=d;h()});a("form#changelist-form table#result_list tr").find("td:gt(0) :input").change(function(){e=!0});a('form#changelist-form button[name="index"]').click(function(a){if(e)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))}); |
||||
a('form#changelist-form input[name="_save"]').click(function(c){var d=!1;a("select option:selected",b.actionContainer).each(function(){a(this).val()&&(d=!0)});if(d)return e?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")):confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})}; |
||||
a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"}})(django.jQuery); |
||||
@ -0,0 +1,364 @@ |
||||
/*global addEvent, Calendar, cancelEventPropagation, findPosX, findPosY, getStyle, get_format, gettext, interpolate, ngettext, quickElement, removeEvent*/ |
||||
// Inserts shortcut buttons after all of the following:
|
||||
// <input type="text" class="vDateField">
|
||||
// <input type="text" class="vTimeField">
|
||||
(function() { |
||||
'use strict'; |
||||
var DateTimeShortcuts = { |
||||
calendars: [], |
||||
calendarInputs: [], |
||||
clockInputs: [], |
||||
dismissClockFunc: [], |
||||
dismissCalendarFunc: [], |
||||
calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled
|
||||
calendarDivName2: 'calendarin', // name of <div> that contains calendar
|
||||
calendarLinkName: 'calendarlink',// name of the link that is used to toggle
|
||||
clockDivName: 'clockbox', // name of clock <div> that gets toggled
|
||||
clockLinkName: 'clocklink', // name of the link that is used to toggle
|
||||
shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts
|
||||
timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch
|
||||
timezoneOffset: 0, |
||||
init: function() { |
||||
var body = document.getElementsByTagName('body')[0]; |
||||
var serverOffset = body.getAttribute('data-admin-utc-offset'); |
||||
if (serverOffset) { |
||||
var localOffset = new Date().getTimezoneOffset() * -60; |
||||
DateTimeShortcuts.timezoneOffset = localOffset - serverOffset; |
||||
} |
||||
|
||||
var inputs = document.getElementsByTagName('input'); |
||||
for (var i = 0; i < inputs.length; i++) { |
||||
var inp = inputs[i]; |
||||
if (inp.getAttribute('type') === 'text' && inp.className.match(/vTimeField/)) { |
||||
DateTimeShortcuts.addClock(inp); |
||||
DateTimeShortcuts.addTimezoneWarning(inp); |
||||
} |
||||
else if (inp.getAttribute('type') === 'text' && inp.className.match(/vDateField/)) { |
||||
DateTimeShortcuts.addCalendar(inp); |
||||
DateTimeShortcuts.addTimezoneWarning(inp); |
||||
} |
||||
} |
||||
}, |
||||
// Return the current time while accounting for the server timezone.
|
||||
now: function() { |
||||
var body = document.getElementsByTagName('body')[0]; |
||||
var serverOffset = body.getAttribute('data-admin-utc-offset'); |
||||
if (serverOffset) { |
||||
var localNow = new Date(); |
||||
var localOffset = localNow.getTimezoneOffset() * -60; |
||||
localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset)); |
||||
return localNow; |
||||
} else { |
||||
return new Date(); |
||||
} |
||||
}, |
||||
// Add a warning when the time zone in the browser and backend do not match.
|
||||
addTimezoneWarning: function(inp) { |
||||
var $ = django.jQuery; |
||||
var warningClass = DateTimeShortcuts.timezoneWarningClass; |
||||
var timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600; |
||||
|
||||
// Only warn if there is a time zone mismatch.
|
||||
if (!timezoneOffset) { |
||||
return; |
||||
} |
||||
|
||||
// Check if warning is already there.
|
||||
if ($(inp).siblings('.' + warningClass).length) { |
||||
return; |
||||
} |
||||
|
||||
var message; |
||||
if (timezoneOffset > 0) { |
||||
message = ngettext( |
||||
'Note: You are %s hour ahead of server time.', |
||||
'Note: You are %s hours ahead of server time.', |
||||
timezoneOffset |
||||
); |
||||
} |
||||
else { |
||||
timezoneOffset *= -1; |
||||
message = ngettext( |
||||
'Note: You are %s hour behind server time.', |
||||
'Note: You are %s hours behind server time.', |
||||
timezoneOffset |
||||
); |
||||
} |
||||
message = interpolate(message, [timezoneOffset]); |
||||
|
||||
var $warning = $('<span>'); |
||||
$warning.attr('class', warningClass); |
||||
$warning.text(message); |
||||
|
||||
$(inp).parent() |
||||
.append($('<br>')) |
||||
.append($warning); |
||||
}, |
||||
// Add clock widget to a given field
|
||||
addClock: function(inp) { |
||||
var num = DateTimeShortcuts.clockInputs.length; |
||||
DateTimeShortcuts.clockInputs[num] = inp; |
||||
DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; }; |
||||
|
||||
// Shortcut links (clock icon and "Now" link)
|
||||
var shortcuts_span = document.createElement('span'); |
||||
shortcuts_span.className = DateTimeShortcuts.shortCutsClass; |
||||
inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); |
||||
var now_link = document.createElement('a'); |
||||
now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", -1);"); |
||||
now_link.appendChild(document.createTextNode(gettext('Now'))); |
||||
var clock_link = document.createElement('a'); |
||||
clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');'); |
||||
clock_link.id = DateTimeShortcuts.clockLinkName + num; |
||||
quickElement( |
||||
'span', clock_link, '', |
||||
'class', 'clock-icon', |
||||
'title', gettext('Choose a Time') |
||||
); |
||||
shortcuts_span.appendChild(document.createTextNode('\u00A0')); |
||||
shortcuts_span.appendChild(now_link); |
||||
shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); |
||||
shortcuts_span.appendChild(clock_link); |
||||
|
||||
// Create clock link div
|
||||
//
|
||||
// Markup looks like:
|
||||
// <div id="clockbox1" class="clockbox module">
|
||||
// <h2>Choose a time</h2>
|
||||
// <ul class="timelist">
|
||||
// <li><a href="#">Now</a></li>
|
||||
// <li><a href="#">Midnight</a></li>
|
||||
// <li><a href="#">6 a.m.</a></li>
|
||||
// <li><a href="#">Noon</a></li>
|
||||
// <li><a href="#">6 p.m.</a></li>
|
||||
// </ul>
|
||||
// <p class="calendar-cancel"><a href="#">Cancel</a></p>
|
||||
// </div>
|
||||
|
||||
var clock_box = document.createElement('div'); |
||||
clock_box.style.display = 'none'; |
||||
clock_box.style.position = 'absolute'; |
||||
clock_box.className = 'clockbox module'; |
||||
clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num); |
||||
document.body.appendChild(clock_box); |
||||
addEvent(clock_box, 'click', cancelEventPropagation); |
||||
|
||||
quickElement('h2', clock_box, gettext('Choose a time')); |
||||
var time_list = quickElement('ul', clock_box); |
||||
time_list.className = 'timelist'; |
||||
quickElement("a", quickElement("li", time_list), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", -1);"); |
||||
quickElement("a", quickElement("li", time_list), gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 0);"); |
||||
quickElement("a", quickElement("li", time_list), gettext("6 a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 6);"); |
||||
quickElement("a", quickElement("li", time_list), gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 12);"); |
||||
quickElement("a", quickElement("li", time_list), gettext("6 p.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 18);"); |
||||
|
||||
var cancel_p = quickElement('p', clock_box); |
||||
cancel_p.className = 'calendar-cancel'; |
||||
quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');'); |
||||
django.jQuery(document).bind('keyup', function(event) { |
||||
if (event.which === 27) { |
||||
// ESC key closes popup
|
||||
DateTimeShortcuts.dismissClock(num); |
||||
event.preventDefault(); |
||||
} |
||||
}); |
||||
}, |
||||
openClock: function(num) { |
||||
var clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num); |
||||
var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num); |
||||
|
||||
// Recalculate the clockbox position
|
||||
// is it left-to-right or right-to-left layout ?
|
||||
if (getStyle(document.body, 'direction') !== 'rtl') { |
||||
clock_box.style.left = findPosX(clock_link) + 17 + 'px'; |
||||
} |
||||
else { |
||||
// since style's width is in em, it'd be tough to calculate
|
||||
// px value of it. let's use an estimated px for now
|
||||
// TODO: IE returns wrong value for findPosX when in rtl mode
|
||||
// (it returns as it was left aligned), needs to be fixed.
|
||||
clock_box.style.left = findPosX(clock_link) - 110 + 'px'; |
||||
} |
||||
clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px'; |
||||
|
||||
// Show the clock box
|
||||
clock_box.style.display = 'block'; |
||||
addEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]); |
||||
}, |
||||
dismissClock: function(num) { |
||||
document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none'; |
||||
removeEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]); |
||||
}, |
||||
handleClockQuicklink: function(num, val) { |
||||
var d; |
||||
if (val === -1) { |
||||
d = DateTimeShortcuts.now(); |
||||
} |
||||
else { |
||||
d = new Date(1970, 1, 1, val, 0, 0, 0); |
||||
} |
||||
DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]); |
||||
DateTimeShortcuts.clockInputs[num].focus(); |
||||
DateTimeShortcuts.dismissClock(num); |
||||
}, |
||||
// Add calendar widget to a given field.
|
||||
addCalendar: function(inp) { |
||||
var num = DateTimeShortcuts.calendars.length; |
||||
|
||||
DateTimeShortcuts.calendarInputs[num] = inp; |
||||
DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; }; |
||||
|
||||
// Shortcut links (calendar icon and "Today" link)
|
||||
var shortcuts_span = document.createElement('span'); |
||||
shortcuts_span.className = DateTimeShortcuts.shortCutsClass; |
||||
inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); |
||||
var today_link = document.createElement('a'); |
||||
today_link.setAttribute('href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);'); |
||||
today_link.appendChild(document.createTextNode(gettext('Today'))); |
||||
var cal_link = document.createElement('a'); |
||||
cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');'); |
||||
cal_link.id = DateTimeShortcuts.calendarLinkName + num; |
||||
quickElement( |
||||
'span', cal_link, '', |
||||
'class', 'date-icon', |
||||
'title', gettext('Choose a Date') |
||||
); |
||||
shortcuts_span.appendChild(document.createTextNode('\u00A0')); |
||||
shortcuts_span.appendChild(today_link); |
||||
shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); |
||||
shortcuts_span.appendChild(cal_link); |
||||
|
||||
// Create calendarbox div.
|
||||
//
|
||||
// Markup looks like:
|
||||
//
|
||||
// <div id="calendarbox3" class="calendarbox module">
|
||||
// <h2>
|
||||
// <a href="#" class="link-previous">‹</a>
|
||||
// <a href="#" class="link-next">›</a> February 2003
|
||||
// </h2>
|
||||
// <div class="calendar" id="calendarin3">
|
||||
// <!-- (cal) -->
|
||||
// </div>
|
||||
// <div class="calendar-shortcuts">
|
||||
// <a href="#">Yesterday</a> | <a href="#">Today</a> | <a href="#">Tomorrow</a>
|
||||
// </div>
|
||||
// <p class="calendar-cancel"><a href="#">Cancel</a></p>
|
||||
// </div>
|
||||
var cal_box = document.createElement('div'); |
||||
cal_box.style.display = 'none'; |
||||
cal_box.style.position = 'absolute'; |
||||
cal_box.className = 'calendarbox module'; |
||||
cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num); |
||||
document.body.appendChild(cal_box); |
||||
addEvent(cal_box, 'click', cancelEventPropagation); |
||||
|
||||
// next-prev links
|
||||
var cal_nav = quickElement('div', cal_box); |
||||
var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', 'javascript:DateTimeShortcuts.drawPrev(' + num + ');'); |
||||
cal_nav_prev.className = 'calendarnav-previous'; |
||||
var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext(' + num + ');'); |
||||
cal_nav_next.className = 'calendarnav-next'; |
||||
|
||||
// main box
|
||||
var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num); |
||||
cal_main.className = 'calendar'; |
||||
DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num)); |
||||
DateTimeShortcuts.calendars[num].drawCurrent(); |
||||
|
||||
// calendar shortcuts
|
||||
var shortcuts = quickElement('div', cal_box); |
||||
shortcuts.className = 'calendar-shortcuts'; |
||||
quickElement('a', shortcuts, gettext('Yesterday'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', -1);'); |
||||
shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); |
||||
quickElement('a', shortcuts, gettext('Today'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);'); |
||||
shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); |
||||
quickElement('a', shortcuts, gettext('Tomorrow'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', +1);'); |
||||
|
||||
// cancel bar
|
||||
var cancel_p = quickElement('p', cal_box); |
||||
cancel_p.className = 'calendar-cancel'; |
||||
quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissCalendar(' + num + ');'); |
||||
django.jQuery(document).bind('keyup', function(event) { |
||||
if (event.which === 27) { |
||||
// ESC key closes popup
|
||||
DateTimeShortcuts.dismissCalendar(num); |
||||
event.preventDefault(); |
||||
} |
||||
}); |
||||
}, |
||||
openCalendar: function(num) { |
||||
var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num); |
||||
var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num); |
||||
var inp = DateTimeShortcuts.calendarInputs[num]; |
||||
|
||||
// Determine if the current value in the input has a valid date.
|
||||
// If so, draw the calendar with that date's year and month.
|
||||
if (inp.value) { |
||||
var format = get_format('DATE_INPUT_FORMATS')[0]; |
||||
var selected = inp.value.strptime(format); |
||||
var year = selected.getUTCFullYear(); |
||||
var month = selected.getUTCMonth() + 1; |
||||
var re = /\d{4}/; |
||||
if (re.test(year.toString()) && month >= 1 && month <= 12) { |
||||
DateTimeShortcuts.calendars[num].drawDate(month, year, selected); |
||||
} |
||||
} |
||||
|
||||
// Recalculate the clockbox position
|
||||
// is it left-to-right or right-to-left layout ?
|
||||
if (getStyle(document.body, 'direction') !== 'rtl') { |
||||
cal_box.style.left = findPosX(cal_link) + 17 + 'px'; |
||||
} |
||||
else { |
||||
// since style's width is in em, it'd be tough to calculate
|
||||
// px value of it. let's use an estimated px for now
|
||||
// TODO: IE returns wrong value for findPosX when in rtl mode
|
||||
// (it returns as it was left aligned), needs to be fixed.
|
||||
cal_box.style.left = findPosX(cal_link) - 180 + 'px'; |
||||
} |
||||
cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px'; |
||||
|
||||
cal_box.style.display = 'block'; |
||||
addEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]); |
||||
}, |
||||
dismissCalendar: function(num) { |
||||
document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; |
||||
removeEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]); |
||||
}, |
||||
drawPrev: function(num) { |
||||
DateTimeShortcuts.calendars[num].drawPreviousMonth(); |
||||
}, |
||||
drawNext: function(num) { |
||||
DateTimeShortcuts.calendars[num].drawNextMonth(); |
||||
}, |
||||
handleCalendarCallback: function(num) { |
||||
var format = get_format('DATE_INPUT_FORMATS')[0]; |
||||
// the format needs to be escaped a little
|
||||
format = format.replace('\\', '\\\\'); |
||||
format = format.replace('\r', '\\r'); |
||||
format = format.replace('\n', '\\n'); |
||||
format = format.replace('\t', '\\t'); |
||||
format = format.replace("'", "\\'"); |
||||
return ["function(y, m, d) { DateTimeShortcuts.calendarInputs[", |
||||
num, |
||||
"].value = new Date(y, m-1, d).strftime('", |
||||
format, |
||||
"');DateTimeShortcuts.calendarInputs[", |
||||
num, |
||||
"].focus();document.getElementById(DateTimeShortcuts.calendarDivName1+", |
||||
num, |
||||
").style.display='none';}"].join(''); |
||||
}, |
||||
handleCalendarQuickLink: function(num, offset) { |
||||
var d = DateTimeShortcuts.now(); |
||||
d.setDate(d.getDate() + offset); |
||||
DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]); |
||||
DateTimeShortcuts.calendarInputs[num].focus(); |
||||
DateTimeShortcuts.dismissCalendar(num); |
||||
} |
||||
}; |
||||
|
||||
addEvent(window, 'load', DateTimeShortcuts.init); |
||||
window.DateTimeShortcuts = DateTimeShortcuts; |
||||
})(); |
||||
@ -0,0 +1,181 @@ |
||||
/*global SelectBox, interpolate*/ |
||||
// Handles related-objects functionality: lookup link for raw_id_fields
|
||||
// and Add Another links.
|
||||
|
||||
(function($) { |
||||
'use strict'; |
||||
|
||||
function html_unescape(text) { |
||||
// Unescape a string that was escaped using django.utils.html.escape.
|
||||
text = text.replace(/</g, '<'); |
||||
text = text.replace(/>/g, '>'); |
||||
text = text.replace(/"/g, '"'); |
||||
text = text.replace(/'/g, "'"); |
||||
text = text.replace(/&/g, '&'); |
||||
return text; |
||||
} |
||||
|
||||
// IE doesn't accept periods or dashes in the window name, but the element IDs
|
||||
// we use to generate popup window names may contain them, therefore we map them
|
||||
// to allowed characters in a reversible way so that we can locate the correct
|
||||
// element when the popup window is dismissed.
|
||||
function id_to_windowname(text) { |
||||
text = text.replace(/\./g, '__dot__'); |
||||
text = text.replace(/\-/g, '__dash__'); |
||||
return text; |
||||
} |
||||
|
||||
function windowname_to_id(text) { |
||||
text = text.replace(/__dot__/g, '.'); |
||||
text = text.replace(/__dash__/g, '-'); |
||||
return text; |
||||
} |
||||
|
||||
function showAdminPopup(triggeringLink, name_regexp, add_popup) { |
||||
var name = triggeringLink.id.replace(name_regexp, ''); |
||||
name = id_to_windowname(name); |
||||
var href = triggeringLink.href; |
||||
if (add_popup) { |
||||
if (href.indexOf('?') === -1) { |
||||
href += '?_popup=1'; |
||||
} else { |
||||
href += '&_popup=1'; |
||||
} |
||||
} |
||||
var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); |
||||
win.focus(); |
||||
return false; |
||||
} |
||||
|
||||
function showRelatedObjectLookupPopup(triggeringLink) { |
||||
return showAdminPopup(triggeringLink, /^lookup_/, true); |
||||
} |
||||
|
||||
function dismissRelatedLookupPopup(win, chosenId) { |
||||
var name = windowname_to_id(win.name); |
||||
var elem = document.getElementById(name); |
||||
if (elem.className.indexOf('vManyToManyRawIdAdminField') !== -1 && elem.value) { |
||||
elem.value += ',' + chosenId; |
||||
} else { |
||||
document.getElementById(name).value = chosenId; |
||||
} |
||||
win.close(); |
||||
} |
||||
|
||||
function showRelatedObjectPopup(triggeringLink) { |
||||
return showAdminPopup(triggeringLink, /^(change|add|delete)_/, false); |
||||
} |
||||
|
||||
function updateRelatedObjectLinks(triggeringLink) { |
||||
var $this = django.jQuery(triggeringLink); |
||||
var siblings = $this.nextAll('.change-related, .delete-related'); |
||||
if (!siblings.length) { |
||||
return; |
||||
} |
||||
var value = $this.val(); |
||||
if (value) { |
||||
siblings.each(function() { |
||||
var elm = django.jQuery(this); |
||||
elm.attr('href', elm.attr('data-href-template').replace('__fk__', value)); |
||||
}); |
||||
} else { |
||||
siblings.removeAttr('href'); |
||||
} |
||||
} |
||||
|
||||
function dismissAddRelatedObjectPopup(win, newId, newRepr) { |
||||
// newId and newRepr are expected to have previously been escaped by
|
||||
// django.utils.html.escape.
|
||||
newId = html_unescape(newId); |
||||
newRepr = html_unescape(newRepr); |
||||
var name = windowname_to_id(win.name); |
||||
var elem = document.getElementById(name); |
||||
if (elem) { |
||||
var elemName = elem.nodeName.toUpperCase(); |
||||
if (elemName === 'SELECT') { |
||||
elem.options[elem.options.length] = new Option(newRepr, newId, true, true); |
||||
} else if (elemName === 'INPUT') { |
||||
if (elem.className.indexOf('vManyToManyRawIdAdminField') !== -1 && elem.value) { |
||||
elem.value += ',' + newId; |
||||
} else { |
||||
elem.value = newId; |
||||
} |
||||
} |
||||
// Trigger a change event to update related links if required.
|
||||
django.jQuery(elem).trigger('change'); |
||||
} else { |
||||
var toId = name + "_to"; |
||||
var o = new Option(newRepr, newId); |
||||
SelectBox.add_to_cache(toId, o); |
||||
SelectBox.redisplay(toId); |
||||
} |
||||
win.close(); |
||||
} |
||||
|
||||
function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) { |
||||
objId = html_unescape(objId); |
||||
newRepr = html_unescape(newRepr); |
||||
var id = windowname_to_id(win.name).replace(/^edit_/, ''); |
||||
var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); |
||||
var selects = django.jQuery(selectsSelector); |
||||
selects.find('option').each(function() { |
||||
if (this.value === objId) { |
||||
this.innerHTML = newRepr; |
||||
this.value = newId; |
||||
} |
||||
}); |
||||
win.close(); |
||||
} |
||||
|
||||
function dismissDeleteRelatedObjectPopup(win, objId) { |
||||
objId = html_unescape(objId); |
||||
var id = windowname_to_id(win.name).replace(/^delete_/, ''); |
||||
var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); |
||||
var selects = django.jQuery(selectsSelector); |
||||
selects.find('option').each(function() { |
||||
if (this.value === objId) { |
||||
django.jQuery(this).remove(); |
||||
} |
||||
}).trigger('change'); |
||||
win.close(); |
||||
} |
||||
|
||||
// Global for testing purposes
|
||||
window.html_unescape = html_unescape; |
||||
window.id_to_windowname = id_to_windowname; |
||||
window.windowname_to_id = windowname_to_id; |
||||
|
||||
window.showRelatedObjectLookupPopup = showRelatedObjectLookupPopup; |
||||
window.dismissRelatedLookupPopup = dismissRelatedLookupPopup; |
||||
window.showRelatedObjectPopup = showRelatedObjectPopup; |
||||
window.updateRelatedObjectLinks = updateRelatedObjectLinks; |
||||
window.dismissAddRelatedObjectPopup = dismissAddRelatedObjectPopup; |
||||
window.dismissChangeRelatedObjectPopup = dismissChangeRelatedObjectPopup; |
||||
window.dismissDeleteRelatedObjectPopup = dismissDeleteRelatedObjectPopup; |
||||
|
||||
// Kept for backward compatibility
|
||||
window.showAddAnotherPopup = showRelatedObjectPopup; |
||||
window.dismissAddAnotherPopup = dismissAddRelatedObjectPopup; |
||||
|
||||
$(document).ready(function() { |
||||
$('body').on('click', '.related-widget-wrapper-link', function(e) { |
||||
e.preventDefault(); |
||||
if (this.href) { |
||||
var event = $.Event('django:show-related', {href: this.href}); |
||||
$(this).trigger(event); |
||||
if (!event.isDefaultPrevented()) { |
||||
showRelatedObjectPopup(this); |
||||
} |
||||
} |
||||
}); |
||||
$('body').on('change', '.related-widget-wrapper select', function(e) { |
||||
var event = $.Event('django:update-related'); |
||||
$(this).trigger(event); |
||||
if (!event.isDefaultPrevented()) { |
||||
updateRelatedObjectLinks(this); |
||||
} |
||||
}); |
||||
$('.related-widget-wrapper select').trigger('change'); |
||||
}); |
||||
|
||||
})(django.jQuery); |
||||
@ -0,0 +1,178 @@ |
||||
/*global gettext, get_format, quickElement, removeChildren*/ |
||||
/* |
||||
calendar.js - Calendar functions by Adrian Holovaty |
||||
depends on core.js for utility functions like removeChildren or quickElement |
||||
*/ |
||||
|
||||
(function() { |
||||
'use strict'; |
||||
// CalendarNamespace -- Provides a collection of HTML calendar-related helper functions
|
||||
var CalendarNamespace = { |
||||
monthsOfYear: gettext('January February March April May June July August September October November December').split(' '), |
||||
daysOfWeek: gettext('S M T W T F S').split(' '), |
||||
firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')), |
||||
isLeapYear: function(year) { |
||||
return (((year % 4) === 0) && ((year % 100) !== 0 ) || ((year % 400) === 0)); |
||||
}, |
||||
getDaysInMonth: function(month, year) { |
||||
var days; |
||||
if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) { |
||||
days = 31; |
||||
} |
||||
else if (month === 4 || month === 6 || month === 9 || month === 11) { |
||||
days = 30; |
||||
} |
||||
else if (month === 2 && CalendarNamespace.isLeapYear(year)) { |
||||
days = 29; |
||||
} |
||||
else { |
||||
days = 28; |
||||
} |
||||
return days; |
||||
}, |
||||
draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999
|
||||
var today = new Date(); |
||||
var todayDay = today.getDate(); |
||||
var todayMonth = today.getMonth() + 1; |
||||
var todayYear = today.getFullYear(); |
||||
var todayClass = ''; |
||||
|
||||
// Use UTC functions here because the date field does not contain time
|
||||
// and using the UTC function variants prevent the local time offset
|
||||
// from altering the date, specifically the day field. For example:
|
||||
//
|
||||
// ```
|
||||
// var x = new Date('2013-10-02');
|
||||
// var day = x.getDate();
|
||||
// ```
|
||||
//
|
||||
// The day variable above will be 1 instead of 2 in, say, US Pacific time
|
||||
// zone.
|
||||
var isSelectedMonth = false; |
||||
if (typeof selected !== 'undefined') { |
||||
isSelectedMonth = (selected.getUTCFullYear() === year && (selected.getUTCMonth() + 1) === month); |
||||
} |
||||
|
||||
month = parseInt(month); |
||||
year = parseInt(year); |
||||
var calDiv = document.getElementById(div_id); |
||||
removeChildren(calDiv); |
||||
var calTable = document.createElement('table'); |
||||
quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month - 1] + ' ' + year); |
||||
var tableBody = quickElement('tbody', calTable); |
||||
|
||||
// Draw days-of-week header
|
||||
var tableRow = quickElement('tr', tableBody); |
||||
for (var i = 0; i < 7; i++) { |
||||
quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]); |
||||
} |
||||
|
||||
var startingPos = new Date(year, month - 1, 1 - CalendarNamespace.firstDayOfWeek).getDay(); |
||||
var days = CalendarNamespace.getDaysInMonth(month, year); |
||||
|
||||
var nonDayCell; |
||||
|
||||
// Draw blanks before first of month
|
||||
tableRow = quickElement('tr', tableBody); |
||||
for (i = 0; i < startingPos; i++) { |
||||
nonDayCell = quickElement('td', tableRow, ' '); |
||||
nonDayCell.className = "nonday"; |
||||
} |
||||
|
||||
// Draw days of month
|
||||
var currentDay = 1; |
||||
for (i = startingPos; currentDay <= days; i++) { |
||||
if (i % 7 === 0 && currentDay !== 1) { |
||||
tableRow = quickElement('tr', tableBody); |
||||
} |
||||
if ((currentDay === todayDay) && (month === todayMonth) && (year === todayYear)) { |
||||
todayClass = 'today'; |
||||
} else { |
||||
todayClass = ''; |
||||
} |
||||
|
||||
// use UTC function; see above for explanation.
|
||||
if (isSelectedMonth && currentDay === selected.getUTCDate()) { |
||||
if (todayClass !== '') { |
||||
todayClass += " "; |
||||
} |
||||
todayClass += "selected"; |
||||
} |
||||
|
||||
var cell = quickElement('td', tableRow, '', 'class', todayClass); |
||||
|
||||
quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '(' + year + ',' + month + ',' + currentDay + '));'); |
||||
currentDay++; |
||||
} |
||||
|
||||
// Draw blanks after end of month (optional, but makes for valid code)
|
||||
while (tableRow.childNodes.length < 7) { |
||||
nonDayCell = quickElement('td', tableRow, ' '); |
||||
nonDayCell.className = "nonday"; |
||||
} |
||||
|
||||
calDiv.appendChild(calTable); |
||||
} |
||||
}; |
||||
|
||||
// Calendar -- A calendar instance
|
||||
function Calendar(div_id, callback, selected) { |
||||
// div_id (string) is the ID of the element in which the calendar will
|
||||
// be displayed
|
||||
// callback (string) is the name of a JavaScript function that will be
|
||||
// called with the parameters (year, month, day) when a day in the
|
||||
// calendar is clicked
|
||||
this.div_id = div_id; |
||||
this.callback = callback; |
||||
this.today = new Date(); |
||||
this.currentMonth = this.today.getMonth() + 1; |
||||
this.currentYear = this.today.getFullYear(); |
||||
if (typeof selected !== 'undefined') { |
||||
this.selected = selected; |
||||
} |
||||
} |
||||
Calendar.prototype = { |
||||
drawCurrent: function() { |
||||
CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected); |
||||
}, |
||||
drawDate: function(month, year, selected) { |
||||
this.currentMonth = month; |
||||
this.currentYear = year; |
||||
|
||||
if(selected) { |
||||
this.selected = selected; |
||||
} |
||||
|
||||
this.drawCurrent(); |
||||
}, |
||||
drawPreviousMonth: function() { |
||||
if (this.currentMonth === 1) { |
||||
this.currentMonth = 12; |
||||
this.currentYear--; |
||||
} |
||||
else { |
||||
this.currentMonth--; |
||||
} |
||||
this.drawCurrent(); |
||||
}, |
||||
drawNextMonth: function() { |
||||
if (this.currentMonth === 12) { |
||||
this.currentMonth = 1; |
||||
this.currentYear++; |
||||
} |
||||
else { |
||||
this.currentMonth++; |
||||
} |
||||
this.drawCurrent(); |
||||
}, |
||||
drawPreviousYear: function() { |
||||
this.currentYear--; |
||||
this.drawCurrent(); |
||||
}, |
||||
drawNextYear: function() { |
||||
this.currentYear++; |
||||
this.drawCurrent(); |
||||
} |
||||
}; |
||||
window.Calendar = Calendar; |
||||
})(); |
||||
@ -0,0 +1,26 @@ |
||||
/*global gettext*/ |
||||
(function($) { |
||||
'use strict'; |
||||
$(document).ready(function() { |
||||
// Add anchor tag for Show/Hide link
|
||||
$("fieldset.collapse").each(function(i, elem) { |
||||
// Don't hide if fields in this fieldset have errors
|
||||
if ($(elem).find("div.errors").length === 0) { |
||||
$(elem).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser' + |
||||
i + '" class="collapse-toggle" href="#">' + gettext("Show") + |
||||
'</a>)'); |
||||
} |
||||
}); |
||||
// Add toggle to anchor tag
|
||||
$("fieldset.collapse a.collapse-toggle").click(function(ev) { |
||||
if ($(this).closest("fieldset").hasClass("collapsed")) { |
||||
// Show
|
||||
$(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [$(this).attr("id")]); |
||||
} else { |
||||
// Hide
|
||||
$(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", [$(this).attr("id")]); |
||||
} |
||||
return false; |
||||
}); |
||||
}); |
||||
})(django.jQuery); |
||||
@ -0,0 +1,2 @@ |
||||
(function(a){a(document).ready(function(){a("fieldset.collapse").each(function(b,c){0===a(c).find("div.errors").length&&a(c).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser'+b+'" class="collapse-toggle" href="#">'+gettext("Show")+"</a>)")});a("fieldset.collapse a.collapse-toggle").click(function(b){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", |
||||
[a(this).attr("id")]);return!1})})})(django.jQuery); |
||||
@ -0,0 +1,266 @@ |
||||
// Core javascript helper functions
|
||||
|
||||
// basic browser identification & version
|
||||
var isOpera = (navigator.userAgent.indexOf("Opera") >= 0) && parseFloat(navigator.appVersion); |
||||
var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]); |
||||
|
||||
// Cross-browser event handlers.
|
||||
function addEvent(obj, evType, fn) { |
||||
'use strict'; |
||||
if (obj.addEventListener) { |
||||
obj.addEventListener(evType, fn, false); |
||||
return true; |
||||
} else if (obj.attachEvent) { |
||||
var r = obj.attachEvent("on" + evType, fn); |
||||
return r; |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
function removeEvent(obj, evType, fn) { |
||||
'use strict'; |
||||
if (obj.removeEventListener) { |
||||
obj.removeEventListener(evType, fn, false); |
||||
return true; |
||||
} else if (obj.detachEvent) { |
||||
obj.detachEvent("on" + evType, fn); |
||||
return true; |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
function cancelEventPropagation(e) { |
||||
'use strict'; |
||||
if (!e) { |
||||
e = window.event; |
||||
} |
||||
e.cancelBubble = true; |
||||
if (e.stopPropagation) { |
||||
e.stopPropagation(); |
||||
} |
||||
} |
||||
|
||||
// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]);
|
||||
function quickElement() { |
||||
'use strict'; |
||||
var obj = document.createElement(arguments[0]); |
||||
if (arguments[2]) { |
||||
var textNode = document.createTextNode(arguments[2]); |
||||
obj.appendChild(textNode); |
||||
} |
||||
var len = arguments.length; |
||||
for (var i = 3; i < len; i += 2) { |
||||
obj.setAttribute(arguments[i], arguments[i + 1]); |
||||
} |
||||
arguments[1].appendChild(obj); |
||||
return obj; |
||||
} |
||||
|
||||
// "a" is reference to an object
|
||||
function removeChildren(a) { |
||||
'use strict'; |
||||
while (a.hasChildNodes()) { |
||||
a.removeChild(a.lastChild); |
||||
} |
||||
} |
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Cross-browser xmlhttp object
|
||||
// from http://jibbering.com/2002/4/httprequest.html
|
||||
// ----------------------------------------------------------------------------
|
||||
var xmlhttp; |
||||
/*@cc_on @*/ |
||||
/*@if (@_jscript_version >= 5) |
||||
try { |
||||
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); |
||||
} catch (e) { |
||||
try { |
||||
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); |
||||
} catch (E) { |
||||
xmlhttp = false; |
||||
} |
||||
} |
||||
@else |
||||
xmlhttp = false; |
||||
@end @*/ |
||||
if (!xmlhttp && typeof XMLHttpRequest !== 'undefined') { |
||||
xmlhttp = new XMLHttpRequest(); |
||||
} |
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Find-position functions by PPK
|
||||
// See http://www.quirksmode.org/js/findpos.html
|
||||
// ----------------------------------------------------------------------------
|
||||
function findPosX(obj) { |
||||
'use strict'; |
||||
var curleft = 0; |
||||
if (obj.offsetParent) { |
||||
while (obj.offsetParent) { |
||||
curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft); |
||||
obj = obj.offsetParent; |
||||
} |
||||
// IE offsetParent does not include the top-level
|
||||
if (isIE && obj.parentElement) { |
||||
curleft += obj.offsetLeft - obj.scrollLeft; |
||||
} |
||||
} else if (obj.x) { |
||||
curleft += obj.x; |
||||
} |
||||
return curleft; |
||||
} |
||||
|
||||
function findPosY(obj) { |
||||
'use strict'; |
||||
var curtop = 0; |
||||
if (obj.offsetParent) { |
||||
while (obj.offsetParent) { |
||||
curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop); |
||||
obj = obj.offsetParent; |
||||
} |
||||
// IE offsetParent does not include the top-level
|
||||
if (isIE && obj.parentElement) { |
||||
curtop += obj.offsetTop - obj.scrollTop; |
||||
} |
||||
} else if (obj.y) { |
||||
curtop += obj.y; |
||||
} |
||||
return curtop; |
||||
} |
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Date object extensions
|
||||
// ----------------------------------------------------------------------------
|
||||
(function() { |
||||
'use strict'; |
||||
Date.prototype.getTwelveHours = function() { |
||||
var hours = this.getHours(); |
||||
if (hours === 0) { |
||||
return 12; |
||||
} |
||||
else { |
||||
return hours <= 12 ? hours : hours - 12; |
||||
} |
||||
}; |
||||
|
||||
Date.prototype.getTwoDigitMonth = function() { |
||||
return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1); |
||||
}; |
||||
|
||||
Date.prototype.getTwoDigitDate = function() { |
||||
return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); |
||||
}; |
||||
|
||||
Date.prototype.getTwoDigitTwelveHour = function() { |
||||
return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours(); |
||||
}; |
||||
|
||||
Date.prototype.getTwoDigitHour = function() { |
||||
return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); |
||||
}; |
||||
|
||||
Date.prototype.getTwoDigitMinute = function() { |
||||
return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); |
||||
}; |
||||
|
||||
Date.prototype.getTwoDigitSecond = function() { |
||||
return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); |
||||
}; |
||||
|
||||
Date.prototype.getHourMinute = function() { |
||||
return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute(); |
||||
}; |
||||
|
||||
Date.prototype.getHourMinuteSecond = function() { |
||||
return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond(); |
||||
}; |
||||
|
||||
Date.prototype.strftime = function(format) { |
||||
var fields = { |
||||
c: this.toString(), |
||||
d: this.getTwoDigitDate(), |
||||
H: this.getTwoDigitHour(), |
||||
I: this.getTwoDigitTwelveHour(), |
||||
m: this.getTwoDigitMonth(), |
||||
M: this.getTwoDigitMinute(), |
||||
p: (this.getHours() >= 12) ? 'PM' : 'AM', |
||||
S: this.getTwoDigitSecond(), |
||||
w: '0' + this.getDay(), |
||||
x: this.toLocaleDateString(), |
||||
X: this.toLocaleTimeString(), |
||||
y: ('' + this.getFullYear()).substr(2, 4), |
||||
Y: '' + this.getFullYear(), |
||||
'%': '%' |
||||
}; |
||||
var result = '', i = 0; |
||||
while (i < format.length) { |
||||
if (format.charAt(i) === '%') { |
||||
result = result + fields[format.charAt(i + 1)]; |
||||
++i; |
||||
} |
||||
else { |
||||
result = result + format.charAt(i); |
||||
} |
||||
++i; |
||||
} |
||||
return result; |
||||
}; |
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// String object extensions
|
||||
// ----------------------------------------------------------------------------
|
||||
String.prototype.pad_left = function(pad_length, pad_string) { |
||||
var new_string = this; |
||||
for (var i = 0; new_string.length < pad_length; i++) { |
||||
new_string = pad_string + new_string; |
||||
} |
||||
return new_string; |
||||
}; |
||||
|
||||
String.prototype.strptime = function(format) { |
||||
var split_format = format.split(/[.\-/]/); |
||||
var date = this.split(/[.\-/]/); |
||||
var i = 0; |
||||
var day, month, year; |
||||
while (i < split_format.length) { |
||||
switch (split_format[i]) { |
||||
case "%d": |
||||
day = date[i]; |
||||
break; |
||||
case "%m": |
||||
month = date[i] - 1; |
||||
break; |
||||
case "%Y": |
||||
year = date[i]; |
||||
break; |
||||
case "%y": |
||||
year = date[i]; |
||||
break; |
||||
} |
||||
++i; |
||||
} |
||||
// Create Date object from UTC since the parsed value is supposed to be
|
||||
// in UTC, not local time. Also, the calendar uses UTC functions for
|
||||
// date extraction.
|
||||
return new Date(Date.UTC(year, month, day)); |
||||
}; |
||||
|
||||
})(); |
||||
// ----------------------------------------------------------------------------
|
||||
// Get the computed style for and element
|
||||
// ----------------------------------------------------------------------------
|
||||
function getStyle(oElm, strCssRule) { |
||||
'use strict'; |
||||
var strValue = ""; |
||||
if(document.defaultView && document.defaultView.getComputedStyle) { |
||||
strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); |
||||
} |
||||
else if(oElm.currentStyle) { |
||||
strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1) { |
||||
return p1.toUpperCase(); |
||||
}); |
||||
strValue = oElm.currentStyle[strCssRule]; |
||||
} |
||||
return strValue; |
||||
} |
||||
@ -0,0 +1,275 @@ |
||||
/*global DateTimeShortcuts, SelectFilter*/ |
||||
/** |
||||
* Django admin inlines |
||||
* |
||||
* Based on jQuery Formset 1.1 |
||||
* @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com) |
||||
* @requires jQuery 1.2.6 or later |
||||
* |
||||
* Copyright (c) 2009, Stanislaus Madueke |
||||
* All rights reserved. |
||||
* |
||||
* Spiced up with Code from Zain Memon's GSoC project 2009 |
||||
* and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip. |
||||
* |
||||
* Licensed under the New BSD License |
||||
* See: http://www.opensource.org/licenses/bsd-license.php
|
||||
*/ |
||||
(function($) { |
||||
'use strict'; |
||||
$.fn.formset = function(opts) { |
||||
var options = $.extend({}, $.fn.formset.defaults, opts); |
||||
var $this = $(this); |
||||
var $parent = $this.parent(); |
||||
var updateElementIndex = function(el, prefix, ndx) { |
||||
var id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))"); |
||||
var replacement = prefix + "-" + ndx; |
||||
if ($(el).prop("for")) { |
||||
$(el).prop("for", $(el).prop("for").replace(id_regex, replacement)); |
||||
} |
||||
if (el.id) { |
||||
el.id = el.id.replace(id_regex, replacement); |
||||
} |
||||
if (el.name) { |
||||
el.name = el.name.replace(id_regex, replacement); |
||||
} |
||||
}; |
||||
var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off"); |
||||
var nextIndex = parseInt(totalForms.val(), 10); |
||||
var maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off"); |
||||
// only show the add button if we are allowed to add more items,
|
||||
// note that max_num = None translates to a blank string.
|
||||
var showAddButton = maxForms.val() === '' || (maxForms.val() - totalForms.val()) > 0; |
||||
$this.each(function(i) { |
||||
$(this).not("." + options.emptyCssClass).addClass(options.formCssClass); |
||||
}); |
||||
if ($this.length && showAddButton) { |
||||
var addButton; |
||||
if ($this.prop("tagName") === "TR") { |
||||
// If forms are laid out as table rows, insert the
|
||||
// "add" button in a new table row:
|
||||
var numCols = this.eq(-1).children().length; |
||||
$parent.append('<tr class="' + options.addCssClass + '"><td colspan="' + numCols + '"><a href="javascript:void(0)">' + options.addText + "</a></tr>"); |
||||
addButton = $parent.find("tr:last a"); |
||||
} else { |
||||
// Otherwise, insert it immediately after the last form:
|
||||
$this.filter(":last").after('<div class="' + options.addCssClass + '"><a href="javascript:void(0)">' + options.addText + "</a></div>"); |
||||
addButton = $this.filter(":last").next().find("a"); |
||||
} |
||||
addButton.click(function(e) { |
||||
e.preventDefault(); |
||||
var template = $("#" + options.prefix + "-empty"); |
||||
var row = template.clone(true); |
||||
row.removeClass(options.emptyCssClass) |
||||
.addClass(options.formCssClass) |
||||
.attr("id", options.prefix + "-" + nextIndex); |
||||
if (row.is("tr")) { |
||||
// If the forms are laid out in table rows, insert
|
||||
// the remove button into the last table cell:
|
||||
row.children(":last").append('<div><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></div>"); |
||||
} else if (row.is("ul") || row.is("ol")) { |
||||
// If they're laid out as an ordered/unordered list,
|
||||
// insert an <li> after the last list item:
|
||||
row.append('<li><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></li>"); |
||||
} else { |
||||
// Otherwise, just insert the remove button as the
|
||||
// last child element of the form's container:
|
||||
row.children(":first").append('<span><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></span>"); |
||||
} |
||||
row.find("*").each(function() { |
||||
updateElementIndex(this, options.prefix, totalForms.val()); |
||||
}); |
||||
// Insert the new form when it has been fully edited
|
||||
row.insertBefore($(template)); |
||||
// Update number of total forms
|
||||
$(totalForms).val(parseInt(totalForms.val(), 10) + 1); |
||||
nextIndex += 1; |
||||
// Hide add button in case we've hit the max, except we want to add infinitely
|
||||
if ((maxForms.val() !== '') && (maxForms.val() - totalForms.val()) <= 0) { |
||||
addButton.parent().hide(); |
||||
} |
||||
// The delete button of each row triggers a bunch of other things
|
||||
row.find("a." + options.deleteCssClass).click(function(e1) { |
||||
e1.preventDefault(); |
||||
// Remove the parent form containing this button:
|
||||
row.remove(); |
||||
nextIndex -= 1; |
||||
// If a post-delete callback was provided, call it with the deleted form:
|
||||
if (options.removed) { |
||||
options.removed(row); |
||||
} |
||||
$(document).trigger('formset:removed', [row, options.prefix]); |
||||
// Update the TOTAL_FORMS form count.
|
||||
var forms = $("." + options.formCssClass); |
||||
$("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length); |
||||
// Show add button again once we drop below max
|
||||
if ((maxForms.val() === '') || (maxForms.val() - forms.length) > 0) { |
||||
addButton.parent().show(); |
||||
} |
||||
// Also, update names and ids for all remaining form controls
|
||||
// so they remain in sequence:
|
||||
var i, formCount; |
||||
var updateElementCallback = function() { |
||||
updateElementIndex(this, options.prefix, i); |
||||
}; |
||||
for (i = 0, formCount = forms.length; i < formCount; i++) { |
||||
updateElementIndex($(forms).get(i), options.prefix, i); |
||||
$(forms.get(i)).find("*").each(updateElementCallback); |
||||
} |
||||
}); |
||||
// If a post-add callback was supplied, call it with the added form:
|
||||
if (options.added) { |
||||
options.added(row); |
||||
} |
||||
$(document).trigger('formset:added', [row, options.prefix]); |
||||
}); |
||||
} |
||||
return this; |
||||
}; |
||||
|
||||
/* Setup plugin defaults */ |
||||
$.fn.formset.defaults = { |
||||
prefix: "form", // The form prefix for your django formset
|
||||
addText: "add another", // Text for the add link
|
||||
deleteText: "remove", // Text for the delete link
|
||||
addCssClass: "add-row", // CSS class applied to the add link
|
||||
deleteCssClass: "delete-row", // CSS class applied to the delete link
|
||||
emptyCssClass: "empty-row", // CSS class applied to the empty row
|
||||
formCssClass: "dynamic-form", // CSS class applied to each form in a formset
|
||||
added: null, // Function called each time a new form is added
|
||||
removed: null // Function called each time a form is deleted
|
||||
}; |
||||
|
||||
|
||||
// Tabular inlines ---------------------------------------------------------
|
||||
$.fn.tabularFormset = function(options) { |
||||
var $rows = $(this); |
||||
var alternatingRows = function(row) { |
||||
$($rows.selector).not(".add-row").removeClass("row1 row2") |
||||
.filter(":even").addClass("row1").end() |
||||
.filter(":odd").addClass("row2"); |
||||
}; |
||||
|
||||
var reinitDateTimeShortCuts = function() { |
||||
// Reinitialize the calendar and clock widgets by force
|
||||
if (typeof DateTimeShortcuts !== "undefined") { |
||||
$(".datetimeshortcuts").remove(); |
||||
DateTimeShortcuts.init(); |
||||
} |
||||
}; |
||||
|
||||
var updateSelectFilter = function() { |
||||
// If any SelectFilter widgets are a part of the new form,
|
||||
// instantiate a new SelectFilter instance for it.
|
||||
if (typeof SelectFilter !== 'undefined') { |
||||
$('.selectfilter').each(function(index, value) { |
||||
var namearr = value.name.split('-'); |
||||
SelectFilter.init(value.id, namearr[namearr.length - 1], false); |
||||
}); |
||||
$('.selectfilterstacked').each(function(index, value) { |
||||
var namearr = value.name.split('-'); |
||||
SelectFilter.init(value.id, namearr[namearr.length - 1], true); |
||||
}); |
||||
} |
||||
}; |
||||
|
||||
var initPrepopulatedFields = function(row) { |
||||
row.find('.prepopulated_field').each(function() { |
||||
var field = $(this), |
||||
input = field.find('input, select, textarea'), |
||||
dependency_list = input.data('dependency_list') || [], |
||||
dependencies = []; |
||||
$.each(dependency_list, function(i, field_name) { |
||||
dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id')); |
||||
}); |
||||
if (dependencies.length) { |
||||
input.prepopulate(dependencies, input.attr('maxlength')); |
||||
} |
||||
}); |
||||
}; |
||||
|
||||
$rows.formset({ |
||||
prefix: options.prefix, |
||||
addText: options.addText, |
||||
formCssClass: "dynamic-" + options.prefix, |
||||
deleteCssClass: "inline-deletelink", |
||||
deleteText: options.deleteText, |
||||
emptyCssClass: "empty-form", |
||||
removed: alternatingRows, |
||||
added: function(row) { |
||||
initPrepopulatedFields(row); |
||||
reinitDateTimeShortCuts(); |
||||
updateSelectFilter(); |
||||
alternatingRows(row); |
||||
} |
||||
}); |
||||
|
||||
return $rows; |
||||
}; |
||||
|
||||
// Stacked inlines ---------------------------------------------------------
|
||||
$.fn.stackedFormset = function(options) { |
||||
var $rows = $(this); |
||||
var updateInlineLabel = function(row) { |
||||
$($rows.selector).find(".inline_label").each(function(i) { |
||||
var count = i + 1; |
||||
$(this).html($(this).html().replace(/(#\d+)/g, "#" + count)); |
||||
}); |
||||
}; |
||||
|
||||
var reinitDateTimeShortCuts = function() { |
||||
// Reinitialize the calendar and clock widgets by force, yuck.
|
||||
if (typeof DateTimeShortcuts !== "undefined") { |
||||
$(".datetimeshortcuts").remove(); |
||||
DateTimeShortcuts.init(); |
||||
} |
||||
}; |
||||
|
||||
var updateSelectFilter = function() { |
||||
// If any SelectFilter widgets were added, instantiate a new instance.
|
||||
if (typeof SelectFilter !== "undefined") { |
||||
$(".selectfilter").each(function(index, value) { |
||||
var namearr = value.name.split('-'); |
||||
SelectFilter.init(value.id, namearr[namearr.length - 1], false); |
||||
}); |
||||
$(".selectfilterstacked").each(function(index, value) { |
||||
var namearr = value.name.split('-'); |
||||
SelectFilter.init(value.id, namearr[namearr.length - 1], true); |
||||
}); |
||||
} |
||||
}; |
||||
|
||||
var initPrepopulatedFields = function(row) { |
||||
row.find('.prepopulated_field').each(function() { |
||||
var field = $(this), |
||||
input = field.find('input, select, textarea'), |
||||
dependency_list = input.data('dependency_list') || [], |
||||
dependencies = []; |
||||
$.each(dependency_list, function(i, field_name) { |
||||
dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id')); |
||||
}); |
||||
if (dependencies.length) { |
||||
input.prepopulate(dependencies, input.attr('maxlength')); |
||||
} |
||||
}); |
||||
}; |
||||
|
||||
$rows.formset({ |
||||
prefix: options.prefix, |
||||
addText: options.addText, |
||||
formCssClass: "dynamic-" + options.prefix, |
||||
deleteCssClass: "inline-deletelink", |
||||
deleteText: options.deleteText, |
||||
emptyCssClass: "empty-form", |
||||
removed: updateInlineLabel, |
||||
added: function(row) { |
||||
initPrepopulatedFields(row); |
||||
reinitDateTimeShortCuts(); |
||||
updateSelectFilter(); |
||||
updateInlineLabel(row); |
||||
} |
||||
}); |
||||
|
||||
return $rows; |
||||
}; |
||||
})(django.jQuery); |
||||
@ -0,0 +1,9 @@ |
||||
(function(b){b.fn.formset=function(d){var a=b.extend({},b.fn.formset.defaults,d),e=b(this);d=e.parent();var k=function(a,f,l){var c=new RegExp("("+f+"-(\\d+|__prefix__))");f=f+"-"+l;b(a).prop("for")&&b(a).prop("for",b(a).prop("for").replace(c,f));a.id&&(a.id=a.id.replace(c,f));a.name&&(a.name=a.name.replace(c,f))},h=b("#id_"+a.prefix+"-TOTAL_FORMS").prop("autocomplete","off"),l=parseInt(h.val(),10),f=b("#id_"+a.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off"),c=""===f.val()||0<f.val()-h.val(); |
||||
e.each(function(f){b(this).not("."+a.emptyCssClass).addClass(a.formCssClass)});if(e.length&&c){var m;"TR"===e.prop("tagName")?(e=this.eq(-1).children().length,d.append('<tr class="'+a.addCssClass+'"><td colspan="'+e+'"><a href="javascript:void(0)">'+a.addText+"</a></tr>"),m=d.find("tr:last a")):(e.filter(":last").after('<div class="'+a.addCssClass+'"><a href="javascript:void(0)">'+a.addText+"</a></div>"),m=e.filter(":last").next().find("a"));m.click(function(c){c.preventDefault();c=b("#"+a.prefix+ |
||||
"-empty");var g=c.clone(!0);g.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+l);g.is("tr")?g.children(":last").append('<div><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></div>"):g.is("ul")||g.is("ol")?g.append('<li><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></li>"):g.children(":first").append('<span><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></span>");g.find("*").each(function(){k(this, |
||||
a.prefix,h.val())});g.insertBefore(b(c));b(h).val(parseInt(h.val(),10)+1);l+=1;""!==f.val()&&0>=f.val()-h.val()&&m.parent().hide();g.find("a."+a.deleteCssClass).click(function(c){c.preventDefault();g.remove();--l;a.removed&&a.removed(g);b(document).trigger("formset:removed",[g,a.prefix]);c=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(c.length);(""===f.val()||0<f.val()-c.length)&&m.parent().show();var d,e,h=function(){k(this,a.prefix,d)};d=0;for(e=c.length;d<e;d++)k(b(c).get(d),a.prefix, |
||||
d),b(c.get(d)).find("*").each(h)});a.added&&a.added(g);b(document).trigger("formset:added",[g,a.prefix])})}return this};b.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null};b.fn.tabularFormset=function(d){var a=b(this),e=function(l){b(a.selector).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")}, |
||||
k=function(){"undefined"!==typeof SelectFilter&&(b(".selectfilter").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!0)}))},h=function(a){a.find(".prepopulated_field").each(function(){var f=b(this).find("input, select, textarea"),c=f.data("dependency_list")||[],d=[];b.each(c,function(b,c){d.push("#"+a.find(".field-"+c).find("input, select, textarea").attr("id"))}); |
||||
d.length&&f.prepopulate(d,f.attr("maxlength"))})};a.formset({prefix:d.prefix,addText:d.addText,formCssClass:"dynamic-"+d.prefix,deleteCssClass:"inline-deletelink",deleteText:d.deleteText,emptyCssClass:"empty-form",removed:e,added:function(a){h(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());k();e(a)}});return a};b.fn.stackedFormset=function(d){var a=b(this),e=function(d){b(a.selector).find(".inline_label").each(function(a){a+=1;b(this).html(b(this).html().replace(/(#\d+)/g, |
||||
"#"+a))})},k=function(){"undefined"!==typeof SelectFilter&&(b(".selectfilter").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!0)}))},h=function(a){a.find(".prepopulated_field").each(function(){var d=b(this).find("input, select, textarea"),c=d.data("dependency_list")||[],e=[];b.each(c,function(b,c){e.push("#"+a.find(".form-row .field-"+c).find("input, select, textarea").attr("id"))}); |
||||
e.length&&d.prepopulate(e,d.attr("maxlength"))})};a.formset({prefix:d.prefix,addText:d.addText,formCssClass:"dynamic-"+d.prefix,deleteCssClass:"inline-deletelink",deleteText:d.deleteText,emptyCssClass:"empty-form",removed:e,added:function(a){h(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());k();e(a)}});return a}})(django.jQuery); |
||||
@ -0,0 +1,8 @@ |
||||
/*global django:true, jQuery:false*/ |
||||
/* Puts the included jQuery into our own namespace using noConflict and passing |
||||
* it 'true'. This ensures that the included jQuery doesn't pollute the global |
||||
* namespace (i.e. this preserves pre-existing values for both window.$ and |
||||
* window.jQuery). |
||||
*/ |
||||
var django = django || {}; |
||||
django.jQuery = jQuery.noConflict(true); |
||||
@ -0,0 +1,42 @@ |
||||
/*global URLify*/ |
||||
(function($) { |
||||
'use strict'; |
||||
$.fn.prepopulate = function(dependencies, maxLength, allowUnicode) { |
||||
/* |
||||
Depends on urlify.js |
||||
Populates a selected field with the values of the dependent fields, |
||||
URLifies and shortens the string. |
||||
dependencies - array of dependent fields ids |
||||
maxLength - maximum length of the URLify'd string |
||||
allowUnicode - Unicode support of the URLify'd string |
||||
*/ |
||||
return this.each(function() { |
||||
var prepopulatedField = $(this); |
||||
|
||||
var populate = function() { |
||||
// Bail if the field's value has been changed by the user
|
||||
if (prepopulatedField.data('_changed')) { |
||||
return; |
||||
} |
||||
|
||||
var values = []; |
||||
$.each(dependencies, function(i, field) { |
||||
field = $(field); |
||||
if (field.val().length > 0) { |
||||
values.push(field.val()); |
||||
} |
||||
}); |
||||
prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode)); |
||||
}; |
||||
|
||||
prepopulatedField.data('_changed', false); |
||||
prepopulatedField.change(function() { |
||||
prepopulatedField.data('_changed', true); |
||||
}); |
||||
|
||||
if (!prepopulatedField.val()) { |
||||
$(dependencies.join(',')).keyup(populate).change(populate).focus(populate); |
||||
} |
||||
}); |
||||
}; |
||||
})(django.jQuery); |
||||
@ -0,0 +1 @@ |
||||
(function(c){c.fn.prepopulate=function(e,f,g){return this.each(function(){var a=c(this),b=function(){if(!a.data("_changed")){var b=[];c.each(e,function(a,d){d=c(d);0<d.val().length&&b.push(d.val())});a.val(URLify(b.join(" "),f,g))}};a.data("_changed",!1);a.change(function(){a.data("_changed",!0)});a.val()||c(e.join(",")).keyup(b).change(b).focus(b)})}})(django.jQuery); |
||||
@ -0,0 +1,106 @@ |
||||
(function() { |
||||
'use strict'; |
||||
var timeParsePatterns = [ |
||||
// 9
|
||||
{ |
||||
re: /^\d{1,2}$/i, |
||||
handler: function(bits) { |
||||
if (bits[0].length === 1) { |
||||
return '0' + bits[0] + ':00'; |
||||
} else { |
||||
return bits[0] + ':00'; |
||||
} |
||||
} |
||||
}, |
||||
// 13:00
|
||||
{ |
||||
re: /^\d{2}[:.]\d{2}$/i, |
||||
handler: function(bits) { |
||||
return bits[0].replace('.', ':'); |
||||
} |
||||
}, |
||||
// 9:00
|
||||
{ |
||||
re: /^\d[:.]\d{2}$/i, |
||||
handler: function(bits) { |
||||
return '0' + bits[0].replace('.', ':'); |
||||
} |
||||
}, |
||||
// 3 am / 3 a.m. / 3am
|
||||
{ |
||||
re: /^(\d+)\s*([ap])(?:.?m.?)?$/i, |
||||
handler: function(bits) { |
||||
var hour = parseInt(bits[1]); |
||||
if (hour === 12) { |
||||
hour = 0; |
||||
} |
||||
if (bits[2].toLowerCase() === 'p') { |
||||
if (hour === 12) { |
||||
hour = 0; |
||||
} |
||||
return (hour + 12) + ':00'; |
||||
} else { |
||||
if (hour < 10) { |
||||
return '0' + hour + ':00'; |
||||
} else { |
||||
return hour + ':00'; |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
// 3.30 am / 3:15 a.m. / 3.00am
|
||||
{ |
||||
re: /^(\d+)[.:](\d{2})\s*([ap]).?m.?$/i, |
||||
handler: function(bits) { |
||||
var hour = parseInt(bits[1]); |
||||
var mins = parseInt(bits[2]); |
||||
if (mins < 10) { |
||||
mins = '0' + mins; |
||||
} |
||||
if (hour === 12) { |
||||
hour = 0; |
||||
} |
||||
if (bits[3].toLowerCase() === 'p') { |
||||
if (hour === 12) { |
||||
hour = 0; |
||||
} |
||||
return (hour + 12) + ':' + mins; |
||||
} else { |
||||
if (hour < 10) { |
||||
return '0' + hour + ':' + mins; |
||||
} else { |
||||
return hour + ':' + mins; |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
// noon
|
||||
{ |
||||
re: /^no/i, |
||||
handler: function(bits) { |
||||
return '12:00'; |
||||
} |
||||
}, |
||||
// midnight
|
||||
{ |
||||
re: /^mid/i, |
||||
handler: function(bits) { |
||||
return '00:00'; |
||||
} |
||||
} |
||||
]; |
||||
|
||||
function parseTimeString(s) { |
||||
for (var i = 0; i < timeParsePatterns.length; i++) { |
||||
var re = timeParsePatterns[i].re; |
||||
var handler = timeParsePatterns[i].handler; |
||||
var bits = re.exec(s); |
||||
if (bits) { |
||||
return handler(bits); |
||||
} |
||||
} |
||||
return s; |
||||
} |
||||
|
||||
window.parseTimeString = parseTimeString; |
||||
})(); |
||||
@ -0,0 +1,171 @@ |
||||
/*global XRegExp*/ |
||||
(function() { |
||||
'use strict'; |
||||
|
||||
var LATIN_MAP = { |
||||
'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', |
||||
'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', |
||||
'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', |
||||
'Õ': 'O', 'Ö': 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', |
||||
'Ü': 'U', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à': 'a', |
||||
'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', |
||||
'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', |
||||
'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', |
||||
'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', |
||||
'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y' |
||||
}; |
||||
var LATIN_SYMBOLS_MAP = { |
||||
'©': '(c)' |
||||
}; |
||||
var GREEK_MAP = { |
||||
'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', |
||||
'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3', |
||||
'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f', |
||||
'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o', |
||||
'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's', 'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y', |
||||
'ΐ': 'i', 'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', |
||||
'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N', |
||||
'Ξ': '3', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y', |
||||
'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I', |
||||
'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I', 'Ϋ': 'Y' |
||||
}; |
||||
var TURKISH_MAP = { |
||||
'ş': 's', 'Ş': 'S', 'ı': 'i', 'İ': 'I', 'ç': 'c', 'Ç': 'C', 'ü': 'u', |
||||
'Ü': 'U', 'ö': 'o', 'Ö': 'O', 'ğ': 'g', 'Ğ': 'G' |
||||
}; |
||||
var ROMANIAN_MAP = { |
||||
'ă': 'a', 'î': 'i', 'ș': 's', 'ț': 't', 'â': 'a', |
||||
'Ă': 'A', 'Î': 'I', 'Ș': 'S', 'Ț': 'T', 'Â': 'A' |
||||
}; |
||||
var RUSSIAN_MAP = { |
||||
'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo', |
||||
'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', |
||||
'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', |
||||
'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': '', |
||||
'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya', |
||||
'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo', |
||||
'Ж': 'Zh', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M', |
||||
'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', |
||||
'Ф': 'F', 'Х': 'H', 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': '', |
||||
'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya' |
||||
}; |
||||
var UKRAINIAN_MAP = { |
||||
'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G', 'є': 'ye', 'і': 'i', |
||||
'ї': 'yi', 'ґ': 'g' |
||||
}; |
||||
var CZECH_MAP = { |
||||
'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', 'ť': 't', |
||||
'ů': 'u', 'ž': 'z', 'Č': 'C', 'Ď': 'D', 'Ě': 'E', 'Ň': 'N', 'Ř': 'R', |
||||
'Š': 'S', 'Ť': 'T', 'Ů': 'U', 'Ž': 'Z' |
||||
}; |
||||
var POLISH_MAP = { |
||||
'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ó': 'o', 'ś': 's', |
||||
'ź': 'z', 'ż': 'z', |
||||
'Ą': 'A', 'Ć': 'C', 'Ę': 'E', 'Ł': 'L', 'Ń': 'N', 'Ó': 'O', 'Ś': 'S', |
||||
'Ź': 'Z', 'Ż': 'Z' |
||||
}; |
||||
var LATVIAN_MAP = { |
||||
'ā': 'a', 'č': 'c', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l', |
||||
'ņ': 'n', 'š': 's', 'ū': 'u', 'ž': 'z', |
||||
'Ā': 'A', 'Č': 'C', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'I', 'Ķ': 'K', 'Ļ': 'L', |
||||
'Ņ': 'N', 'Š': 'S', 'Ū': 'U', 'Ž': 'Z' |
||||
}; |
||||
var ARABIC_MAP = { |
||||
'أ': 'a', 'ب': 'b', 'ت': 't', 'ث': 'th', 'ج': 'g', 'ح': 'h', 'خ': 'kh', 'د': 'd', |
||||
'ذ': 'th', 'ر': 'r', 'ز': 'z', 'س': 's', 'ش': 'sh', 'ص': 's', 'ض': 'd', 'ط': 't', |
||||
'ظ': 'th', 'ع': 'aa', 'غ': 'gh', 'ف': 'f', 'ق': 'k', 'ك': 'k', 'ل': 'l', 'م': 'm', |
||||
'ن': 'n', 'ه': 'h', 'و': 'o', 'ي': 'y' |
||||
}; |
||||
var LITHUANIAN_MAP = { |
||||
'ą': 'a', 'č': 'c', 'ę': 'e', 'ė': 'e', 'į': 'i', 'š': 's', 'ų': 'u', |
||||
'ū': 'u', 'ž': 'z', |
||||
'Ą': 'A', 'Č': 'C', 'Ę': 'E', 'Ė': 'E', 'Į': 'I', 'Š': 'S', 'Ų': 'U', |
||||
'Ū': 'U', 'Ž': 'Z' |
||||
}; |
||||
var SERBIAN_MAP = { |
||||
'ђ': 'dj', 'ј': 'j', 'љ': 'lj', 'њ': 'nj', 'ћ': 'c', 'џ': 'dz', |
||||
'đ': 'dj', 'Ђ': 'Dj', 'Ј': 'j', 'Љ': 'Lj', 'Њ': 'Nj', 'Ћ': 'C', |
||||
'Џ': 'Dz', 'Đ': 'Dj' |
||||
}; |
||||
var AZERBAIJANI_MAP = { |
||||
'ç': 'c', 'ə': 'e', 'ğ': 'g', 'ı': 'i', 'ö': 'o', 'ş': 's', 'ü': 'u', |
||||
'Ç': 'C', 'Ə': 'E', 'Ğ': 'G', 'İ': 'I', 'Ö': 'O', 'Ş': 'S', 'Ü': 'U' |
||||
}; |
||||
|
||||
var ALL_DOWNCODE_MAPS = [ |
||||
LATIN_MAP, |
||||
LATIN_SYMBOLS_MAP, |
||||
GREEK_MAP, |
||||
TURKISH_MAP, |
||||
ROMANIAN_MAP, |
||||
RUSSIAN_MAP, |
||||
UKRAINIAN_MAP, |
||||
CZECH_MAP, |
||||
POLISH_MAP, |
||||
LATVIAN_MAP, |
||||
ARABIC_MAP, |
||||
LITHUANIAN_MAP, |
||||
SERBIAN_MAP, |
||||
AZERBAIJANI_MAP |
||||
]; |
||||
|
||||
var Downcoder = { |
||||
'Initialize': function() { |
||||
if (Downcoder.map) { // already made
|
||||
return; |
||||
} |
||||
Downcoder.map = {}; |
||||
Downcoder.chars = []; |
||||
for (var i = 0; i < ALL_DOWNCODE_MAPS.length; i++) { |
||||
var lookup = ALL_DOWNCODE_MAPS[i]; |
||||
for (var c in lookup) { |
||||
if (lookup.hasOwnProperty(c)) { |
||||
Downcoder.map[c] = lookup[c]; |
||||
} |
||||
} |
||||
} |
||||
for (var k in Downcoder.map) { |
||||
if (Downcoder.map.hasOwnProperty(k)) { |
||||
Downcoder.chars.push(k); |
||||
} |
||||
} |
||||
Downcoder.regex = new RegExp(Downcoder.chars.join('|'), 'g'); |
||||
} |
||||
}; |
||||
|
||||
function downcode(slug) { |
||||
Downcoder.Initialize(); |
||||
return slug.replace(Downcoder.regex, function(m) { |
||||
return Downcoder.map[m]; |
||||
}); |
||||
} |
||||
|
||||
|
||||
function URLify(s, num_chars, allowUnicode) { |
||||
// changes, e.g., "Petty theft" to "petty-theft"
|
||||
// remove all these words from the string before urlifying
|
||||
if (!allowUnicode) { |
||||
s = downcode(s); |
||||
} |
||||
var removelist = [ |
||||
"a", "an", "as", "at", "before", "but", "by", "for", "from", "is", |
||||
"in", "into", "like", "of", "off", "on", "onto", "per", "since", |
||||
"than", "the", "this", "that", "to", "up", "via", "with" |
||||
]; |
||||
var r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi'); |
||||
s = s.replace(r, ''); |
||||
// if downcode doesn't hit, the char will be stripped here
|
||||
if (allowUnicode) { |
||||
// Keep Unicode letters including both lowercase and uppercase
|
||||
// characters, whitespace, and dash; remove other characters.
|
||||
s = XRegExp.replace(s, XRegExp('[^-_\\p{L}\\p{N}\\s]', 'g'), ''); |
||||
} else { |
||||
s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars
|
||||
} |
||||
s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
|
||||
s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens
|
||||
s = s.toLowerCase(); // convert to lowercase
|
||||
return s.substring(0, num_chars); // trim to first num_chars chars
|
||||
} |
||||
window.URLify = URLify; |
||||
})(); |
||||
@ -0,0 +1,26 @@ |
||||
Copyright jQuery Foundation and other contributors, https://jquery.org/ |
||||
|
||||
This software consists of voluntary contributions made by many |
||||
individuals. For exact contribution history, see the revision history |
||||
available at https://github.com/jquery/jquery |
||||
|
||||
==== |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining |
||||
a copy of this software and associated documentation files (the |
||||
"Software"), to deal in the Software without restriction, including |
||||
without limitation the rights to use, copy, modify, merge, publish, |
||||
distribute, sublicense, and/or sell copies of the Software, and to |
||||
permit persons to whom the Software is furnished to do so, subject to |
||||
the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be |
||||
included in all copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
@ -0,0 +1,21 @@ |
||||
The MIT License |
||||
|
||||
Copyright (c) 2007-2012 Steven Levithan <http://xregexp.com/> |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
of this software and associated documentation files (the "Software"), to deal |
||||
in the Software without restriction, including without limitation the rights |
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
copies of the Software, and to permit persons to whom the Software is |
||||
furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in |
||||
all copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
||||
THE SOFTWARE. |
||||
@ -0,0 +1,360 @@ |
||||
#monkey_404 { |
||||
width: 800px; |
||||
height: 480px; |
||||
position: absolute; |
||||
left: 50%; |
||||
top: 50%; |
||||
margin-left: -400px; |
||||
margin-top: -240px; |
||||
} |
||||
#monkey_404 .st0 { |
||||
fill: #E8EBED; |
||||
} |
||||
#monkey_404 .st1 { |
||||
fill: #FFFFFF; |
||||
} |
||||
#monkey_404 .st2 { |
||||
fill: none; |
||||
stroke: #89949B; |
||||
stroke-width: 3; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 .st3 { |
||||
fill: #E8EBED; |
||||
stroke: #89949B; |
||||
stroke-width: 3; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 .st4 { |
||||
fill: #FFFFFF; |
||||
stroke: #89949B; |
||||
stroke-width: 3; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 .st5 { |
||||
fill: none; |
||||
stroke: #89949B; |
||||
stroke-width: 3; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 .st6 { |
||||
fill: none; |
||||
stroke: #89949B; |
||||
stroke-width: 4; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 .st7 { |
||||
fill: #FFFFFF; |
||||
stroke: #89949B; |
||||
stroke-width: 2; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 .st8 { |
||||
fill: #89949B; |
||||
} |
||||
#monkey_404 .st9 { |
||||
fill: #89949B; |
||||
} |
||||
#monkey_404 .st10 { |
||||
fill: none; |
||||
stroke: #89949B; |
||||
stroke-width: 2; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 .st11 { |
||||
fill: #FFFFFF; |
||||
} |
||||
#monkey_404 .st12 { |
||||
fill: #FFFFFF; |
||||
stroke: #8894A0; |
||||
stroke-width: 3; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 .st13 { |
||||
fill: #FFFFFF; |
||||
stroke: #89949B; |
||||
stroke-width: 3; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 .st14 { |
||||
fill: none; |
||||
stroke: #89949B; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 .st15 { |
||||
fill: none; |
||||
stroke: #89949B; |
||||
stroke-linecap: round; |
||||
stroke-linejoin: round; |
||||
stroke-miterlimit: 10; |
||||
} |
||||
#monkey_404 #arm { |
||||
-webkit-transform-origin: 155px 292px; |
||||
-moz-transform-origin: 155px 292px; |
||||
-o-transform-origin: 155px 292px; |
||||
-ms-transform-origin: 155px 292px; |
||||
transform-origin: 155px 292px; |
||||
-webkit-transform: rotateZ(-2deg); |
||||
-moz-transform: rotateZ(-2deg); |
||||
-o-transform: rotateZ(-2deg); |
||||
-ms-transform: rotateZ(-2deg); |
||||
transform: rotateZ(-2deg); |
||||
} |
||||
#monkey_404 #monkey { |
||||
-webkit-animation: monkey-breathe 3s infinite ease-in-out; |
||||
-moz-animation: monkey-breathe 3s infinite ease-in-out; |
||||
-o-animation: monkey-breathe 3s infinite ease-in-out; |
||||
animation: monkey-breathe 3s infinite ease-in-out; |
||||
} |
||||
#monkey_404 #zelda, |
||||
#monkey_404 #tetris, |
||||
#monkey_404 #moon, |
||||
#monkey_404 #star_a, |
||||
#monkey_404 #star_b, |
||||
#monkey_404 #star_c, |
||||
#monkey_404 #star_d, |
||||
#monkey_404 #number_4, |
||||
#monkey_404 #number_4_2, |
||||
#monkey_404 #number_0, |
||||
#monkey_404 #sword { |
||||
-webkit-animation: levitate 3s infinite ease-in-out; |
||||
-moz-animation: levitate 3s infinite ease-in-out; |
||||
-o-animation: levitate 3s infinite ease-in-out; |
||||
animation: levitate 3s infinite ease-in-out; |
||||
} |
||||
#monkey_404 #zelda { |
||||
-webkit-animation-delay: 0s; |
||||
-moz-animation-delay: 0s; |
||||
-o-animation-delay: 0s; |
||||
animation-delay: 0s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #tetris { |
||||
-webkit-animation-delay: 1s; |
||||
-moz-animation-delay: 1s; |
||||
-o-animation-delay: 1s; |
||||
animation-delay: 1s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #moon { |
||||
-webkit-animation-delay: 0.5s; |
||||
-moz-animation-delay: 0.5s; |
||||
-o-animation-delay: 0.5s; |
||||
animation-delay: 0.5s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #star_a { |
||||
-webkit-animation-delay: 0s; |
||||
-moz-animation-delay: 0s; |
||||
-o-animation-delay: 0s; |
||||
animation-delay: 0s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #star_b { |
||||
-webkit-animation-delay: 0.5s; |
||||
-moz-animation-delay: 0.5s; |
||||
-o-animation-delay: 0.5s; |
||||
animation-delay: 0.5s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #star_c { |
||||
-webkit-animation-delay: 1s; |
||||
-moz-animation-delay: 1s; |
||||
-o-animation-delay: 1s; |
||||
animation-delay: 1s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #star_d { |
||||
-webkit-animation-delay: 1.5s; |
||||
-moz-animation-delay: 1.5s; |
||||
-o-animation-delay: 1.5s; |
||||
animation-delay: 1.5s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #number_4 { |
||||
-webkit-animation-delay: 0s; |
||||
-moz-animation-delay: 0s; |
||||
-o-animation-delay: 0s; |
||||
animation-delay: 0s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #number_4_2 { |
||||
-webkit-animation-delay: 1s; |
||||
-moz-animation-delay: 1s; |
||||
-o-animation-delay: 1s; |
||||
animation-delay: 1s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #number_0 { |
||||
-webkit-animation-delay: 0.5s; |
||||
-moz-animation-delay: 0.5s; |
||||
-o-animation-delay: 0.5s; |
||||
animation-delay: 0.5s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #sword { |
||||
-webkit-animation-delay: 1.5s; |
||||
-moz-animation-delay: 1.5s; |
||||
-o-animation-delay: 1.5s; |
||||
animation-delay: 1.5s; |
||||
-webkit-animation-duration: 3s; |
||||
-moz-animation-duration: 3s; |
||||
-o-animation-duration: 3s; |
||||
animation-duration: 3s; |
||||
} |
||||
#monkey_404 #eye_left { |
||||
-webkit-transform-origin: 191px 257px; |
||||
-moz-transform-origin: 191px 257px; |
||||
-o-transform-origin: 191px 257px; |
||||
-ms-transform-origin: 191px 257px; |
||||
transform-origin: 191px 257px; |
||||
-webkit-animation: blink-l 12s infinite ease-in-out; |
||||
-moz-animation: blink-l 12s infinite ease-in-out; |
||||
-o-animation: blink-l 12s infinite ease-in-out; |
||||
animation: blink-l 12s infinite ease-in-out; |
||||
} |
||||
#monkey_404 #eye_right { |
||||
-webkit-transform-origin: 205px 256px; |
||||
-moz-transform-origin: 205px 256px; |
||||
-o-transform-origin: 205px 256px; |
||||
-ms-transform-origin: 205px 256px; |
||||
transform-origin: 205px 256px; |
||||
-webkit-animation: blink-r 12s infinite ease-in-out; |
||||
-moz-animation: blink-r 12s infinite ease-in-out; |
||||
-o-animation: blink-r 12s infinite ease-in-out; |
||||
animation: blink-r 12s infinite ease-in-out; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes arm-rotate{ 0% { -webkit-transform: rotateZ(-3deg);} 50% { -webkit-transform: rotateZ(6deg);}} |
||||
@-moz-keyframes arm-rotate{ 0% { -moz-transform: rotateZ(-3deg);} 50% { -moz-transform: rotateZ(6deg);}} |
||||
@-o-keyframes arm-rotate{ 0% { -o-transform: rotateZ(-3deg);} 50% { -o-transform: rotateZ(6deg);}} |
||||
@keyframes arm-rotate{ 0% {-webkit-transform: rotateZ(-3deg);-moz-transform: rotateZ(-3deg);-ms-transform: rotateZ(-3deg);transform: rotateZ(-3deg);} 50% {-webkit-transform: rotateZ(6deg);-moz-transform: rotateZ(6deg);-ms-transform: rotateZ(6deg);transform: rotateZ(6deg);}; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes arm-rotate{ 0% { -webkit-transform: rotateZ(-3deg);} 50% { -webkit-transform: rotateZ(6deg);}} |
||||
@-moz-keyframes arm-rotate{ 0% { -moz-transform: rotateZ(-3deg);} 50% { -moz-transform: rotateZ(6deg);}} |
||||
@-o-keyframes arm-rotate{ 0% { -o-transform: rotateZ(-3deg);} 50% { -o-transform: rotateZ(6deg);}} |
||||
@keyframes arm-rotate{ 0% {-webkit-transform: rotateZ(-3deg);-moz-transform: rotateZ(-3deg);-ms-transform: rotateZ(-3deg);transform: rotateZ(-3deg);} 50% {-webkit-transform: rotateZ(6deg);-moz-transform: rotateZ(6deg);-ms-transform: rotateZ(6deg);transform: rotateZ(6deg);}; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes monkey-breathe{ 0% { -webkit-transform: translate3d(0,0,0);} 50% { -webkit-transform: translate3d(0,1px,0);}} |
||||
@-moz-keyframes monkey-breathe{ 0% { -moz-transform: translate3d(0,0,0);} 50% { -moz-transform: translate3d(0,1px,0);}} |
||||
@-o-keyframes monkey-breathe{ 0% { -o-transform: translate3d(0,0,0);} 50% { -o-transform: translate3d(0,1px,0);}} |
||||
@keyframes monkey-breathe{ 0% {-webkit-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);-ms-transform: translate3d(0,0,0);transform: translate3d(0,0,0);} 50% {-webkit-transform: translate3d(0,1px,0);-moz-transform: translate3d(0,1px,0);-ms-transform: translate3d(0,1px,0);transform: translate3d(0,1px,0);}; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes monkey-breathe{ 0% { -webkit-transform: translate3d(0,0,0);} 50% { -webkit-transform: translate3d(0,1px,0);}} |
||||
@-moz-keyframes monkey-breathe{ 0% { -moz-transform: translate3d(0,0,0);} 50% { -moz-transform: translate3d(0,1px,0);}} |
||||
@-o-keyframes monkey-breathe{ 0% { -o-transform: translate3d(0,0,0);} 50% { -o-transform: translate3d(0,1px,0);}} |
||||
@keyframes monkey-breathe{ 0% {-webkit-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);-ms-transform: translate3d(0,0,0);transform: translate3d(0,0,0);} 50% {-webkit-transform: translate3d(0,1px,0);-moz-transform: translate3d(0,1px,0);-ms-transform: translate3d(0,1px,0);transform: translate3d(0,1px,0);}; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes levitate{ 0% { -webkit-transform: translate3d(0,0,0);} 50% { -webkit-transform: translate3d(0,5px,0);}} |
||||
@-moz-keyframes levitate{ 0% { -moz-transform: translate3d(0,0,0);} 50% { -moz-transform: translate3d(0,5px,0);}} |
||||
@-o-keyframes levitate{ 0% { -o-transform: translate3d(0,0,0);} 50% { -o-transform: translate3d(0,5px,0);}} |
||||
@keyframes levitate{ 0% {-webkit-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);-ms-transform: translate3d(0,0,0);transform: translate3d(0,0,0);} 50% {-webkit-transform: translate3d(0,5px,0);-moz-transform: translate3d(0,5px,0);-ms-transform: translate3d(0,5px,0);transform: translate3d(0,5px,0);}; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes levitate{ 0% { -webkit-transform: translate3d(0,0,0);} 50% { -webkit-transform: translate3d(0,5px,0);}} |
||||
@-moz-keyframes levitate{ 0% { -moz-transform: translate3d(0,0,0);} 50% { -moz-transform: translate3d(0,5px,0);}} |
||||
@-o-keyframes levitate{ 0% { -o-transform: translate3d(0,0,0);} 50% { -o-transform: translate3d(0,5px,0);}} |
||||
@keyframes levitate{ 0% {-webkit-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);-ms-transform: translate3d(0,0,0);transform: translate3d(0,0,0);} 50% {-webkit-transform: translate3d(0,5px,0);-moz-transform: translate3d(0,5px,0);-ms-transform: translate3d(0,5px,0);transform: translate3d(0,5px,0);}; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes star{ 0% { -webkit-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -webkit-transform: translate3d(0,5px,0) rotateZ(180deg);}} |
||||
@-moz-keyframes star{ 0% { -moz-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -moz-transform: translate3d(0,5px,0) rotateZ(180deg);}} |
||||
@-o-keyframes star{ 0% { -o-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -o-transform: translate3d(0,5px,0) rotateZ(180deg);}} |
||||
@keyframes star{ 0% {-webkit-transform: translate3d(0,0,0) rotateZ(0deg);-moz-transform: translate3d(0,0,0) rotateZ(0deg);-ms-transform: translate3d(0,0,0) rotateZ(0deg);transform: translate3d(0,0,0) rotateZ(0deg);} 50% {-webkit-transform: translate3d(0,5px,0) rotateZ(180deg);-moz-transform: translate3d(0,5px,0) rotateZ(180deg);-ms-transform: translate3d(0,5px,0) rotateZ(180deg);transform: translate3d(0,5px,0) rotateZ(180deg);}; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes star{ 0% { -webkit-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -webkit-transform: translate3d(0,5px,0) rotateZ(180deg);}} |
||||
@-moz-keyframes star{ 0% { -moz-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -moz-transform: translate3d(0,5px,0) rotateZ(180deg);}} |
||||
@-o-keyframes star{ 0% { -o-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -o-transform: translate3d(0,5px,0) rotateZ(180deg);}} |
||||
@keyframes star{ 0% {-webkit-transform: translate3d(0,0,0) rotateZ(0deg);-moz-transform: translate3d(0,0,0) rotateZ(0deg);-ms-transform: translate3d(0,0,0) rotateZ(0deg);transform: translate3d(0,0,0) rotateZ(0deg);} 50% {-webkit-transform: translate3d(0,5px,0) rotateZ(180deg);-moz-transform: translate3d(0,5px,0) rotateZ(180deg);-ms-transform: translate3d(0,5px,0) rotateZ(180deg);transform: translate3d(0,5px,0) rotateZ(180deg);}; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes blink-l{ 0% { -webkit-transform: rotateX(0deg); } 2% { -webkit-transform: rotateX(80deg); } 4%,20% { -webkit-transform: rotateX(0deg); } 22% { -webkit-transform: rotateX(80deg); } 24%,30% { -webkit-transform: rotateX(0deg); } 32% { -webkit-transform: rotateX(80deg); } 34%,70% { -webkit-transform: rotateX(0deg); } 72% { -webkit-transform: rotateX(80deg); } 74%,100% { -webkit-transform: rotateX(0deg); }} |
||||
@-moz-keyframes blink-l{ 0% { -moz-transform: rotateX(0deg); } 2% { -moz-transform: rotateX(80deg); } 4%,20% { -moz-transform: rotateX(0deg); } 22% { -moz-transform: rotateX(80deg); } 24%,30% { -moz-transform: rotateX(0deg); } 32% { -moz-transform: rotateX(80deg); } 34%,70% { -moz-transform: rotateX(0deg); } 72% { -moz-transform: rotateX(80deg); } 74%,100% { -moz-transform: rotateX(0deg); }} |
||||
@-o-keyframes blink-l{ 0% { -o-transform: rotateX(0deg); } 2% { -o-transform: rotateX(80deg); } 4%,20% { -o-transform: rotateX(0deg); } 22% { -o-transform: rotateX(80deg); } 24%,30% { -o-transform: rotateX(0deg); } 32% { -o-transform: rotateX(80deg); } 34%,70% { -o-transform: rotateX(0deg); } 72% { -o-transform: rotateX(80deg); } 74%,100% { -o-transform: rotateX(0deg); }} |
||||
@keyframes blink-l{ 0% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 2% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 4%,20% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 22% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 24%,30% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 32% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 34%,70% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 72% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 74%,100% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); }; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes blink-l{ 0% { -webkit-transform: rotateX(0deg); } 2% { -webkit-transform: rotateX(80deg); } 4%,20% { -webkit-transform: rotateX(0deg); } 22% { -webkit-transform: rotateX(80deg); } 24%,30% { -webkit-transform: rotateX(0deg); } 32% { -webkit-transform: rotateX(80deg); } 34%,70% { -webkit-transform: rotateX(0deg); } 72% { -webkit-transform: rotateX(80deg); } 74%,100% { -webkit-transform: rotateX(0deg); }} |
||||
@-moz-keyframes blink-l{ 0% { -moz-transform: rotateX(0deg); } 2% { -moz-transform: rotateX(80deg); } 4%,20% { -moz-transform: rotateX(0deg); } 22% { -moz-transform: rotateX(80deg); } 24%,30% { -moz-transform: rotateX(0deg); } 32% { -moz-transform: rotateX(80deg); } 34%,70% { -moz-transform: rotateX(0deg); } 72% { -moz-transform: rotateX(80deg); } 74%,100% { -moz-transform: rotateX(0deg); }} |
||||
@-o-keyframes blink-l{ 0% { -o-transform: rotateX(0deg); } 2% { -o-transform: rotateX(80deg); } 4%,20% { -o-transform: rotateX(0deg); } 22% { -o-transform: rotateX(80deg); } 24%,30% { -o-transform: rotateX(0deg); } 32% { -o-transform: rotateX(80deg); } 34%,70% { -o-transform: rotateX(0deg); } 72% { -o-transform: rotateX(80deg); } 74%,100% { -o-transform: rotateX(0deg); }} |
||||
@keyframes blink-l{ 0% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 2% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 4%,20% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 22% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 24%,30% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 32% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 34%,70% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 72% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 74%,100% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); }; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes blink-r{ 0% { -webkit-transform: rotateX(0deg); } 2% { -webkit-transform: rotateX(80deg); } 4%,30% { -webkit-transform: rotateX(0deg); } 32% { -webkit-transform: rotateX(80deg); } 34%,50% { -webkit-transform: rotateX(0deg); } 52% { -webkit-transform: rotateX(80deg); } 54%,100% { -webkit-transform: rotateX(0deg); } } |
||||
@-moz-keyframes blink-r{ 0% { -moz-transform: rotateX(0deg); } 2% { -moz-transform: rotateX(80deg); } 4%,30% { -moz-transform: rotateX(0deg); } 32% { -moz-transform: rotateX(80deg); } 34%,50% { -moz-transform: rotateX(0deg); } 52% { -moz-transform: rotateX(80deg); } 54%,100% { -moz-transform: rotateX(0deg); } } |
||||
@-o-keyframes blink-r{ 0% { -o-transform: rotateX(0deg); } 2% { -o-transform: rotateX(80deg); } 4%,30% { -o-transform: rotateX(0deg); } 32% { -o-transform: rotateX(80deg); } 34%,50% { -o-transform: rotateX(0deg); } 52% { -o-transform: rotateX(80deg); } 54%,100% { -o-transform: rotateX(0deg); } } |
||||
@keyframes blink-r{ 0% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 2% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 4%,30% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 32% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 34%,50% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 52% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 54%,100% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } ; |
||||
} |
||||
lesshat-selector { |
||||
-lh-property: 0; } |
||||
@-webkit-keyframes blink-r{ 0% { -webkit-transform: rotateX(0deg); } 2% { -webkit-transform: rotateX(80deg); } 4%,30% { -webkit-transform: rotateX(0deg); } 32% { -webkit-transform: rotateX(80deg); } 34%,50% { -webkit-transform: rotateX(0deg); } 52% { -webkit-transform: rotateX(80deg); } 54%,100% { -webkit-transform: rotateX(0deg); } } |
||||
@-moz-keyframes blink-r{ 0% { -moz-transform: rotateX(0deg); } 2% { -moz-transform: rotateX(80deg); } 4%,30% { -moz-transform: rotateX(0deg); } 32% { -moz-transform: rotateX(80deg); } 34%,50% { -moz-transform: rotateX(0deg); } 52% { -moz-transform: rotateX(80deg); } 54%,100% { -moz-transform: rotateX(0deg); } } |
||||
@-o-keyframes blink-r{ 0% { -o-transform: rotateX(0deg); } 2% { -o-transform: rotateX(80deg); } 4%,30% { -o-transform: rotateX(0deg); } 32% { -o-transform: rotateX(80deg); } 34%,50% { -o-transform: rotateX(0deg); } 52% { -o-transform: rotateX(80deg); } 54%,100% { -o-transform: rotateX(0deg); } } |
||||
@keyframes blink-r{ 0% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 2% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 4%,30% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 32% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 34%,50% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 52% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 54%,100% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } ; |
||||
} |
||||
@ -0,0 +1,123 @@ |
||||
@media (min-width: 768px) { |
||||
.app-aside, |
||||
.app-asider, |
||||
.navbar-header { |
||||
width: 200px; |
||||
background: #fff !important; |
||||
} |
||||
.navbar-collapse, |
||||
.app-content, |
||||
.app-footer { |
||||
margin-left: 200px; |
||||
} |
||||
.app-aside-right { |
||||
position: absolute; |
||||
top: 50px; |
||||
right: 0; |
||||
bottom: 0; |
||||
z-index: 1000; |
||||
} |
||||
.app-aside-right.pos-fix { |
||||
z-index: 1010; |
||||
} |
||||
.visible-folded { |
||||
display: none; |
||||
} |
||||
.app-aside-folded .hidden-folded { |
||||
display: none !important; |
||||
} |
||||
.app-aside-folded .visible-folded { |
||||
display: inherit; |
||||
} |
||||
.app-aside-folded .text-center-folded { |
||||
text-align: center; |
||||
} |
||||
.app-aside-folded .pull-none-folded { |
||||
float: none !important; |
||||
} |
||||
.app-aside-folded .w-auto-folded { |
||||
width: auto; |
||||
} |
||||
.app-aside-folded .app-aside, |
||||
.app-aside-folded .navbar-header { |
||||
width: 60px; |
||||
} |
||||
.app-aside-folded .navbar-collapse, |
||||
.app-aside-folded .app-content, |
||||
.app-aside-folded .app-footer { |
||||
margin-left: 60px; |
||||
} |
||||
.app-aside-folded .app-header .navbar-brand { |
||||
display: block; |
||||
padding: 0; |
||||
} |
||||
.app-aside-fixed .app-header .navbar-header { |
||||
position: fixed; |
||||
} |
||||
.app-aside-fixed .aside-wrap { |
||||
position: fixed; |
||||
top: 50px; |
||||
bottom: 0; |
||||
left: 0; |
||||
z-index: 1000; |
||||
width: 199px; |
||||
overflow: hidden; |
||||
} |
||||
.app-aside-fixed .aside-wrap .navi-wrap { |
||||
position: relative; |
||||
width: 217px; |
||||
height: 100%; |
||||
overflow-x: hidden; |
||||
overflow-y: scroll; |
||||
-webkit-overflow-scrolling: touch; |
||||
} |
||||
.app-aside-fixed .aside-wrap .navi-wrap::-webkit-scrollbar { |
||||
-webkit-appearance: none; |
||||
} |
||||
.app-aside-fixed .aside-wrap .navi-wrap::-webkit-scrollbar:vertical { |
||||
width: 17px; |
||||
} |
||||
.app-aside-fixed .aside-wrap .navi-wrap > * { |
||||
width: 200px; |
||||
} |
||||
.smart .app-aside-fixed .aside-wrap .navi-wrap { |
||||
width: 200px; |
||||
} |
||||
.app-aside-fixed.app-aside-folded .app-aside { |
||||
position: fixed; |
||||
top: 0; |
||||
bottom: 0; |
||||
z-index: 1010; |
||||
} |
||||
.app-aside-fixed.app-aside-folded .aside-wrap { |
||||
width: 59px; |
||||
} |
||||
.app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap { |
||||
width: 77px; |
||||
} |
||||
.app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap > * { |
||||
width: 60px; |
||||
} |
||||
.smart .app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap { |
||||
width: 60px; |
||||
} |
||||
.bg-auto:before { |
||||
position: absolute; |
||||
top: 0; |
||||
bottom: 0; |
||||
z-index: -1; |
||||
width: inherit; |
||||
background-color: inherit; |
||||
border: inherit; |
||||
content: ""; |
||||
} |
||||
.bg-auto.b-l:before { |
||||
margin-left: -1px; |
||||
} |
||||
.bg-auto.b-r:before { |
||||
margin-right: -1px; |
||||
} |
||||
.col.show { |
||||
display: table-cell !important; |
||||
} |
||||
} |
||||
@ -0,0 +1,415 @@ |
||||
/* Product grid */ |
||||
|
||||
.grid { |
||||
position: relative; |
||||
overflow: hidden; |
||||
margin: 0 auto; |
||||
padding: 1.5em 0 8em; |
||||
text-align: center; |
||||
-webkit-user-select: none; |
||||
-moz-user-select: none; |
||||
-ms-user-select: none; |
||||
user-select: none; |
||||
-webkit-touch-callout: none; |
||||
-khtml-user-select: none; |
||||
} |
||||
|
||||
/* Loader */ |
||||
.grid__loader { |
||||
display: none; |
||||
margin: 3em auto 0; |
||||
} |
||||
|
||||
.grid--loading .grid__loader { |
||||
display: block; |
||||
} |
||||
|
||||
/* Clearfix */ |
||||
|
||||
.grid:after { |
||||
content: ''; |
||||
display: block; |
||||
clear: both; |
||||
} |
||||
|
||||
/* Grid items */ |
||||
|
||||
.grid__sizer, |
||||
.grid__item { |
||||
position: relative; |
||||
float: left; |
||||
width: 20%; |
||||
padding: .75em; |
||||
} |
||||
|
||||
.no-touch .grid__sizer, |
||||
.no-touch .grid__item { |
||||
padding: .75em .75em 1.25em; |
||||
} |
||||
|
||||
.grid--loading .grid__item { |
||||
visibility: hidden; |
||||
} |
||||
|
||||
.grid__item--size-a { |
||||
width: 40%; |
||||
} |
||||
|
||||
/* Gallery */ |
||||
|
||||
.slider { |
||||
padding: 0; |
||||
border-radius: 5px; |
||||
background: #24252a; |
||||
} |
||||
|
||||
.no-touch .slider { |
||||
padding: 0 0 1.25em; |
||||
} |
||||
|
||||
.slider__item { |
||||
width: 100%; |
||||
padding: 1em; |
||||
} |
||||
|
||||
.slider__item img { |
||||
width: 100%; |
||||
} |
||||
/* Flickity page dots */ |
||||
|
||||
.slider .flickity-page-dots { |
||||
bottom: 20px; |
||||
opacity: 0; |
||||
-webkit-transition: opacity .3s; |
||||
transition: opacity .3s; |
||||
} |
||||
|
||||
.no-touch .slider:hover .flickity-page-dots { |
||||
opacity: 1; |
||||
} |
||||
|
||||
.slider .flickity-page-dots .dot { |
||||
background: #131417; |
||||
} |
||||
|
||||
/* Product meta */ |
||||
|
||||
.meta { |
||||
position: relative; |
||||
margin: 10px 0 0; |
||||
padding: 0 60px 0 0; |
||||
text-align: left; |
||||
} |
||||
|
||||
.meta__brand { |
||||
font-size: .85em; |
||||
font-weight: bold; |
||||
display: block; |
||||
color: #595b64; |
||||
} |
||||
|
||||
.meta__title { |
||||
font-size: .95em; |
||||
font-weight: bold; |
||||
margin: 0; |
||||
padding: .4em 0 .1em; |
||||
} |
||||
|
||||
.meta__price { |
||||
font-size: .95em; |
||||
font-weight: bold; |
||||
position: absolute; |
||||
top: .45em; |
||||
right: .25em; |
||||
color: #595b64; |
||||
} |
||||
|
||||
/* Action style */ |
||||
|
||||
.action { |
||||
font-family: Avenir, 'Helvetica Neue', 'Lato', 'Segoe UI', Helvetica, Arial, sans-serif; |
||||
font-size: 1.05em; |
||||
position: relative; |
||||
overflow: hidden; |
||||
margin: 0; |
||||
padding: .25em; |
||||
cursor: pointer; |
||||
color: #fff; |
||||
border: none; |
||||
background: none; |
||||
} |
||||
|
||||
.action:focus { |
||||
outline: none; |
||||
} |
||||
|
||||
.action--button { |
||||
color: #5c5edc; |
||||
} |
||||
|
||||
.no-touch .action--button:hover { |
||||
color: #fff; |
||||
outline: none; |
||||
} |
||||
|
||||
.text-hidden { |
||||
position: absolute; |
||||
top: 200%; |
||||
} |
||||
|
||||
/* Add to cart button */ |
||||
|
||||
.action--buy { |
||||
position: absolute; |
||||
top: 0; |
||||
right: 0; |
||||
padding: 1.85em 2.35em; |
||||
-webkit-transition: opacity .3s, -webkit-transform .3s; |
||||
transition: opacity .3s, transform .3s; |
||||
-webkit-transform: translate3d(-5px, 0, 0); |
||||
transform: translate3d(-5px, 0, 0); |
||||
} |
||||
|
||||
.no-touch .action--buy { |
||||
opacity: 0; |
||||
} |
||||
|
||||
.no-touch .grid__item:hover .action--buy { |
||||
opacity: 1; |
||||
-webkit-transform: translate3d(0, 0, 0); |
||||
transform: translate3d(0, 0, 0); |
||||
} |
||||
|
||||
/* Fixed bottom bar */ |
||||
|
||||
.bar { |
||||
position: fixed; |
||||
z-index: 100; |
||||
bottom: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
padding: 1.75em 5em; |
||||
text-align: center; |
||||
background: #191a1b; |
||||
-webkit-transform: translate3d(0, 0, 0); |
||||
/* Fix for Chrome flicker on Mac ...party like we're in 2012! */ |
||||
} |
||||
|
||||
.flexbox .filter { |
||||
} |
||||
|
||||
/* Filter */ |
||||
|
||||
.filter__label { |
||||
font-size: .85em; |
||||
display: inline-block; |
||||
margin: 0 2%; |
||||
font-weight: bold; |
||||
color: #393A3F; |
||||
} |
||||
|
||||
.filter__item { |
||||
margin: 0 10px; |
||||
padding: 10px 15px; |
||||
vertical-align: middle; |
||||
color: #333; |
||||
} |
||||
|
||||
.filter__item--selected { |
||||
padding: 10px 15px; |
||||
border-radius: 3px; |
||||
background: #ffcd00; |
||||
} |
||||
|
||||
.filter__item .icon { |
||||
font-size: 1.75em; |
||||
display: none; |
||||
} |
||||
|
||||
/* Shopping cart */ |
||||
|
||||
.cart { |
||||
font-size: 1.5em; |
||||
position: absolute; |
||||
top: 0; |
||||
right: 0; |
||||
overflow: hidden; |
||||
height: 100%; |
||||
padding: 0 1.195em; |
||||
cursor: pointer; |
||||
color: #abacae; |
||||
border: none; |
||||
background-color: #131415; |
||||
} |
||||
|
||||
.no-touch .cart:focus, |
||||
.no-touch .cart:hover { |
||||
color: #fff; |
||||
outline: none; |
||||
} |
||||
|
||||
.cart--animate .cart__icon { |
||||
-webkit-animation: cartAnim .4s forwards; |
||||
animation: cartAnim .4s forwards; |
||||
} |
||||
|
||||
@-webkit-keyframes cartAnim { |
||||
50% { |
||||
opacity: 0; |
||||
-webkit-transform: translate3d(50px, 0, 0); |
||||
transform: translate3d(50px, 0, 0); |
||||
} |
||||
51% { |
||||
opacity: 0; |
||||
-webkit-transform: translate3d(-50px, 0, 0); |
||||
transform: translate3d(-50px, 0, 0); |
||||
} |
||||
100% { |
||||
opacity: 1; |
||||
-webkit-transform: translate3d(0, 0, 0); |
||||
transform: translate3d(0, 0, 0); |
||||
} |
||||
} |
||||
|
||||
@keyframes cartAnim { |
||||
50% { |
||||
opacity: 0; |
||||
-webkit-transform: translate3d(50px, 0, 0); |
||||
transform: translate3d(50px, 0, 0); |
||||
} |
||||
51% { |
||||
opacity: 0; |
||||
-webkit-transform: translate3d(-50px, 0, 0); |
||||
transform: translate3d(-50px, 0, 0); |
||||
} |
||||
100% { |
||||
opacity: 1; |
||||
-webkit-transform: translate3d(0, 0, 0); |
||||
transform: translate3d(0, 0, 0); |
||||
} |
||||
} |
||||
|
||||
.cart__count { |
||||
font-size: 9px; |
||||
font-weight: bold; |
||||
line-height: 15px; |
||||
position: absolute; |
||||
top: 50%; |
||||
right: 20px; |
||||
width: 15px; |
||||
height: 15px; |
||||
margin: -16px 0 0 0; |
||||
text-align: center; |
||||
color: #fff; |
||||
border-radius: 50%; |
||||
background: #5c5edc; |
||||
} |
||||
|
||||
.cart--animate .cart__count { |
||||
-webkit-animation: countAnim .4s forwards; |
||||
animation: countAnim .4s forwards; |
||||
} |
||||
|
||||
@-webkit-keyframes countAnim { |
||||
50% { |
||||
opacity: 0; |
||||
-webkit-transform: translate3d(0, 80px, 0); |
||||
transform: translate3d(0, 80px, 0); |
||||
} |
||||
51% { |
||||
opacity: 0; |
||||
-webkit-transform: translate3d(0, -80px, 0); |
||||
transform: translate3d(0, -80px, 0); |
||||
} |
||||
100% { |
||||
opacity: 1; |
||||
-webkit-transform: translate3d(0, 0, 0); |
||||
transform: translate3d(0, 0, 0); |
||||
} |
||||
} |
||||
|
||||
@keyframes countAnim { |
||||
50% { |
||||
opacity: 0; |
||||
-webkit-transform: translate3d(0, 80px, 0); |
||||
transform: translate3d(0, 80px, 0); |
||||
} |
||||
51% { |
||||
opacity: 0; |
||||
-webkit-transform: translate3d(0, -80px, 0); |
||||
transform: translate3d(0, -80px, 0); |
||||
} |
||||
100% { |
||||
opacity: 1; |
||||
-webkit-transform: translate3d(0, 0, 0); |
||||
transform: translate3d(0, 0, 0); |
||||
} |
||||
} |
||||
/* Resize grid items on smaller screens */ |
||||
|
||||
@media screen and (max-width: 65em) { |
||||
.grid__sizer, |
||||
.grid__item, |
||||
.grid__item--size-a { |
||||
width: 33.333%; |
||||
} |
||||
} |
||||
|
||||
@media screen and (max-width: 50em) { |
||||
.grid__sizer, |
||||
.grid__item, |
||||
.grid__item--size-a { |
||||
width: 50%; |
||||
} |
||||
.bar { |
||||
padding-left: 0; |
||||
text-align: left; |
||||
} |
||||
} |
||||
|
||||
@media screen and (max-width: 40em) { |
||||
.bar { |
||||
padding: .5em 4.5em .5em 0; |
||||
} |
||||
.flexbox .filter { |
||||
-webkit-justify-content: space-around; |
||||
justify-content: space-around; |
||||
padding: 0; |
||||
width: 100%; |
||||
} |
||||
.filter__item { |
||||
height: 100%; |
||||
width: 100%; |
||||
border: none; |
||||
margin-left: 0; |
||||
} |
||||
.filter__item .icon { |
||||
display: inline-block; |
||||
} |
||||
.filter__label, |
||||
.action__text { |
||||
display: none; |
||||
} |
||||
.cart { |
||||
padding: 0 1em; |
||||
} |
||||
} |
||||
|
||||
@media screen and (max-width: 25em) { |
||||
.grid { |
||||
max-width: 100%; |
||||
} |
||||
.grid__loader { |
||||
margin: 0 auto; |
||||
} |
||||
.grid__sizer, |
||||
.grid__item, |
||||
.grid__item--size-a { |
||||
width: 100%; |
||||
} |
||||
.action--buy { |
||||
font-size: 1.5em; |
||||
padding: 1.15em 1.5em; |
||||
-webkit-tap-highlight-color: transparent; |
||||
} |
||||
} |
||||
@ -0,0 +1,696 @@ |
||||
@charset "UTF-8"; |
||||
|
||||
$simditor-button-height: 40px; |
||||
$simditor-button-width: 46px; |
||||
|
||||
.simditor { |
||||
position: relative; |
||||
border: 1px solid #c9d8db; |
||||
|
||||
.simditor-wrapper { |
||||
position: relative; |
||||
background: #ffffff; |
||||
|
||||
& > textarea { |
||||
display: none !important; |
||||
width: 100%; |
||||
box-sizing: border-box; |
||||
font-family: monaco; |
||||
font-size: 16px; |
||||
line-height: 1.6; |
||||
border: none; |
||||
padding: 22px 15px 40px; |
||||
min-height: 300px; |
||||
outline: none; |
||||
background: transparent; |
||||
resize: none; |
||||
} |
||||
|
||||
.simditor-placeholder { |
||||
display: none; |
||||
position: absolute; |
||||
left: 0; |
||||
z-index: 0; |
||||
padding: 22px 15px; |
||||
font-size: 16px; |
||||
font-family: arial, sans-serif; |
||||
line-height: 1.5; |
||||
color: #999999; |
||||
background: transparent; |
||||
} |
||||
|
||||
&.toolbar-floating { |
||||
.simditor-toolbar { |
||||
position: fixed; |
||||
top: 0; |
||||
z-index: 10; |
||||
box-shadow: 0 0 6px rgba(0,0,0,0.1); |
||||
} |
||||
} |
||||
|
||||
.simditor-image-loading { |
||||
width: 100%; |
||||
height: 100%; |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
z-index: 2; |
||||
|
||||
.progress { |
||||
width: 100%; |
||||
height: 100%; |
||||
background: rgba(0,0,0,0.4); |
||||
position: absolute; |
||||
bottom: 0; |
||||
left: 0; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.simditor-body { |
||||
padding: 22px 15px 40px; |
||||
min-height: 300px; |
||||
outline: none; |
||||
cursor: text; |
||||
position: relative; |
||||
z-index: 1; |
||||
background: transparent; |
||||
|
||||
a.selected { |
||||
background: #b3d4fd; |
||||
} |
||||
|
||||
a.simditor-mention { |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.simditor-table { |
||||
position: relative; |
||||
|
||||
&.resizing { |
||||
cursor: col-resize; |
||||
} |
||||
|
||||
.simditor-resize-handle { |
||||
position: absolute; |
||||
left: 0; |
||||
top: 0; |
||||
width: 10px; |
||||
height: 100%; |
||||
cursor: col-resize; |
||||
} |
||||
} |
||||
|
||||
pre { |
||||
/*min-height: 28px;*/ |
||||
box-sizing: border-box; |
||||
-moz-box-sizing: border-box; |
||||
word-wrap: break-word!important; |
||||
white-space: pre-wrap!important; |
||||
} |
||||
|
||||
img { |
||||
cursor: pointer; |
||||
|
||||
&.selected { |
||||
box-shadow: 0 0 0 4px #cccccc; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.simditor-paste-bin { |
||||
position: fixed; |
||||
bottom: 10px; |
||||
right: 10px; |
||||
width: 1px; |
||||
height: 20px; |
||||
font-size: 1px; |
||||
line-height: 1px; |
||||
overflow: hidden; |
||||
padding: 0; |
||||
margin: 0; |
||||
opacity: 0; |
||||
-webkit-user-select: text; |
||||
} |
||||
|
||||
.simditor-toolbar { |
||||
border-bottom: 1px solid #eeeeee; |
||||
background: #ffffff; |
||||
width: 100%; |
||||
|
||||
& > ul { |
||||
margin: 0; |
||||
padding: 0 0 0 6px; |
||||
list-style: none; |
||||
|
||||
& > li { |
||||
position: relative; |
||||
display: inline-block; |
||||
font-size: 0; |
||||
|
||||
& > span.separator { |
||||
display: inline-block; |
||||
background: #cfcfcf; |
||||
width: 1px; |
||||
height: 18px; |
||||
margin: ($simditor-button-height - 18px) / 2 15px; |
||||
vertical-align: middle; |
||||
} |
||||
|
||||
& > .toolbar-item { |
||||
display: inline-block; |
||||
width: $simditor-button-width; |
||||
height: $simditor-button-height; |
||||
outline: none; |
||||
color: #333333; |
||||
font-size: 15px; |
||||
line-height: $simditor-button-height; |
||||
vertical-align: middle; |
||||
text-align: center; |
||||
text-decoration: none; |
||||
|
||||
span { |
||||
opacity: 0.6; |
||||
|
||||
&.simditor-icon { |
||||
display: inline; |
||||
line-height: normal; |
||||
} |
||||
} |
||||
|
||||
&:hover span { |
||||
opacity: 1; |
||||
} |
||||
|
||||
&.active { |
||||
background: #eeeeee; |
||||
|
||||
span { |
||||
opacity: 1; |
||||
} |
||||
} |
||||
|
||||
&.disabled { |
||||
cursor: default; |
||||
|
||||
span { |
||||
opacity: 0.3; |
||||
} |
||||
} |
||||
|
||||
&.toolbar-item-title { |
||||
span:before { |
||||
content: "H"; |
||||
font-size: 19px; |
||||
font-weight: bold; |
||||
font-family: 'Times New Roman'; |
||||
} |
||||
|
||||
&.active-h1 span:before { |
||||
content: 'H1'; |
||||
font-size: 18px; |
||||
} |
||||
|
||||
&.active-h2 span:before { |
||||
content: 'H2'; |
||||
font-size: 18px; |
||||
} |
||||
|
||||
&.active-h3 span:before { |
||||
content: 'H3'; |
||||
font-size: 18px; |
||||
} |
||||
} |
||||
|
||||
&.toolbar-item-image { |
||||
position: relative; |
||||
overflow: hidden; |
||||
|
||||
& > input[type=file] { |
||||
position: absolute; |
||||
right: 0px; |
||||
top: 0px; |
||||
opacity: 0; |
||||
font-size: 100px; |
||||
cursor: pointer; |
||||
} |
||||
} |
||||
} |
||||
|
||||
&.menu-on { |
||||
.toolbar-item { |
||||
position: relative; |
||||
z-index: 20; |
||||
background: #ffffff; |
||||
box-shadow: 0 1px 4px rgba(0,0,0,0.3); |
||||
|
||||
span { |
||||
opacity: 1; |
||||
} |
||||
} |
||||
|
||||
.toolbar-menu { |
||||
display: block; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.toolbar-menu { |
||||
display: none; |
||||
position: absolute; |
||||
top: $simditor-button-height; |
||||
left: 0; |
||||
z-index: 21; |
||||
background: #ffffff; |
||||
text-align: left; |
||||
box-shadow: 0 0 4px rgba(0,0,0,0.3); |
||||
|
||||
&:before { |
||||
content: ''; |
||||
display: block; |
||||
width: $simditor-button-width; |
||||
height: 4px; |
||||
background: #ffffff; |
||||
position: absolute; |
||||
top: -3px; |
||||
left: 0; |
||||
} |
||||
|
||||
ul { |
||||
min-width: 160px; |
||||
list-style: none; |
||||
margin: 0; |
||||
padding: 10px 1px; |
||||
|
||||
& > li { |
||||
|
||||
.menu-item { |
||||
display: block; |
||||
font-size:16px; |
||||
line-height: 2em; |
||||
padding: 0 10px; |
||||
text-decoration: none; |
||||
color: #666666; |
||||
|
||||
&:hover { |
||||
background: #f6f6f6; |
||||
} |
||||
|
||||
&.menu-item-h1 { |
||||
font-size: 24px; |
||||
color: #333333; |
||||
} |
||||
|
||||
&.menu-item-h2 { |
||||
font-size: 22px; |
||||
color: #333333; |
||||
} |
||||
|
||||
&.menu-item-h3 { |
||||
font-size: 20px; |
||||
color: #333333; |
||||
} |
||||
|
||||
&.menu-item-h4 { |
||||
font-size: 18px; |
||||
color: #333333; |
||||
} |
||||
|
||||
&.menu-item-h5 { |
||||
font-size: 16px; |
||||
color: #333333; |
||||
} |
||||
} |
||||
|
||||
.separator { |
||||
display: block; |
||||
border-top: 1px solid #cccccc; |
||||
height: 0; |
||||
line-height: 0; |
||||
font-size: 0; |
||||
margin: 6px 0; |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
&.toolbar-menu-color { |
||||
width: 96px; |
||||
|
||||
.color-list { |
||||
height: 40px; |
||||
margin: 10px 6px 6px 10px; |
||||
padding: 0; |
||||
|
||||
min-width: 0; |
||||
|
||||
li { |
||||
float: left; |
||||
margin: 0 4px 4px 0; |
||||
|
||||
.font-color { |
||||
display: block; |
||||
width: 16px; |
||||
height: 16px; |
||||
background: #dfdfdf; |
||||
border-radius: 2px; |
||||
|
||||
&:hover { |
||||
opacity: 0.8; |
||||
} |
||||
|
||||
&.font-color-default { |
||||
background: #333333; |
||||
} |
||||
} |
||||
|
||||
$font-colors: #E33737 #e28b41 #c8a732 #209361 #418caf #aa8773 #999999; |
||||
$i: 1; |
||||
@each $color in $font-colors { |
||||
.font-color-#{$i} { |
||||
background: $color; |
||||
} |
||||
$i: $i + 1; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
&.toolbar-menu-table { |
||||
.menu-create-table { |
||||
background: #ffffff; |
||||
padding: 1px; |
||||
|
||||
table { |
||||
border: none; |
||||
border-collapse: collapse; |
||||
border-spacing: 0; |
||||
table-layout: fixed; |
||||
|
||||
td { |
||||
padding: 0; |
||||
cursor: pointer; |
||||
|
||||
&:before { |
||||
width: 16px; |
||||
height: 16px; |
||||
border: 1px solid #ffffff; |
||||
background: #f3f3f3; |
||||
display: block; |
||||
content: '' |
||||
} |
||||
|
||||
&.selected:before { |
||||
background: #cfcfcf; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.menu-edit-table { |
||||
display: none; |
||||
|
||||
ul { |
||||
li { |
||||
white-space: nowrap; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
&.toolbar-menu-image { |
||||
.menu-item-upload-image { |
||||
position: relative; |
||||
overflow: hidden; |
||||
|
||||
input[type=file] { |
||||
position: absolute; |
||||
right: 0px; |
||||
top: 0px; |
||||
opacity: 0; |
||||
font-size: 100px; |
||||
cursor: pointer; |
||||
} |
||||
} |
||||
} |
||||
|
||||
&.toolbar-menu-alignment { |
||||
width: 100%; |
||||
ul { |
||||
min-width: 100%; |
||||
} |
||||
.menu-item { |
||||
text-align: center; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.simditor-popover { |
||||
display: none; |
||||
padding: 5px 8px 0; |
||||
background: #ffffff; |
||||
box-shadow: 0 1px 4px rgba(0,0,0,0.4); |
||||
border-radius: 2px; |
||||
position: absolute; |
||||
z-index: 2; |
||||
|
||||
.settings-field { |
||||
margin: 0 0 5px 0; |
||||
font-size: 12px; |
||||
height: 25px; |
||||
line-height: 25px; |
||||
|
||||
label { |
||||
display: inline-block; |
||||
margin: 0 5px 0 0; |
||||
} |
||||
|
||||
input[type=text] { |
||||
display: inline-block; |
||||
width: 200px; |
||||
box-sizing: border-box; |
||||
font-size: 12px; |
||||
|
||||
&.image-size { |
||||
width: 83px; |
||||
} |
||||
} |
||||
|
||||
.times { |
||||
display: inline-block; |
||||
width: 26px; |
||||
font-size: 12px; |
||||
text-align: center; |
||||
} |
||||
} |
||||
|
||||
&.link-popover .btn-unlink, |
||||
&.image-popover .btn-upload, |
||||
&.image-popover .btn-restore { |
||||
display: inline-block; |
||||
margin: 0 0 0 5px; |
||||
color: #333333; |
||||
font-size: 14px; |
||||
outline: 0; |
||||
|
||||
span { |
||||
opacity: 0.6; |
||||
} |
||||
|
||||
&:hover span { |
||||
opacity: 1; |
||||
} |
||||
} |
||||
|
||||
&.image-popover .btn-upload { |
||||
position: relative; |
||||
display: inline-block; |
||||
overflow: hidden; |
||||
vertical-align: middle; |
||||
|
||||
input[type=file] { |
||||
position: absolute; |
||||
right: 0px; |
||||
top: 0px; |
||||
opacity: 0; |
||||
height: 100%; |
||||
width: 28px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
&.simditor-mobile { |
||||
.simditor-wrapper.toolbar-floating .simditor-toolbar { |
||||
position: absolute; |
||||
top: 0; |
||||
z-index: 10; |
||||
box-shadow: 0 0 6px rgba(0,0,0,0.1); |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
.simditor .simditor-body, .editor-style { |
||||
font-size: 16px; |
||||
font-family: arial, sans-serif; |
||||
line-height: 1.6; |
||||
color: #333; |
||||
outline: none; |
||||
word-wrap: break-word; |
||||
|
||||
& > :first-child { |
||||
margin-top: 0!important; |
||||
} |
||||
|
||||
a{ color: #4298BA; text-decoration: none; word-break: break-all;} |
||||
a:visited{ color: #4298BA; } |
||||
a:hover{ color: #0F769F; } |
||||
a:active{ color:#9E792E; } |
||||
a:hover, a:active{ outline: 0; } |
||||
|
||||
h1,h2,h3,h4,h5,h6 { |
||||
font-weight: normal; |
||||
margin: 40px 0 20px; |
||||
color: #000000; |
||||
} |
||||
|
||||
h1 { font-size: 24px; } |
||||
h2 { font-size: 22px; } |
||||
h3 { font-size: 20px; } |
||||
h4 { font-size: 18px; } |
||||
h5 { font-size: 16px; } |
||||
h6 { font-size: 16px; } |
||||
|
||||
p, div { |
||||
word-wrap: break-word; |
||||
margin: 0 0 15px 0; |
||||
color: #333; |
||||
word-wrap: break-word; |
||||
} |
||||
|
||||
b, strong { |
||||
font-weight: bold; |
||||
} |
||||
|
||||
i, em { |
||||
font-style: italic; |
||||
} |
||||
|
||||
u { |
||||
text-decoration: underline; |
||||
} |
||||
|
||||
strike, del { |
||||
text-decoration: line-through; |
||||
} |
||||
|
||||
ul, ol { |
||||
list-style:disc outside none; |
||||
margin: 15px 0; |
||||
padding: 0 0 0 40px; |
||||
line-height: 1.6; |
||||
|
||||
ul, ol { |
||||
padding-left: 30px; |
||||
} |
||||
|
||||
ul { |
||||
list-style: circle outside none; |
||||
|
||||
ul { |
||||
list-style: square outside none; |
||||
} |
||||
} |
||||
} |
||||
|
||||
ol { |
||||
list-style:decimal; |
||||
} |
||||
|
||||
blockquote { |
||||
border-left: 6px solid #ddd; |
||||
padding: 5px 0 5px 10px; |
||||
margin: 15px 0 15px 15px; |
||||
|
||||
& > :first-child { |
||||
margin-top: 0; |
||||
} |
||||
} |
||||
|
||||
code { |
||||
display: inline-block; |
||||
padding: 0 4px; |
||||
margin: 0 5px; |
||||
background: #eeeeee; |
||||
border-radius: 3px; |
||||
font-size: 13px; |
||||
font-family: 'monaco', 'Consolas', "Liberation Mono", Courier, monospace; |
||||
} |
||||
|
||||
pre { |
||||
padding: 10px 5px 10px 10px; |
||||
margin: 15px 0; |
||||
display: block; |
||||
line-height: 18px; |
||||
background: #F0F0F0; |
||||
border-radius: 3px; |
||||
font-size:13px; |
||||
font-family: 'monaco', 'Consolas', "Liberation Mono", Courier, monospace; |
||||
white-space: pre; |
||||
word-wrap: normal; |
||||
overflow-x: auto; |
||||
|
||||
code { |
||||
display: block; |
||||
padding: 0; |
||||
margin: 0; |
||||
background: none; |
||||
border-radius: 0; |
||||
} |
||||
} |
||||
|
||||
hr { |
||||
display: block; |
||||
height: 0px; |
||||
border: 0; |
||||
border-top: 1px solid #ccc; |
||||
margin: 15px 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
table { |
||||
width: 100%; |
||||
table-layout: fixed; |
||||
border-collapse: collapse; |
||||
border-spacing: 0; |
||||
margin: 15px 0; |
||||
|
||||
thead { |
||||
background-color: #f9f9f9; |
||||
} |
||||
|
||||
td, th { |
||||
min-width: 40px; |
||||
height: 30px; |
||||
border: 1px solid #ccc; |
||||
vertical-align: top; |
||||
padding: 2px 4px; |
||||
text-align: left; |
||||
box-sizing: border-box; |
||||
|
||||
&.active { |
||||
background-color: #ffffee; |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
img { |
||||
margin: 0 5px; |
||||
vertical-align: middle; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,141 @@ |
||||
/*! Flickity v1.0.2 |
||||
http://flickity.metafizzy.co |
||||
---------------------------------------------- */ |
||||
|
||||
.flickity-enabled { |
||||
position: relative; |
||||
} |
||||
|
||||
.flickity-enabled:focus { outline: none; } |
||||
|
||||
.flickity-viewport { |
||||
overflow: hidden; |
||||
position: relative; |
||||
height: 100%; |
||||
} |
||||
|
||||
.flickity-slider { |
||||
position: absolute; |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
/* draggable */ |
||||
|
||||
.flickity-enabled.is-draggable { |
||||
-webkit-tap-highlight-color: transparent; |
||||
tap-highlight-color: transparent; |
||||
-webkit-user-select: none; |
||||
-moz-user-select: none; |
||||
-ms-user-select: none; |
||||
user-select: none; |
||||
} |
||||
|
||||
.flickity-enabled.is-draggable .flickity-viewport { |
||||
cursor: move; |
||||
cursor: -webkit-grab; |
||||
cursor: grab; |
||||
} |
||||
|
||||
.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down { |
||||
cursor: -webkit-grabbing; |
||||
cursor: grabbing; |
||||
} |
||||
|
||||
/* ---- previous/next buttons ---- */ |
||||
|
||||
.flickity-prev-next-button { |
||||
position: absolute; |
||||
top: 50%; |
||||
width: 44px; |
||||
height: 44px; |
||||
border: none; |
||||
border-radius: 50%; |
||||
background: white; |
||||
background: hsla(0, 0%, 100%, 0.75); |
||||
cursor: pointer; |
||||
/* vertically center */ |
||||
-webkit-transform: translateY(-50%); |
||||
-ms-transform: translateY(-50%); |
||||
transform: translateY(-50%); |
||||
} |
||||
|
||||
.flickity-prev-next-button:hover { background: white; } |
||||
|
||||
.flickity-prev-next-button:focus { |
||||
outline: none; |
||||
box-shadow: 0 0 0 5px #09F; |
||||
} |
||||
|
||||
.flickity-prev-next-button:active { |
||||
filter: alpha(opacity=60); /* IE8 */ |
||||
opacity: 0.6; |
||||
} |
||||
|
||||
.flickity-prev-next-button.previous { left: 10px; } |
||||
.flickity-prev-next-button.next { right: 10px; } |
||||
/* right to left */ |
||||
.flickity-rtl .flickity-prev-next-button.previous { |
||||
left: auto; |
||||
right: 10px; |
||||
} |
||||
.flickity-rtl .flickity-prev-next-button.next { |
||||
right: auto; |
||||
left: 10px; |
||||
} |
||||
|
||||
.flickity-prev-next-button:disabled { |
||||
filter: alpha(opacity=30); /* IE8 */ |
||||
opacity: 0.3; |
||||
cursor: auto; |
||||
} |
||||
|
||||
.flickity-prev-next-button svg { |
||||
position: absolute; |
||||
left: 20%; |
||||
top: 20%; |
||||
width: 60%; |
||||
height: 60%; |
||||
} |
||||
|
||||
.flickity-prev-next-button .arrow { |
||||
fill: #333; |
||||
} |
||||
|
||||
/* color & size if no SVG - IE8 and Android 2.3 */ |
||||
.flickity-prev-next-button.no-svg { |
||||
color: #333; |
||||
font-size: 26px; |
||||
} |
||||
|
||||
/* ---- page dots ---- */ |
||||
|
||||
.flickity-page-dots { |
||||
position: absolute; |
||||
width: 100%; |
||||
bottom: -25px; |
||||
padding: 0; |
||||
margin: 0; |
||||
list-style: none; |
||||
text-align: center; |
||||
line-height: 1; |
||||
} |
||||
|
||||
.flickity-rtl .flickity-page-dots { direction: rtl; } |
||||
|
||||
.flickity-page-dots .dot { |
||||
display: inline-block; |
||||
width: 10px; |
||||
height: 10px; |
||||
margin: 0 8px; |
||||
background: #333; |
||||
border-radius: 50%; |
||||
filter: alpha(opacity=25); /* IE8 */ |
||||
opacity: 0.25; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.flickity-page-dots .dot.is-selected { |
||||
filter: alpha(opacity=100); /* IE8 */ |
||||
opacity: 1; |
||||
} |
||||
@ -0,0 +1,52 @@ |
||||
@font-face { |
||||
font-family: 'Source Sans Pro'; |
||||
font-style: normal; |
||||
font-weight: 300; |
||||
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../fonts/sourcesanspro/sourcesanspro-light.woff') format('woff'); |
||||
} |
||||
@font-face { |
||||
font-family: 'Source Sans Pro'; |
||||
font-style: normal; |
||||
font-weight: 400; |
||||
src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url('../fonts/sourcesanspro/sourcesanspro.woff') format('woff'); |
||||
} |
||||
@font-face { |
||||
font-family: 'Source Sans Pro'; |
||||
font-style: normal; |
||||
font-weight: 700; |
||||
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../fonts/sourcesanspro/sourcesanspro-bold.woff') format('woff'); |
||||
} |
||||
|
||||
@font-face { |
||||
font-family: 'exo_2bold'; |
||||
src: url('../fonts/Exo2-Bold-webfont.eot'); |
||||
src: url('../fonts/Exo2-Bold-webfont.eot?#iefix') format('embedded-opentype'), |
||||
url('../fonts/Exo2-Bold-webfont.woff') format('woff'), |
||||
url('../fonts/Exo2-Bold-webfont.ttf') format('truetype'), |
||||
url('../fonts/Exo2-Bold-webfont.svg#exo_2bold') format('svg'); |
||||
font-weight: normal; |
||||
font-style: normal; |
||||
} |
||||
|
||||
@font-face { |
||||
font-family: 'exo_2light'; |
||||
src: url('../fonts/Exo2-Light-webfont.eot'); |
||||
src: url('../fonts/Exo2-Light-webfont.eot?#iefix') format('embedded-opentype'), |
||||
url('../fonts/Exo2-Light-webfont.woff') format('woff'), |
||||
url('../fonts/Exo2-Light-webfont.ttf') format('truetype'), |
||||
url('../fonts/Exo2-Light-webfont.svg#exo_2light') format('svg'); |
||||
font-weight: normal; |
||||
font-style: normal; |
||||
|
||||
} |
||||
|
||||
@font-face { |
||||
font-family: 'exo_2regular'; |
||||
src: url('../fonts/Exo2-Regular-webfont.eot'); |
||||
src: url('../fonts/Exo2-Regular-webfont.eot?#iefix') format('embedded-opentype'), |
||||
url('../fonts/Exo2-Regular-webfont.woff') format('woff'), |
||||
url('../fonts/Exo2-Regular-webfont.ttf') format('truetype'), |
||||
url('../fonts/Exo2-Regular-webfont.svg#exo_2regular') format('svg'); |
||||
font-weight: normal; |
||||
font-style: normal; |
||||
} |
||||
@ -0,0 +1,11 @@ |
||||
.hc__menu__login{ |
||||
display: none; |
||||
} |
||||
.hc__footer__r{ |
||||
display: none; |
||||
} |
||||
.hc__reply__box__textarea::placeholder{ |
||||
text-align: center; |
||||
} |
||||
*::-webkit-input-placeholder { opacity:0; } |
||||
*::-moz-placeholder { opacity:0; } /* ff 4-18 */ |
||||
@ -0,0 +1,117 @@ |
||||
.ui-widget { |
||||
} |
||||
|
||||
.ui-widget-content { |
||||
border-radius: 3px; |
||||
background: #fff; |
||||
color: #383838; |
||||
} |
||||
|
||||
.ui-dialog { |
||||
overflow:hidden;position:absolute;top:0;left:0;outline:0; z-index: 2001; |
||||
box-shadow: 0 1px 10px rgba(0, 0, 0, .5), -5px 0 10px -23px rgba(0, 0, 0, .8), 5px 0 10px -13px rgba(0, 0, 0, .8), 0 0 0 rgba(0, 0, 0, .3) inset; |
||||
} |
||||
|
||||
#success { |
||||
padding: 0; |
||||
margin: 0; |
||||
} |
||||
|
||||
.ui-dialog .ui-dialog-content { |
||||
position:relative;border:0;padding:.5em 1em;background:none;overflow:auto |
||||
} |
||||
|
||||
.ui-widget-header { |
||||
background:#fff;color:#333;font-weight:bold |
||||
} |
||||
|
||||
.ui-dialog .ui-dialog-titlebar { |
||||
padding: 0.4em 1em; |
||||
position: relative; |
||||
background: #fff; |
||||
color: #666; |
||||
margin: 10px; |
||||
} |
||||
.ui-icon, .ui-widget-content .ui-icon{ |
||||
background-image: url("/static/img/1409200426_delete_remove_close_exit_trash-16.png"); |
||||
} |
||||
.ui-dialog-titlebar-close{ |
||||
position:absolute;right:.5em;top:50%;width:16px;margin:-10px 0 0 0;padding:1px;height:16px;border: 0; |
||||
background: #fff url("/static/img/1409200426_delete_remove_close_exit_trash-16.png") no-repeat; |
||||
cursor: pointer; |
||||
outline: 0; |
||||
} |
||||
.ui-button-icon-only .ui-icon{ |
||||
left: 50%; |
||||
margin-left: -8px; |
||||
} |
||||
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon{ |
||||
position: absolute; |
||||
top: 50%; |
||||
margin-top: -8px; |
||||
} |
||||
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1000;} |
||||
.ui-widget-overlay { |
||||
<!--background: #666666 url("/static/img/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;--> |
||||
background: none; |
||||
opacity: .5; |
||||
filter: Alpha(Opacity=50); |
||||
} |
||||
.ui-button{ |
||||
display: inline-block; |
||||
position: relative; |
||||
padding: 0; |
||||
line-height: normal; |
||||
margin-right: .1em; |
||||
cursor: pointer; |
||||
vertical-align: middle; |
||||
text-align: center; |
||||
overflow: visible; |
||||
} |
||||
.ui-dialog .ui-dialog-buttonpane button { |
||||
margin: .5em .4em .5em 0; |
||||
cursor: pointer; |
||||
font-family: Arial, sans-serif; |
||||
padding: 7px; |
||||
color: #666; |
||||
border: 1px solid #ccc; |
||||
font-weight: bold; |
||||
background: rgba(0, 0, 0, .4); |
||||
background: -webkit-linear-gradient(top, rgba(0, 0, 0, .2) 0, rgba(0, 0, 0, .4) 100%); |
||||
background: -moz-linear-gradient(top, rgba(0, 0, 0, .2) 0, rgba(0, 0, 0, .4) 100%); |
||||
background: -o-linear-gradient(top, rgba(0, 0, 0, .2) 0, rgba(0, 0, 0, .4) 100%); |
||||
background: linear-gradient(to bottom, rgba(0, 0, 0, .2) 0, rgba(0, 0, 0, .4) 100%); |
||||
-moz-box-shadow: 0 1px 0 rgba(0, 0, 0, .07); |
||||
box-shadow: 0 1px 0 rgba(0, 0, 0, .07); |
||||
border-radius: 3px; |
||||
background: #fff; |
||||
background: -webkit-linear-gradient(top, #fff 0, #eee 100%); |
||||
background: -moz-linear-gradient(top, #fff 0, #eee 100%); |
||||
background: -o-linear-gradient(top, #fff 0, #eee 100%); |
||||
background: linear-gradient(to bottom, #fff 0, #eee 100%); |
||||
border-radius: 2px; |
||||
outline: 0; |
||||
} |
||||
.ui-dialog .ui-dialog-buttonpane button:hover{ |
||||
color: #333; |
||||
} |
||||
.validateTips { |
||||
background: #ffc; |
||||
min-height: 15px; |
||||
width: 100%; |
||||
padding: 2%; |
||||
font-size: 13px; |
||||
text-align: justify; |
||||
color: green; |
||||
margin-bottom: 5px; |
||||
} |
||||
.ui-dialog-buttonpane{ |
||||
background: #f1f1f1; |
||||
padding: 0 1em; |
||||
border-top: 1px solid #ccc; |
||||
border-radius: 0; |
||||
} |
||||
.noclose .ui-dialog-titlebar-close |
||||
{ |
||||
display:none; |
||||
} |
||||
@ -0,0 +1,6 @@ |
||||
/*! jQuery UI - v1.11.4 - 2016-06-14 |
||||
* http://jqueryui.com |
||||
* Includes: core.css, autocomplete.css, menu.css |
||||
* Copyright jQuery Foundation and other contributors; Licensed MIT */ |
||||
|
||||
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} |
||||
@ -0,0 +1,5 @@ |
||||
/*! jQuery UI - v1.11.4 - 2016-06-14 |
||||
* http://jqueryui.com |
||||
* Copyright jQuery Foundation and other contributors; Licensed MIT */ |
||||
|
||||
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} |
||||
@ -0,0 +1,171 @@ |
||||
/* jquery.Jcrop.css v0.9.12 - MIT License */ |
||||
/* |
||||
The outer-most container in a typical Jcrop instance |
||||
If you are having difficulty with formatting related to styles |
||||
on a parent element, place any fixes here or in a like selector |
||||
|
||||
You can also style this element if you want to add a border, etc |
||||
A better method for styling can be seen below with .jcrop-light |
||||
(Add a class to the holder and style elements for that extended class) |
||||
*/ |
||||
.jcrop-holder { |
||||
direction: ltr; |
||||
text-align: left; |
||||
margin: 0 auto; |
||||
border-radius: 5px; |
||||
padding: 10px; |
||||
} |
||||
.jcrop-keymgr{ |
||||
display: none; |
||||
} |
||||
/* Selection Border */ |
||||
.jcrop-vline, |
||||
.jcrop-hline { |
||||
background: #ffffff url("/static/img/Jcrop.gif"); |
||||
font-size: 0; |
||||
position: absolute; |
||||
} |
||||
.jcrop-vline { |
||||
height: 100%; |
||||
width: 1px !important; |
||||
} |
||||
.jcrop-vline.right { |
||||
right: 0; |
||||
} |
||||
.jcrop-hline { |
||||
height: 1px !important; |
||||
width: 100%; |
||||
} |
||||
.jcrop-hline.bottom { |
||||
bottom: 0; |
||||
} |
||||
/* Invisible click targets */ |
||||
.jcrop-tracker { |
||||
height: 100%; |
||||
width: 100%; |
||||
/* "turn off" link highlight */ |
||||
-webkit-tap-highlight-color: transparent; |
||||
/* disable callout, image save panel */ |
||||
-webkit-touch-callout: none; |
||||
/* disable cut copy paste */ |
||||
-webkit-user-select: none; |
||||
} |
||||
/* Selection Handles */ |
||||
.jcrop-handle { |
||||
background-color: #333333; |
||||
border: 1px #eeeeee solid; |
||||
width: 7px; |
||||
height: 7px; |
||||
font-size: 1px; |
||||
} |
||||
.jcrop-handle.ord-n { |
||||
left: 50%; |
||||
margin-left: -4px; |
||||
margin-top: -4px; |
||||
top: 0; |
||||
} |
||||
.jcrop-handle.ord-s { |
||||
bottom: 0; |
||||
left: 50%; |
||||
margin-bottom: -4px; |
||||
margin-left: -4px; |
||||
} |
||||
.jcrop-handle.ord-e { |
||||
margin-right: -4px; |
||||
margin-top: -4px; |
||||
right: 0; |
||||
top: 50%; |
||||
} |
||||
.jcrop-handle.ord-w { |
||||
left: 0; |
||||
margin-left: -4px; |
||||
margin-top: -4px; |
||||
top: 50%; |
||||
} |
||||
.jcrop-handle.ord-nw { |
||||
left: 0; |
||||
margin-left: -4px; |
||||
margin-top: -4px; |
||||
top: 0; |
||||
} |
||||
.jcrop-handle.ord-ne { |
||||
margin-right: -4px; |
||||
margin-top: -4px; |
||||
right: 0; |
||||
top: 0; |
||||
} |
||||
.jcrop-handle.ord-se { |
||||
bottom: 0; |
||||
margin-bottom: -4px; |
||||
margin-right: -4px; |
||||
right: 0; |
||||
} |
||||
.jcrop-handle.ord-sw { |
||||
bottom: 0; |
||||
left: 0; |
||||
margin-bottom: -4px; |
||||
margin-left: -4px; |
||||
} |
||||
/* Dragbars */ |
||||
.jcrop-dragbar.ord-n, |
||||
.jcrop-dragbar.ord-s { |
||||
height: 7px; |
||||
width: 100%; |
||||
} |
||||
.jcrop-dragbar.ord-e, |
||||
.jcrop-dragbar.ord-w { |
||||
height: 100%; |
||||
width: 7px; |
||||
} |
||||
.jcrop-dragbar.ord-n { |
||||
margin-top: -4px; |
||||
} |
||||
.jcrop-dragbar.ord-s { |
||||
bottom: 0; |
||||
margin-bottom: -4px; |
||||
} |
||||
.jcrop-dragbar.ord-e { |
||||
margin-right: -4px; |
||||
right: 0; |
||||
} |
||||
.jcrop-dragbar.ord-w { |
||||
margin-left: -4px; |
||||
} |
||||
/* The "jcrop-light" class/extension */ |
||||
.jcrop-light .jcrop-vline, |
||||
.jcrop-light .jcrop-hline { |
||||
background: #ffffff; |
||||
filter: alpha(opacity=70) !important; |
||||
opacity: .70!important; |
||||
} |
||||
.jcrop-light .jcrop-handle { |
||||
-moz-border-radius: 3px; |
||||
-webkit-border-radius: 3px; |
||||
background-color: #000000; |
||||
border-color: #ffffff; |
||||
border-radius: 3px; |
||||
} |
||||
/* The "jcrop-dark" class/extension */ |
||||
.jcrop-dark .jcrop-vline, |
||||
.jcrop-dark .jcrop-hline { |
||||
background: #000000; |
||||
filter: alpha(opacity=70) !important; |
||||
opacity: 0.7 !important; |
||||
} |
||||
.jcrop-dark .jcrop-handle { |
||||
-moz-border-radius: 3px; |
||||
-webkit-border-radius: 3px; |
||||
background-color: #ffffff; |
||||
border-color: #000000; |
||||
border-radius: 3px; |
||||
} |
||||
/* Simple macro to turn off the antlines */ |
||||
.solid-line .jcrop-vline, |
||||
.solid-line .jcrop-hline { |
||||
background: #ffffff; |
||||
} |
||||
/* Fix for twitter bootstrap et al. */ |
||||
.jcrop-holder img, |
||||
img.jcrop-preview { |
||||
max-width: none; |
||||
} |
||||
@ -0,0 +1,274 @@ |
||||
/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ |
||||
.fancybox-wrap, |
||||
.fancybox-skin, |
||||
.fancybox-outer, |
||||
.fancybox-inner, |
||||
.fancybox-image, |
||||
.fancybox-wrap iframe, |
||||
.fancybox-wrap object, |
||||
.fancybox-nav, |
||||
.fancybox-nav span, |
||||
.fancybox-tmp |
||||
{ |
||||
padding: 0; |
||||
margin: 0; |
||||
border: 0; |
||||
outline: none; |
||||
vertical-align: top; |
||||
} |
||||
|
||||
.fancybox-wrap { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
z-index: 8020; |
||||
} |
||||
|
||||
.fancybox-skin { |
||||
position: relative; |
||||
background: #f9f9f9; |
||||
color: #444; |
||||
text-shadow: none; |
||||
-webkit-border-radius: 4px; |
||||
-moz-border-radius: 4px; |
||||
border-radius: 4px; |
||||
} |
||||
|
||||
.fancybox-opened { |
||||
z-index: 8030; |
||||
} |
||||
|
||||
.fancybox-opened .fancybox-skin { |
||||
-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); |
||||
-moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); |
||||
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); |
||||
} |
||||
|
||||
.fancybox-outer, .fancybox-inner { |
||||
position: relative; |
||||
} |
||||
|
||||
.fancybox-inner { |
||||
overflow: hidden; |
||||
} |
||||
|
||||
.fancybox-type-iframe .fancybox-inner { |
||||
-webkit-overflow-scrolling: touch; |
||||
} |
||||
|
||||
.fancybox-error { |
||||
color: #444; |
||||
font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; |
||||
margin: 0; |
||||
padding: 15px; |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
.fancybox-image, .fancybox-iframe { |
||||
display: block; |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
.fancybox-image { |
||||
max-width: 100%; |
||||
max-height: 100%; |
||||
} |
||||
|
||||
#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { |
||||
background-image: url('/static/img/fancybox_sprite.png'); |
||||
} |
||||
|
||||
#fancybox-loading { |
||||
position: fixed; |
||||
top: 50%; |
||||
left: 50%; |
||||
margin-top: -22px; |
||||
margin-left: -22px; |
||||
background-position: 0 -108px; |
||||
opacity: 0.8; |
||||
cursor: pointer; |
||||
z-index: 8060; |
||||
} |
||||
|
||||
#fancybox-loading div { |
||||
width: 44px; |
||||
height: 44px; |
||||
background: url('/static/img/fancybox_loading.gif') center center no-repeat; |
||||
} |
||||
|
||||
.fancybox-close { |
||||
position: absolute; |
||||
top: -18px; |
||||
right: -18px; |
||||
width: 36px; |
||||
height: 36px; |
||||
cursor: pointer; |
||||
z-index: 8040; |
||||
} |
||||
|
||||
.fancybox-nav { |
||||
position: absolute; |
||||
top: 0; |
||||
width: 40%; |
||||
height: 100%; |
||||
cursor: pointer; |
||||
text-decoration: none; |
||||
background: transparent url('/static/img/blank.gif'); /* helps IE */ |
||||
-webkit-tap-highlight-color: rgba(0,0,0,0); |
||||
z-index: 8040; |
||||
} |
||||
|
||||
.fancybox-prev { |
||||
left: 0; |
||||
} |
||||
|
||||
.fancybox-next { |
||||
right: 0; |
||||
} |
||||
|
||||
.fancybox-nav span { |
||||
position: absolute; |
||||
top: 50%; |
||||
width: 36px; |
||||
height: 34px; |
||||
margin-top: -18px; |
||||
cursor: pointer; |
||||
z-index: 8040; |
||||
visibility: hidden; |
||||
} |
||||
|
||||
.fancybox-prev span { |
||||
left: 10px; |
||||
background-position: 0 -36px; |
||||
} |
||||
|
||||
.fancybox-next span { |
||||
right: 10px; |
||||
background-position: 0 -72px; |
||||
} |
||||
|
||||
.fancybox-nav:hover span { |
||||
visibility: visible; |
||||
} |
||||
|
||||
.fancybox-tmp { |
||||
position: absolute; |
||||
top: -99999px; |
||||
left: -99999px; |
||||
visibility: hidden; |
||||
max-width: 99999px; |
||||
max-height: 99999px; |
||||
overflow: visible !important; |
||||
} |
||||
|
||||
/* Overlay helper */ |
||||
|
||||
.fancybox-lock { |
||||
overflow: hidden !important; |
||||
width: auto; |
||||
} |
||||
|
||||
.fancybox-lock body { |
||||
overflow: hidden !important; |
||||
} |
||||
|
||||
.fancybox-lock-test { |
||||
overflow-y: hidden !important; |
||||
} |
||||
|
||||
.fancybox-overlay { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
overflow: hidden; |
||||
display: none; |
||||
z-index: 8010; |
||||
background: url('/static/img/fancybox_overlay.png'); |
||||
} |
||||
|
||||
.fancybox-overlay-fixed { |
||||
position: fixed; |
||||
bottom: 0; |
||||
right: 0; |
||||
} |
||||
|
||||
.fancybox-lock .fancybox-overlay { |
||||
overflow: auto; |
||||
overflow-y: scroll; |
||||
} |
||||
|
||||
/* Title helper */ |
||||
|
||||
.fancybox-title { |
||||
visibility: hidden; |
||||
font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; |
||||
position: relative; |
||||
text-shadow: none; |
||||
z-index: 8050; |
||||
} |
||||
|
||||
.fancybox-opened .fancybox-title { |
||||
visibility: visible; |
||||
} |
||||
|
||||
.fancybox-title-float-wrap { |
||||
position: absolute; |
||||
bottom: 0; |
||||
right: 50%; |
||||
margin-bottom: -35px; |
||||
z-index: 8050; |
||||
text-align: center; |
||||
} |
||||
|
||||
.fancybox-title-float-wrap .child { |
||||
display: inline-block; |
||||
margin-right: -100%; |
||||
padding: 2px 20px; |
||||
background: transparent; /* Fallback for web browsers that doesn't support RGBa */ |
||||
background: rgba(0, 0, 0, 0.8); |
||||
-webkit-border-radius: 15px; |
||||
-moz-border-radius: 15px; |
||||
border-radius: 15px; |
||||
text-shadow: 0 1px 2px #222; |
||||
color: #FFF; |
||||
font-weight: bold; |
||||
line-height: 24px; |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
.fancybox-title-outside-wrap { |
||||
position: relative; |
||||
margin-top: 10px; |
||||
color: #fff; |
||||
} |
||||
|
||||
.fancybox-title-inside-wrap { |
||||
padding-top: 10px; |
||||
} |
||||
|
||||
.fancybox-title-over-wrap { |
||||
position: absolute; |
||||
bottom: 0; |
||||
left: 0; |
||||
color: #fff; |
||||
padding: 10px; |
||||
background: #000; |
||||
background: rgba(0, 0, 0, .8); |
||||
} |
||||
|
||||
/*Retina graphics!*/ |
||||
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), |
||||
only screen and (min--moz-device-pixel-ratio: 1.5), |
||||
only screen and (min-device-pixel-ratio: 1.5){ |
||||
|
||||
#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { |
||||
background-image: url('/static/img/fancybox_sprite@2x.png'); |
||||
background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/ |
||||
} |
||||
|
||||
#fancybox-loading div { |
||||
background-image: url('/static/img/fancybox_loading@2x.gif'); |
||||
background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/ |
||||
} |
||||
} |
||||
@ -0,0 +1 @@ |
||||
.kladr-error{color:#cb3e27}#kladr_autocomplete ul{position:absolute;display:block;margin:0;padding:0;border:1px solid #c4c4c4;background-color:#fff;z-index:9999;overflow-x:hidden;overflow-y:auto;min-width:200px;max-height:420px;color:#313131}#kladr_autocomplete li{display:list-item;list-style-type:none;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#kladr_autocomplete li+li{border-top:1px solid #ededed}#kladr_autocomplete li:hover{background-color:#f2f2f2;cursor:pointer}#kladr_autocomplete li.active{background-color:#e9e9e9}#kladr_autocomplete a{text-decoration:none}#kladr_autocomplete strong{color:#038ebd}#kladr_autocomplete .spinner{position:absolute;display:block;margin:0;padding:0;width:16px;height:16px;background:url("/static/img/spinner.png") center center no-repeat;z-index:9999} |
||||
@ -0,0 +1,39 @@ |
||||
.chart { |
||||
} |
||||
.pieTip { |
||||
z-index: 2100; |
||||
position: absolute; |
||||
float: left; |
||||
min-width: 30px; |
||||
max-width: 300px; |
||||
padding: 5px 18px 6px; |
||||
border-radius: 2px; |
||||
background: rgba(255,255,255,.97); |
||||
color: #444; |
||||
font-size: 15px; |
||||
text-shadow: 0 1px 0 #fff; |
||||
text-transform: uppercase; |
||||
text-align: center; |
||||
line-height: 1.3; |
||||
letter-spacing: .06em; |
||||
box-shadow: 0 0 3px rgba(0,0,0,0.2), 0 1px 2px rgba(0,0,0,0.5); |
||||
-webkit-transform: all .3s; |
||||
-moz-transform: all .3s; |
||||
-ms-transform: all .3s; |
||||
-o-transform: all .3s; |
||||
transform: all .3s; |
||||
pointer-events: none; |
||||
} |
||||
.pieTip:after { |
||||
position: absolute; |
||||
left: 50%; |
||||
bottom: -6px; |
||||
content: ""; |
||||
height: 0; |
||||
margin: 0 0 0 -6px; |
||||
border-right: 5px solid transparent; |
||||
border-left: 5px solid transparent; |
||||
border-top: 6px solid rgba(255,255,255,.95); |
||||
line-height: 0; |
||||
} |
||||
.chart path { cursor: pointer; } |
||||
@ -0,0 +1,4 @@ |
||||
@charset "UTF-8"; |
||||
|
||||
@import 'fonticon'; |
||||
@import 'editor'; |
||||
@ -0,0 +1,754 @@ |
||||
@font-face { |
||||
font-family: 'simple-line-icons'; |
||||
src: url('../fonts/Simple-Line-Icons.eot?-i3a2kk'); |
||||
src: url('../fonts/Simple-Line-Icons.eot?#iefix-i3a2kk') format('embedded-opentype'), url('../fonts/Simple-Line-Icons.ttf?-i3a2kk') format('truetype'), url('../fonts/Simple-Line-Icons.woff2?-i3a2kk') format('woff2'), url('../fonts/Simple-Line-Icons.woff?-i3a2kk') format('woff'), url('../fonts/Simple-Line-Icons.svg?-i3a2kk#simple-line-icons') format('svg'); |
||||
font-weight: normal; |
||||
font-style: normal; |
||||
} |
||||
/* |
||||
Use the following CSS code if you want to have a class per icon. |
||||
Instead of a list of all class selectors, you can use the generic [class*="icon-"] selector, but it's slower: |
||||
*/ |
||||
.icon-user, |
||||
.icon-people, |
||||
.icon-user-female, |
||||
.icon-user-follow, |
||||
.icon-user-following, |
||||
.icon-user-unfollow, |
||||
.icon-login, |
||||
.icon-logout, |
||||
.icon-emotsmile, |
||||
.icon-phone, |
||||
.icon-call-end, |
||||
.icon-call-in, |
||||
.icon-call-out, |
||||
.icon-map, |
||||
.icon-location-pin, |
||||
.icon-direction, |
||||
.icon-directions, |
||||
.icon-compass, |
||||
.icon-layers, |
||||
.icon-menu, |
||||
.icon-list, |
||||
.icon-options-vertical, |
||||
.icon-options, |
||||
.icon-arrow-down, |
||||
.icon-arrow-left, |
||||
.icon-arrow-right, |
||||
.icon-arrow-up, |
||||
.icon-arrow-up-circle, |
||||
.icon-arrow-left-circle, |
||||
.icon-arrow-right-circle, |
||||
.icon-arrow-down-circle, |
||||
.icon-check, |
||||
.icon-clock, |
||||
.icon-plus, |
||||
.icon-close, |
||||
.icon-trophy, |
||||
.icon-screen-smartphone, |
||||
.icon-screen-desktop, |
||||
.icon-plane, |
||||
.icon-notebook, |
||||
.icon-mustache, |
||||
.icon-mouse, |
||||
.icon-magnet, |
||||
.icon-energy, |
||||
.icon-disc, |
||||
.icon-cursor, |
||||
.icon-cursor-move, |
||||
.icon-crop, |
||||
.icon-chemistry, |
||||
.icon-speedometer, |
||||
.icon-shield, |
||||
.icon-screen-tablet, |
||||
.icon-magic-wand, |
||||
.icon-hourglass, |
||||
.icon-graduation, |
||||
.icon-ghost, |
||||
.icon-game-controller, |
||||
.icon-fire, |
||||
.icon-eyeglass, |
||||
.icon-envelope-open, |
||||
.icon-envelope-letter, |
||||
.icon-bell, |
||||
.icon-badge, |
||||
.icon-anchor, |
||||
.icon-wallet, |
||||
.icon-vector, |
||||
.icon-speech, |
||||
.icon-puzzle, |
||||
.icon-printer, |
||||
.icon-present, |
||||
.icon-playlist, |
||||
.icon-pin, |
||||
.icon-picture, |
||||
.icon-handbag, |
||||
.icon-globe-alt, |
||||
.icon-globe, |
||||
.icon-folder-alt, |
||||
.icon-folder, |
||||
.icon-film, |
||||
.icon-feed, |
||||
.icon-drop, |
||||
.icon-drawar, |
||||
.icon-docs, |
||||
.icon-doc, |
||||
.icon-diamond, |
||||
.icon-cup, |
||||
.icon-calculator, |
||||
.icon-bubbles, |
||||
.icon-briefcase, |
||||
.icon-book-open, |
||||
.icon-basket-loaded, |
||||
.icon-basket, |
||||
.icon-bag, |
||||
.icon-action-undo, |
||||
.icon-action-redo, |
||||
.icon-wrench, |
||||
.icon-umbrella, |
||||
.icon-trash, |
||||
.icon-tag, |
||||
.icon-support, |
||||
.icon-frame, |
||||
.icon-size-fullscreen, |
||||
.icon-size-actual, |
||||
.icon-shuffle, |
||||
.icon-share-alt, |
||||
.icon-share, |
||||
.icon-rocket, |
||||
.icon-question, |
||||
.icon-pie-chart, |
||||
.icon-pencil, |
||||
.icon-note, |
||||
.icon-loop, |
||||
.icon-home, |
||||
.icon-grid, |
||||
.icon-graph, |
||||
.icon-microphone, |
||||
.icon-music-tone-alt, |
||||
.icon-music-tone, |
||||
.icon-earphones-alt, |
||||
.icon-earphones, |
||||
.icon-equalizer, |
||||
.icon-like, |
||||
.icon-dislike, |
||||
.icon-control-start, |
||||
.icon-control-rewind, |
||||
.icon-control-play, |
||||
.icon-control-pause, |
||||
.icon-control-forward, |
||||
.icon-control-end, |
||||
.icon-volume-1, |
||||
.icon-volume-2, |
||||
.icon-volume-off, |
||||
.icon-calender, |
||||
.icon-bulb, |
||||
.icon-chart, |
||||
.icon-ban, |
||||
.icon-bubble, |
||||
.icon-camrecorder, |
||||
.icon-camera, |
||||
.icon-cloud-download, |
||||
.icon-cloud-upload, |
||||
.icon-envelope, |
||||
.icon-eye, |
||||
.icon-flag, |
||||
.icon-heart, |
||||
.icon-info, |
||||
.icon-key, |
||||
.icon-link, |
||||
.icon-lock, |
||||
.icon-lock-open, |
||||
.icon-magnifier, |
||||
.icon-magnifier-add, |
||||
.icon-magnifier-remove, |
||||
.icon-paper-clip, |
||||
.icon-paper-plane, |
||||
.icon-power, |
||||
.icon-refresh, |
||||
.icon-reload, |
||||
.icon-settings, |
||||
.icon-star, |
||||
.icon-symble-female, |
||||
.icon-symbol-male, |
||||
.icon-target, |
||||
.icon-credit-card, |
||||
.icon-paypal, |
||||
.icon-social-tumblr, |
||||
.icon-social-twitter, |
||||
.icon-social-facebook, |
||||
.icon-social-instagram, |
||||
.icon-social-linkedin, |
||||
.icon-social-pintarest, |
||||
.icon-social-github, |
||||
.icon-social-gplus, |
||||
.icon-social-reddit, |
||||
.icon-social-skype, |
||||
.icon-social-dribbble, |
||||
.icon-social-behance, |
||||
.icon-social-foursqare, |
||||
.icon-social-soundcloud, |
||||
.icon-social-spotify, |
||||
.icon-social-stumbleupon, |
||||
.icon-social-youtube, |
||||
.icon-social-dropbox { |
||||
font-family: 'simple-line-icons'; |
||||
speak: none; |
||||
font-style: normal; |
||||
font-weight: normal; |
||||
font-variant: normal; |
||||
text-transform: none; |
||||
line-height: 1; |
||||
/* Better Font Rendering =========== */ |
||||
-webkit-font-smoothing: antialiased; |
||||
-moz-osx-font-smoothing: grayscale; |
||||
} |
||||
.icon-user:before { |
||||
content: "\e005"; |
||||
} |
||||
.icon-people:before { |
||||
content: "\e001"; |
||||
} |
||||
.icon-user-female:before { |
||||
content: "\e000"; |
||||
} |
||||
.icon-user-follow:before { |
||||
content: "\e002"; |
||||
} |
||||
.icon-user-following:before { |
||||
content: "\e003"; |
||||
} |
||||
.icon-user-unfollow:before { |
||||
content: "\e004"; |
||||
} |
||||
.icon-login:before { |
||||
content: "\e066"; |
||||
} |
||||
.icon-logout:before { |
||||
content: "\e065"; |
||||
} |
||||
.icon-emotsmile:before { |
||||
content: "\e021"; |
||||
} |
||||
.icon-phone:before { |
||||
content: "\e600"; |
||||
} |
||||
.icon-call-end:before { |
||||
content: "\e048"; |
||||
} |
||||
.icon-call-in:before { |
||||
content: "\e047"; |
||||
} |
||||
.icon-call-out:before { |
||||
content: "\e046"; |
||||
} |
||||
.icon-map:before { |
||||
content: "\e033"; |
||||
} |
||||
.icon-location-pin:before { |
||||
content: "\e096"; |
||||
} |
||||
.icon-direction:before { |
||||
content: "\e042"; |
||||
} |
||||
.icon-directions:before { |
||||
content: "\e041"; |
||||
} |
||||
.icon-compass:before { |
||||
content: "\e045"; |
||||
} |
||||
.icon-layers:before { |
||||
content: "\e034"; |
||||
} |
||||
.icon-menu:before { |
||||
content: "\e601"; |
||||
} |
||||
.icon-list:before { |
||||
content: "\e067"; |
||||
} |
||||
.icon-options-vertical:before { |
||||
content: "\e602"; |
||||
} |
||||
.icon-options:before { |
||||
content: "\e603"; |
||||
} |
||||
.icon-arrow-down:before { |
||||
content: "\e604"; |
||||
} |
||||
.icon-arrow-left:before { |
||||
content: "\e605"; |
||||
} |
||||
.icon-arrow-right:before { |
||||
content: "\e606"; |
||||
} |
||||
.icon-arrow-up:before { |
||||
content: "\e607"; |
||||
} |
||||
.icon-arrow-up-circle:before { |
||||
content: "\e078"; |
||||
} |
||||
.icon-arrow-left-circle:before { |
||||
content: "\e07a"; |
||||
} |
||||
.icon-arrow-right-circle:before { |
||||
content: "\e079"; |
||||
} |
||||
.icon-arrow-down-circle:before { |
||||
content: "\e07b"; |
||||
} |
||||
.icon-check:before { |
||||
content: "\e080"; |
||||
} |
||||
.icon-clock:before { |
||||
content: "\e081"; |
||||
} |
||||
.icon-plus:before { |
||||
content: "\e095"; |
||||
} |
||||
.icon-close:before { |
||||
content: "\e082"; |
||||
} |
||||
.icon-trophy:before { |
||||
content: "\e006"; |
||||
} |
||||
.icon-screen-smartphone:before { |
||||
content: "\e010"; |
||||
} |
||||
.icon-screen-desktop:before { |
||||
content: "\e011"; |
||||
} |
||||
.icon-plane:before { |
||||
content: "\e012"; |
||||
} |
||||
.icon-notebook:before { |
||||
content: "\e013"; |
||||
} |
||||
.icon-mustache:before { |
||||
content: "\e014"; |
||||
} |
||||
.icon-mouse:before { |
||||
content: "\e015"; |
||||
} |
||||
.icon-magnet:before { |
||||
content: "\e016"; |
||||
} |
||||
.icon-energy:before { |
||||
content: "\e020"; |
||||
} |
||||
.icon-disc:before { |
||||
content: "\e022"; |
||||
} |
||||
.icon-cursor:before { |
||||
content: "\e06e"; |
||||
} |
||||
.icon-cursor-move:before { |
||||
content: "\e023"; |
||||
} |
||||
.icon-crop:before { |
||||
content: "\e024"; |
||||
} |
||||
.icon-chemistry:before { |
||||
content: "\e026"; |
||||
} |
||||
.icon-speedometer:before { |
||||
content: "\e007"; |
||||
} |
||||
.icon-shield:before { |
||||
content: "\e00e"; |
||||
} |
||||
.icon-screen-tablet:before { |
||||
content: "\e00f"; |
||||
} |
||||
.icon-magic-wand:before { |
||||
content: "\e017"; |
||||
} |
||||
.icon-hourglass:before { |
||||
content: "\e018"; |
||||
} |
||||
.icon-graduation:before { |
||||
content: "\e019"; |
||||
} |
||||
.icon-ghost:before { |
||||
content: "\e01a"; |
||||
} |
||||
.icon-game-controller:before { |
||||
content: "\e01b"; |
||||
} |
||||
.icon-fire:before { |
||||
content: "\e01c"; |
||||
} |
||||
.icon-eyeglass:before { |
||||
content: "\e01d"; |
||||
} |
||||
.icon-envelope-open:before { |
||||
content: "\e01e"; |
||||
} |
||||
.icon-envelope-letter:before { |
||||
content: "\e01f"; |
||||
} |
||||
.icon-bell:before { |
||||
content: "\e027"; |
||||
} |
||||
.icon-badge:before { |
||||
content: "\e028"; |
||||
} |
||||
.icon-anchor:before { |
||||
content: "\e029"; |
||||
} |
||||
.icon-wallet:before { |
||||
content: "\e02a"; |
||||
} |
||||
.icon-vector:before { |
||||
content: "\e02b"; |
||||
} |
||||
.icon-speech:before { |
||||
content: "\e02c"; |
||||
} |
||||
.icon-puzzle:before { |
||||
content: "\e02d"; |
||||
} |
||||
.icon-printer:before { |
||||
content: "\e02e"; |
||||
} |
||||
.icon-present:before { |
||||
content: "\e02f"; |
||||
} |
||||
.icon-playlist:before { |
||||
content: "\e030"; |
||||
} |
||||
.icon-pin:before { |
||||
content: "\e031"; |
||||
} |
||||
.icon-picture:before { |
||||
content: "\e032"; |
||||
} |
||||
.icon-handbag:before { |
||||
content: "\e035"; |
||||
} |
||||
.icon-globe-alt:before { |
||||
content: "\e036"; |
||||
} |
||||
.icon-globe:before { |
||||
content: "\e037"; |
||||
} |
||||
.icon-folder-alt:before { |
||||
content: "\e039"; |
||||
} |
||||
.icon-folder:before { |
||||
content: "\e089"; |
||||
} |
||||
.icon-film:before { |
||||
content: "\e03a"; |
||||
} |
||||
.icon-feed:before { |
||||
content: "\e03b"; |
||||
} |
||||
.icon-drop:before { |
||||
content: "\e03e"; |
||||
} |
||||
.icon-drawar:before { |
||||
content: "\e03f"; |
||||
} |
||||
.icon-docs:before { |
||||
content: "\e040"; |
||||
} |
||||
.icon-doc:before { |
||||
content: "\e085"; |
||||
} |
||||
.icon-diamond:before { |
||||
content: "\e043"; |
||||
} |
||||
.icon-cup:before { |
||||
content: "\e044"; |
||||
} |
||||
.icon-calculator:before { |
||||
content: "\e049"; |
||||
} |
||||
.icon-bubbles:before { |
||||
content: "\e04a"; |
||||
} |
||||
.icon-briefcase:before { |
||||
content: "\e04b"; |
||||
} |
||||
.icon-book-open:before { |
||||
content: "\e04c"; |
||||
} |
||||
.icon-basket-loaded:before { |
||||
content: "\e04d"; |
||||
} |
||||
.icon-basket:before { |
||||
content: "\e04e"; |
||||
} |
||||
.icon-bag:before { |
||||
content: "\e04f"; |
||||
} |
||||
.icon-action-undo:before { |
||||
content: "\e050"; |
||||
} |
||||
.icon-action-redo:before { |
||||
content: "\e051"; |
||||
} |
||||
.icon-wrench:before { |
||||
content: "\e052"; |
||||
} |
||||
.icon-umbrella:before { |
||||
content: "\e053"; |
||||
} |
||||
.icon-trash:before { |
||||
content: "\e054"; |
||||
} |
||||
.icon-tag:before { |
||||
content: "\e055"; |
||||
} |
||||
.icon-support:before { |
||||
content: "\e056"; |
||||
} |
||||
.icon-frame:before { |
||||
content: "\e038"; |
||||
} |
||||
.icon-size-fullscreen:before { |
||||
content: "\e057"; |
||||
} |
||||
.icon-size-actual:before { |
||||
content: "\e058"; |
||||
} |
||||
.icon-shuffle:before { |
||||
content: "\e059"; |
||||
} |
||||
.icon-share-alt:before { |
||||
content: "\e05a"; |
||||
} |
||||
.icon-share:before { |
||||
content: "\e05b"; |
||||
} |
||||
.icon-rocket:before { |
||||
content: "\e05c"; |
||||
} |
||||
.icon-question:before { |
||||
content: "\e05d"; |
||||
} |
||||
.icon-pie-chart:before { |
||||
content: "\e05e"; |
||||
} |
||||
.icon-pencil:before { |
||||
content: "\e05f"; |
||||
} |
||||
.icon-note:before { |
||||
content: "\e060"; |
||||
} |
||||
.icon-loop:before { |
||||
content: "\e064"; |
||||
} |
||||
.icon-home:before { |
||||
content: "\e069"; |
||||
} |
||||
.icon-grid:before { |
||||
content: "\e06a"; |
||||
} |
||||
.icon-graph:before { |
||||
content: "\e06b"; |
||||
} |
||||
.icon-microphone:before { |
||||
content: "\e063"; |
||||
} |
||||
.icon-music-tone-alt:before { |
||||
content: "\e061"; |
||||
} |
||||
.icon-music-tone:before { |
||||
content: "\e062"; |
||||
} |
||||
.icon-earphones-alt:before { |
||||
content: "\e03c"; |
||||
} |
||||
.icon-earphones:before { |
||||
content: "\e03d"; |
||||
} |
||||
.icon-equalizer:before { |
||||
content: "\e06c"; |
||||
} |
||||
.icon-like:before { |
||||
content: "\e068"; |
||||
} |
||||
.icon-dislike:before { |
||||
content: "\e06d"; |
||||
} |
||||
.icon-control-start:before { |
||||
content: "\e06f"; |
||||
} |
||||
.icon-control-rewind:before { |
||||
content: "\e070"; |
||||
} |
||||
.icon-control-play:before { |
||||
content: "\e071"; |
||||
} |
||||
.icon-control-pause:before { |
||||
content: "\e072"; |
||||
} |
||||
.icon-control-forward:before { |
||||
content: "\e073"; |
||||
} |
||||
.icon-control-end:before { |
||||
content: "\e074"; |
||||
} |
||||
.icon-volume-1:before { |
||||
content: "\e09f"; |
||||
} |
||||
.icon-volume-2:before { |
||||
content: "\e0a0"; |
||||
} |
||||
.icon-volume-off:before { |
||||
content: "\e0a1"; |
||||
} |
||||
.icon-calender:before { |
||||
content: "\e075"; |
||||
} |
||||
.icon-bulb:before { |
||||
content: "\e076"; |
||||
} |
||||
.icon-chart:before { |
||||
content: "\e077"; |
||||
} |
||||
.icon-ban:before { |
||||
content: "\e07c"; |
||||
} |
||||
.icon-bubble:before { |
||||
content: "\e07d"; |
||||
} |
||||
.icon-camrecorder:before { |
||||
content: "\e07e"; |
||||
} |
||||
.icon-camera:before { |
||||
content: "\e07f"; |
||||
} |
||||
.icon-cloud-download:before { |
||||
content: "\e083"; |
||||
} |
||||
.icon-cloud-upload:before { |
||||
content: "\e084"; |
||||
} |
||||
.icon-envelope:before { |
||||
content: "\e086"; |
||||
} |
||||
.icon-eye:before { |
||||
content: "\e087"; |
||||
} |
||||
.icon-flag:before { |
||||
content: "\e088"; |
||||
} |
||||
.icon-heart:before { |
||||
content: "\e08a"; |
||||
} |
||||
.icon-info:before { |
||||
content: "\e08b"; |
||||
} |
||||
.icon-key:before { |
||||
content: "\e08c"; |
||||
} |
||||
.icon-link:before { |
||||
content: "\e08d"; |
||||
} |
||||
.icon-lock:before { |
||||
content: "\e08e"; |
||||
} |
||||
.icon-lock-open:before { |
||||
content: "\e08f"; |
||||
} |
||||
.icon-magnifier:before { |
||||
content: "\e090"; |
||||
} |
||||
.icon-magnifier-add:before { |
||||
content: "\e091"; |
||||
} |
||||
.icon-magnifier-remove:before { |
||||
content: "\e092"; |
||||
} |
||||
.icon-paper-clip:before { |
||||
content: "\e093"; |
||||
} |
||||
.icon-paper-plane:before { |
||||
content: "\e094"; |
||||
} |
||||
.icon-power:before { |
||||
content: "\e097"; |
||||
} |
||||
.icon-refresh:before { |
||||
content: "\e098"; |
||||
} |
||||
.icon-reload:before { |
||||
content: "\e099"; |
||||
} |
||||
.icon-settings:before { |
||||
content: "\e09a"; |
||||
} |
||||
.icon-star:before { |
||||
content: "\e09b"; |
||||
} |
||||
.icon-symble-female:before { |
||||
content: "\e09c"; |
||||
} |
||||
.icon-symbol-male:before { |
||||
content: "\e09d"; |
||||
} |
||||
.icon-target:before { |
||||
content: "\e09e"; |
||||
} |
||||
.icon-credit-card:before { |
||||
content: "\e025"; |
||||
} |
||||
.icon-paypal:before { |
||||
content: "\e608"; |
||||
} |
||||
.icon-social-tumblr:before { |
||||
content: "\e00a"; |
||||
} |
||||
.icon-social-twitter:before { |
||||
content: "\e009"; |
||||
} |
||||
.icon-social-facebook:before { |
||||
content: "\e00b"; |
||||
} |
||||
.icon-social-instagram:before { |
||||
content: "\e609"; |
||||
} |
||||
.icon-social-linkedin:before { |
||||
content: "\e60a"; |
||||
} |
||||
.icon-social-pintarest:before { |
||||
content: "\e60b"; |
||||
} |
||||
.icon-social-github:before { |
||||
content: "\e60c"; |
||||
} |
||||
.icon-social-gplus:before { |
||||
content: "\e60d"; |
||||
} |
||||
.icon-social-reddit:before { |
||||
content: "\e60e"; |
||||
} |
||||
.icon-social-skype:before { |
||||
content: "\e60f"; |
||||
} |
||||
.icon-social-dribbble:before { |
||||
content: "\e00d"; |
||||
} |
||||
.icon-social-behance:before { |
||||
content: "\e610"; |
||||
} |
||||
.icon-social-foursqare:before { |
||||
content: "\e611"; |
||||
} |
||||
.icon-social-soundcloud:before { |
||||
content: "\e612"; |
||||
} |
||||
.icon-social-spotify:before { |
||||
content: "\e613"; |
||||
} |
||||
.icon-social-stumbleupon:before { |
||||
content: "\e614"; |
||||
} |
||||
.icon-social-youtube:before { |
||||
content: "\e008"; |
||||
} |
||||
.icon-social-dropbox:before { |
||||
content: "\e00c"; |
||||
} |
||||
@ -0,0 +1,112 @@ |
||||
.hex-particle-container { |
||||
width: 600px; |
||||
height: 600px; |
||||
display: block; |
||||
position: fixed; |
||||
margin-left: -300px; |
||||
margin-top: -300px; |
||||
top: 50%; |
||||
left: 50%; |
||||
} |
||||
|
||||
.hex-p { |
||||
display: none; |
||||
-webkit-transform: translate(200, 200); |
||||
transform: translate(200, 200); |
||||
} |
||||
|
||||
.hex-particle-blue { |
||||
fill: #2196bd; |
||||
} |
||||
.hex-particle-lightblue { |
||||
fill: #4bbfbf; |
||||
} |
||||
.hex-particle-purple { |
||||
fill: #9776b5; |
||||
} |
||||
.hex-particle-violet { |
||||
fill: #d25e9f; |
||||
} |
||||
.hex-particle-green { |
||||
fill: #4daf65; |
||||
} |
||||
.hex-particle-red { |
||||
fill: #d63d3d; |
||||
} |
||||
.hex-particle-orange { |
||||
fill: #f26b3f; |
||||
} |
||||
|
||||
.overlay { |
||||
-webkit-perspective: 600px; |
||||
perspective: 600px; |
||||
position: fixed; |
||||
width: 100%; |
||||
height: 100%; |
||||
background: none; |
||||
-webkit-transform: translateZ(0); |
||||
transform: translateZ(0); |
||||
} |
||||
|
||||
.award-container { |
||||
display: none; |
||||
width: 650px; |
||||
height: 80px; |
||||
position: fixed; |
||||
left: 50%; |
||||
top: 50%; |
||||
margin-left: -325px; |
||||
font-family: 'Open Sans'; |
||||
} |
||||
.award-container img { |
||||
position: absolute; |
||||
top: -25px; |
||||
left: -20px; |
||||
width: 130px; |
||||
height: 130px; |
||||
} |
||||
.award-container .content { |
||||
overflow: hidden; |
||||
position: relative; |
||||
background: #3e3e3c; |
||||
border-radius: 10px; |
||||
box-sizing: border-box; |
||||
padding: 30px; |
||||
height: 63px; |
||||
white-space: no-wrap; |
||||
margin-top: 8px; |
||||
color: #FFF; |
||||
} |
||||
.award-container .unlocked { |
||||
text-transform: uppercase; |
||||
font-size: 11px; |
||||
font-weight: 300; |
||||
text-align: center; |
||||
position: absolute; |
||||
top: 5px; |
||||
padding-left: 10px; |
||||
width: 600px; |
||||
} |
||||
.award-container .achievement { |
||||
font-size: 30px; |
||||
font-weight: 300; |
||||
text-align: center; |
||||
position: absolute; |
||||
font-family: 'Lobster'; |
||||
top: 18px; |
||||
padding-left: 10px; |
||||
width: 600px; |
||||
} |
||||
.award-container .achievement:before { |
||||
content: open-quote; |
||||
} |
||||
.award-container .achievement:after { |
||||
content: close-quote; |
||||
} |
||||
.award-container .close { |
||||
position: absolute; |
||||
top: 5px; |
||||
right: 5px; |
||||
cursor: pointer; |
||||
color: #666; |
||||
} |
||||
@ -0,0 +1,104 @@ |
||||
figure, figcaption { |
||||
display: block; |
||||
} |
||||
|
||||
.transition { |
||||
-webkit-transition: top 400ms linear; |
||||
-moz-transition: top 400ms linear; |
||||
-ms-transition: top 400ms linear; |
||||
-o-transition: top 400ms linear; |
||||
transition: top 400ms linear; |
||||
} |
||||
|
||||
.timeTo { |
||||
font-family: Tahoma, Verdana, Aial, sans-serif; |
||||
font-size: 28px; |
||||
line-height: 108%; |
||||
font-weight: bold; |
||||
height: 32px; |
||||
} |
||||
|
||||
.timeTo span { |
||||
vertical-align: top; |
||||
font-size: 10px; |
||||
padding: 0 10px; |
||||
position: relative; |
||||
top: 10px; |
||||
} |
||||
#countdown{ |
||||
|
||||
} |
||||
|
||||
.timeTo.timeTo-white div { |
||||
color: black; |
||||
background: #ffffff; /* Old browsers */ |
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */ |
||||
border: 13px solid #fff; |
||||
border-radius: 3px; |
||||
margin-left: 10px; |
||||
} |
||||
.timeTo.timeTo-black div { |
||||
color: white; |
||||
background: #45484d; /* Old browsers */ |
||||
background: -moz-linear-gradient(top, #45484d 0%, #000000 100%); /* FF3.6+ */ |
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#45484d), color-stop(100%,#000000)); /* Chrome,Safari4+ */ |
||||
background: -webkit-linear-gradient(top, #45484d 0%,#000000 100%); /* Chrome10+,Safari5.1+ */ |
||||
background: -o-linear-gradient(top, #45484d 0%,#000000 100%); /* Opera 11.10+ */ |
||||
background: -ms-linear-gradient(top, #45484d 0%,#000000 100%); /* IE10+ */ |
||||
background: linear-gradient(to bottom, #45484d 0%,#000000 100%); /* W3C */ |
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#45484d', endColorstr='#000000',GradientType=0 ); /* IE6-9 */ |
||||
} |
||||
|
||||
.timeTo.timeTo-black .timeTo-alert { |
||||
background: #a74444; /* Old browsers */ |
||||
background: -moz-linear-gradient(top, #a74444 0%, #3f0000 67%); /* FF3.6+ */ |
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a74444), color-stop(67%,#3f0000)); /* Chrome,Safari4+ */ |
||||
background: -webkit-linear-gradient(top, #a74444 0%,#3f0000 67%); /* Chrome10+,Safari5.1+ */ |
||||
background: -o-linear-gradient(top, #a74444 0%,#3f0000 67%); /* Opera 11.10+ */ |
||||
background: -ms-linear-gradient(top, #a74444 0%,#3f0000 67%); /* IE10+ */ |
||||
background: linear-gradient(to bottom, #a74444 0%,#3f0000 67%); /* W3C */ |
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a74444', endColorstr='#3f0000',GradientType=0 ); /* IE6-9 */ |
||||
} |
||||
|
||||
.timeTo.timeTo-white .timeTo-alert { |
||||
background: #ffffff; /* Old browsers */ |
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e17373',GradientType=0 ); /* IE6-9 */ |
||||
} |
||||
|
||||
.timeTo figure { |
||||
display: inline-block; |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
.timeTo figcaption { |
||||
text-align: center; |
||||
/*font-size: 12px;*/ |
||||
line-height: 80%; |
||||
font-weight: normal; |
||||
color: #888; |
||||
} |
||||
|
||||
.timeTo div { |
||||
position: relative; |
||||
display: inline-block; |
||||
width: 50px; |
||||
height: 60px; |
||||
overflow: hidden; |
||||
} |
||||
.timeTo div.first { |
||||
margin-left: 0 !important; |
||||
} |
||||
|
||||
.timeTo ul { |
||||
list-style-type: none; |
||||
margin: 0; |
||||
padding: 0; |
||||
position: absolute; |
||||
left: 3px; |
||||
} |
||||
|
||||
.timeTo ul li { |
||||
margin: 0; |
||||
padding: 0; |
||||
list-style: none; |
||||
} |
||||
@ -0,0 +1,53 @@ |
||||
.timer_block { |
||||
background:url(../img/timer1.jpg) no-repeat center top; |
||||
width: 100%; |
||||
height: 804px; |
||||
min-width: 1200px; |
||||
} |
||||
|
||||
.timer_block .timer { |
||||
background:url(../img/bg.png) no-repeat center left; |
||||
width: 650px; |
||||
height: 76px; |
||||
position: absolute; |
||||
top:650px; |
||||
left: 512px; |
||||
} |
||||
.timer_block .timer_wrapp { |
||||
margin: 14px 0 0 14px; |
||||
} |
||||
.timer_block .day, |
||||
.timer_block .hour, |
||||
.timer_block .min, |
||||
.timer_block .sec { |
||||
color: #000; |
||||
font-family: Arial; |
||||
font-weight: bold; |
||||
font-size: 54px; |
||||
line-height: 52px; |
||||
text-align: center; |
||||
letter-spacing: 35px; |
||||
} |
||||
.timer_block .top_line div { |
||||
vertical-align: top; |
||||
display: inline-block; |
||||
} |
||||
|
||||
.timer_block .block { |
||||
width: 123px; |
||||
height: 76px; |
||||
margin-right: 30px; |
||||
position: relative; |
||||
top: -15px; |
||||
} |
||||
.timer_block .last { |
||||
width: 123px; |
||||
} |
||||
.timer_block .desc { |
||||
color: #fff; |
||||
text-align: center; |
||||
width: 93px; |
||||
font-family: 'proxima_nova_blblack'; |
||||
font-size: 14px; |
||||
margin-top: -20px; |
||||
} |
||||