diff --git a/application/displayblock.class.inc.php b/application/displayblock.class.inc.php index c0b461b7d..ad816a360 100644 --- a/application/displayblock.class.inc.php +++ b/application/displayblock.class.inc.php @@ -855,7 +855,7 @@ class DisplayBlock $oPage->add_ready_script( <<add_linked_script('../js/jquery.multiselect.min.js'); $this->add_linked_script('../js/ajaxfileupload.js'); - $aMultiselectOptions = array( - 'header' => true, - 'checkAllText' => Dict::S('UI:SearchValue:CheckAll'), - 'uncheckAllText' => Dict::S('UI:SearchValue:UncheckAll'), - 'noneSelectedText' => Dict::S('UI:SearchValue:Any'), - 'selectedText' => Dict::S('UI:SearchValue:NbSelected'), - 'selectedList' => 1, - ); - $sJSMultiselectOptions = json_encode($aMultiselectOptions); $sSearchAny = addslashes(Dict::S('UI:SearchValue:Any')); $sSearchNbSelected = addslashes(Dict::S('UI:SearchValue:NbSelected')); $this->add_dict_entry('UI:FillAllMandatoryFields'); @@ -227,9 +218,7 @@ EOF; }); } }); - - $('.multiselect').multiselect($sJSMultiselectOptions); - + $('.resizable').filter(':visible').resizable(); } catch(err) @@ -586,6 +575,16 @@ EOF } // Put here the 'ready scripts' that must be executed after all others + $aMultiselectOptions = array( + 'header' => true, + 'checkAllText' => Dict::S('UI:SearchValue:CheckAll'), + 'uncheckAllText' => Dict::S('UI:SearchValue:UncheckAll'), + 'noneSelectedText' => Dict::S('UI:SearchValue:Any'), + 'selectedText' => Dict::S('UI:SearchValue:NbSelected'), + 'selectedList' => 1, + ); + $sJSMultiselectOptions = json_encode($aMultiselectOptions); + $this->add_ready_script( <<GetOutputFormat() == 'html') diff --git a/application/nicewebpage.class.inc.php b/application/nicewebpage.class.inc.php index 1f68a0ec3..902d26c49 100644 --- a/application/nicewebpage.class.inc.php +++ b/application/nicewebpage.class.inc.php @@ -94,7 +94,7 @@ class NiceWebPage extends WebPage $("table.listResults").tableHover(); // hover tables EOF ); - $this->add_linked_stylesheet("../css/light-grey.css"); + $this->add_saas("css/light-grey.scss"); $this->m_sRootUrl = $this->GetAbsoluteUrlAppRoot(); $sAbsURLAppRoot = addslashes($this->m_sRootUrl); diff --git a/css/css-variables.scss b/css/css-variables.scss new file mode 100644 index 000000000..7c240e83e --- /dev/null +++ b/css/css-variables.scss @@ -0,0 +1,6 @@ +$highlight-color: #E87C1E; +$grey-color: #555555; +$complement-color: #1c94c4; +$complement-light: #d6e8ef; +$frame-background-color: #F1F1F1; +$text-color: #000; \ No newline at end of file diff --git a/css/light-grey.css b/css/light-grey.css index d4e38b0fc..39e1204bc 100644 --- a/css/light-grey.css +++ b/css/light-grey.css @@ -1,1425 +1,1945 @@ -/* CSS Document */ -body { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 10pt; - color:#000000; - margin: 0; /* Remove body margin/padding */ - padding: 0; - overflow: hidden; /* Remove scroll bars on browser window */ -} - -/* to prevent flicker, hide the pane's content until it's ready */ -.ui-layout-center, .ui-layout-north, .ui-layout-south { - display: none; -} - -.raw_output { - font-family: Courier-New, Courier, Arial, Helvetica; - font-size: 8pt; - background-color: #eeeeee; - color: #000000; - border: 1px dashed #000000; - padding: 0.25em; - margin-top: 1em; -} - -h1 { - font-family: Tahoma, Verdana, Arial, Helvetica; - color: #000; - font-weight: bold; - font-size: 12pt; -} -h2 { - font-family: Tahoma, Verdana, Arial, Helvetica; - color: #000; - font-weight: normal; - font-size: 12pt; -} -h3 { - font-family: Tahoma, Verdana, Arial, Helvetica; - color: #000; - font-weight: normal; - font-size: 10pt; -} -.hilite, .hilite a, .hilite a:visited { - color: #EB8F00; - text-decoration: none; -} -table.datatable { - width: 100%; - border: 0; - padding: 0; -} -td.menucontainer { - text-align: right; -} -table.listResults { - padding: 0px; - border-top: 3px solid #f6f6f1; - border-left: 3px solid #f6f6f1; - border-bottom: 3px solid #e6e6e1; - border-right: 3px solid #e6e6e1; - width: 100%; - background-color: #fff; -} - -table.listResults td { - padding: 2px; -} - -table.listContainer { - border: 0; - padding: 0; - margin:0; - width: 100%; - clear: both; -} - -tr.containerHeader, tr.containerHeader td { - background: transparent; -} - -tr.even td, .wizContainer tr.even td { - background-color: #f9f9f1; -} -tr.red_even td, .wizContainer tr.red_even td { - background-color: #f97e75; - color: #ffffff; -} -tr.red td, .wizContainer tr.red td { - background-color: #f9a397; - color: #ffffff; -} -tr.orange_even td, .wizContainer tr.orange_even td { - background-color: #f4d07a; -} -tr.orange td, .wizContainer tr.orange td { - background-color: #f4e96c; -} -tr.green_even td, .wizContainer tr.green_even td { - background-color: #bee5a3; -} -tr.green td, .wizContainer tr.green td { - background-color: #b3e5b4; -} - -tr td.hover, tr.even td.hover, .hover a, .hover a:visited, .hover a:hover, .wizContainer tr.even td.hover, .wizContainer tr td.hover { - background-color: #fdf5d0; - color: #000000; -} - -th { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 8pt; - color: #1C94C4; - height:20px; - background: #f6f6f1 url(../images/grey-header.gif) bottom repeat-x; -} - -th.header { - cursor: pointer; - background-repeat: no-repeat; - background-position: center right; - background-image: url(../images/bg.gif); - background-repeat: no-repeat; - padding-right: 16px; // some space for the asc/desc icons -} - -th.headerSortUp { - background-image: url(../images/asc.gif); - text-decoration: underline; - cursor: pointer; -} - -th.headerSortDown { - background-image: url(../images/desc.gif); - text-decoration: underline; - cursor: pointer; -} - -td { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 12px; - color:#696969; - nobackground-color: #ffffff; - padding: 0px; -} - -tr.clicked td { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: smaller; - background-color: #ffcfe8; -} - -td.label { - vertical-align: top; -} -td.label span { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 12px; - color: #000000; - padding: 5px; - padding-right: 10px; - font-weight:bold; - vertical-align: top; - text-align: right; - display: block; -} -fieldset td.label span { - padding: 3px; - padding-right: 10px; -} -fieldset { - margin-top: 3px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; - border-style: solid; - border-color: #ddd; -} - -legend { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 12px; - padding:8px; - color: #fff; - background-color: #1C94C4; - font-weight: bold; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; -} -legend.transparent { - background: transparent; - color: #333333; - font-size: 1em; - font-weight: normal; - padding: 0; -} -.ui-widget-content td legend a, .ui-widget-content td legend a:hover, .ui-widget-content td legend a:visited { - color: #fff; -} - -.ui-widget-content td a, p a, p a:visited, td a, td a:visited { - text-decoration:none; - color: #1C94C4; - padding-left:14px; - background: url(../images/mini-arrow-orange.gif) no-repeat left; -} -p a:hover, td a:hover { - text-decoration:underline; - color:#EB8F00; - padding-left:14px; - background: url(../images/mini-arrow-orange.gif) no-repeat left; -} - -td a.no-arrow, td a.no-arrow:visited, .SearchDrawer a.no-arrow, .SearchDrawer a.no-arrow:visited { - text-decoration:none; - color:#000000; - padding-left:0px; - background: inherit; -} -td a.no-arrow:hover { - text-decoration:underline; - color:#d81515; - padding-left:0px; - background: inherit; -} -td a.mailto, td a.mailto:visited { - text-decoration:none; - color:#000000; - padding-left:20px; - background: url(../images/mail.png) no-repeat left; -} -td a.mailto:hover { - text-decoration:underline; - color:#EB8F00; - padding-left:20px; - background: url(../images/mail.png) no-repeat left; -} - -a.small_action { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 8pt; - color: #000000; - text-decoration:none; -} -.display_block { - padding:0.25em; -} -.actions_details { - float:right; - margin-top:10px; - margin-right:10px; - padding-left: 5px; - padding-top: 2px; - padding-bottom: 2px; - background: url(../images/actions_left.png) no-repeat left; -} -.actions_details span{ - background: url(../images/actions_right.png) no-repeat right; - color: #fff; - font-weight: bold; - padding-top: 2px; - padding-bottom: 2px; - padding-right: 12px; -} -.actions_details a { - text-decoration:none; -} -.loading { - noborder: 1px dashed #CCC; - background: #b9c1c8; - padding:0.25em; -} - -input.textSearch { - border:1px solid #000; - font-family:Tahoma,Verdana, Arial, Helvetica, sans-serif; - font-size: 12px; - color:#000000; -} - -.ac_input { - border: 1px solid #7f9db9; - background: #fff url(../images/ac-background.gif) no-repeat right; -} - -/* By Rom */ -.csvimport_createobj { - color: #AA0000; - background-color:#EEEEEE; -} -.csvimport_error { - font-weight: bold; - color: #FF0000; - background-color:#EEEEEE; -} -.csvimport_warning { - color: #CC8888; - background-color:#EEEEEE; -} -.csvimport_ok { - color: #00000; - background-color:#BBFFBB; -} -.csvimport_reconkey { - font-style: italic; - color: #888888; - background-color:#FFFFF; -} -.csvimport_extreconkey { - color: #888888; - background-color:#FFFFFF; -} - -#accordion h3 { - padding: 10px; -} - -.ui-accordion-content ul { - list-style:none; - padding-left:16px; - margin-top: 8px; -} - -.ui-accordion-content li.submenu { - margin-top: 8px; -} - -.ui-accordion-content ul ul { - padding: 8px 0px 8px 8px; - margin:0; - list-style:none; - border: 0; -} - -.nothing { - noborder-top: 1px solid #8b8b8b; - padding: 4px 0px 0px 16px; - font-size:8pt; - background: url(../images/green-square.gif) no-repeat bottom left; - color:#83b217; - font-weight:bold; - text-decoration:none; -} -div.ui-accordion-content { - padding-top: 10px; - padding-left: 10px; -} -.ui-accordion-content a, ui-accordion-content a:visited { - color: #1C94C4; - text-decoration:none; -} - -.ui-accordion-content a:hover { - color: #EB8F00; - text-decoration: none; -} -.ui-accordion-content p { - color:#8b8b8b; - text-decoration:none; - margin: 0; - padding-bottom: 1px; - font-size: 9pt; - font-weight:normal; - border: 0; -} - -.ui-accordion-content ul { - padding-left: 0; - margin-top: 0; -} - -.ui-accordion-content li { - color:#8b8b8b; - text-decoration:none; - margin: 0; - padding: 0px 0pt 0px 16px; - font-size: 9pt; - background: url(../images/mini-arrow-orange.gif) no-repeat top left; - font-weight:normal; - border: 0; -} - -a.CollapsibleLabel, td a.CollapsibleLabel { - margin: 0; - padding: 0px 0pt 0px 16px; - font-size:8pt; - text-decoration:none; - color:#8b8b8b; - background: url(../images/mini-arrow-orange.gif) no-repeat left; -} - -/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ -a.CollapsibleLabel.open, td a.CollapsibleLabel.open { - margin: 0; - padding: 0px 0pt 0px 16px; - font-size:8pt; - text-decoration:none; - color: #EB8F00; - background: url(../images/mini-arrow-orange-open.gif) no-repeat left; -} - -.page_header { - background-color:#f6f6f1; - padding:5px; -} -/* move up a header immediately following a display block (i.e. "actions" menu) */ -.display_block + .page_header { - margin-top: -8px; -} - -.notreeview li { background: url(../images/tv-item.gif) 0 0 no-repeat; } -.notreeview .collapsable { background-image: url(../images/tv-collapsable.gif); } -.notreeview .expandable { background-image: url(../images/tv-expandable.gif); } -.notreeview .last { background-image: url(../images/tv-item-last.gif); } -.notreeview .lastCollapsable { background-image: url(../images/tv-collapsable-last.gif); } -.notreeview .lastExpandable { background-image: url(../images/tv-expandable-last.gif); } - -#OrganizationSelection { - padding:5px 0px 16px 20px; -} - -/* popup menus */ -div.itop_popup { - margin: 0; - padding: 0; - float:right; -} -div.itop_popup > ul > li { - list-style: none; - cursor: pointer; -} - -div.actions_menu > ul { - height:19px; - line-height: 17px; - vertical-align: middle; - display:block; - nowidth:70px; /* Nasty work-around for IE... en attendant mieux */ - padding-left: 5px; - background: url(../images/actions_left.png) no-repeat top left; - cursor: pointer; - margin: 0; -} - -div.actions_menu > ul > li { - float: left; - list-style: none; - font-size: 11px; - font-family: Tahoma,sans-serif; - height: 17px; - padding-right: 16px; - padding-left: 4px; - background: url(../images/actions_right.png) no-repeat top right transparent; - font-weight: bold; - color: #fff; - vertical-align: middle; - margin: 0; -} -#logOffBtn > ul > li { - list-style: none; - vertical-align: middle; - margin: 0; - padding: 0; - cursor: pointer; -} -#logOffBtn > ul { - list-style: none; - vertical-align: middle; - margin: 0; - padding: 0; - height: 25px; - noline-height: 25px; -} - -.itop_popup li a, #logOffBtn li a { - display: block; - padding: 5px 12px; - text-decoration: none; - nowidth: 70px; - color: #000; - font-weight: bold; - white-space: nowrap; - background: #fff; -} - -#logOffBtn li span { - display: block; - padding: 5px 12px; - text-decoration: none; - nowidth: 70px; - color: #000; - white-space: nowrap; - background: #fff; -} -.itop_popup ul { - padding-left: 0; -} - -.menucontainer div.toolkit_menu { - margin-left: 10px; -} - -.itop_popup li a:hover, #logOffBtn li a:hover { - background: #1A4473; -} - -.itop_popup ul > li > ul, #logOffBtn ul > li > ul -{ - border: 1px solid black; - background: #fff; -} - -.itop_popup li > ul, #logOffBtn li > ul -{ margin: 0; - padding: 0; - position: absolute; - display: none; - border-top: 1px solid white; - z-index: 999; -} - -.itop_popup li ul li, #logOffBtn li ul li { - float: none; - display: inline; -} - -.itop_popup li ul li a, #logOffBtn li ul li a { - width: auto; - text-align: left; -} - -.itop_popup li ul li a:hover, #logOffBtn li ul li a:hover{ - background: #D81515; - color: #fff; - font-weight: bold; -} -.itop_popup > ul { - margin: 0; -} -hr.menu-separator { - border: none 0; - border-top: 1px solid #ccc;; - color: #ccc; - background-color: transparent; - height: 1px; - margin: 3px; - cursor: default; -} -/************************************/ -.wizHeader { - background: #1c94c4; - padding: 15px; -} -.wizSeparator { - float:left; - background: #83b217; - height: 29px; - margin-top: 5px; -} -div.wizActiveStep { - height: 29px; - background: url(../images/wizActiveStepLeft.gif) no-repeat left; - color: #d81515; - padding-left: 8px; - margin-top: 5px; - vertical-align: middle; - float: left; -} -div.wizActiveStep span { - height: 29px; - background: url(../images/wizActiveStepRight.gif) no-repeat top right; - padding-right: 8px; - padding-top: 8px; - float:left; -} - -div.wizStep { - height: 29px; - background: url(../images/wizStepLeft.gif) no-repeat left; - padding-left: 8px; - vertical-align: middle; - margin-top: 5px; - float:left; -} -div.wizStep span { - height: 29px; - background: url(../images/wizStepRight.gif) no-repeat top right; - padding-right: 8px; - padding-top: 8px; - float:left; -} -.wizContainer { - border: 5px solid #1c94c4; - background: #d6e8ef; - padding: 5px; -} - -.wizContainer table tr td { - background: transparent; -} -.alignRight { - text-align: right; - padding: 3px; -} - -.alignLeft { - text-align: left; - padding: 3px; -} - -.red { - background-color: #ff6000; - color: #000; -} - -th.red { - background: url(../images/red-header.gif) bottom left repeat-x; - color: #000; -} - -.green { - background-color: #00cc00; - color: #000; -} -th.green { - background: url(../images/green-header.gif) bottom left repeat-x; - color: #000; -} - -.orange { - background-color: #ffde00; - color: #000; -} - -th.orange { - background: url(../images/orange-header.gif) bottom left repeat-x; - color: #000; -} - -/* For Date Picker: Creates a little calendar icon - * instead of a text link for "Choose date" - */ -td a.dp-choose-date, a.dp-choose-date, td a.dp-choose-date:hover, a.dp-choose-date:hover, td a.dp-choose-date:visited, a.dp-choose-date:visited { - float: left; - width: 16px; - height: 16px; - padding: 0; - margin: 5px 3px 0; - display: block; - text-indent: -2000px; - overflow: hidden; - background: url(../images/calendar.png) no-repeat; -} -td a.dp-choose-date.dp-disabled, a.dp-choose-date.dp-disabled { - background-position: 0 -20px; - cursor: default; -} -/* For Date Picker: makes the input field shorter once the date picker code - * has run (to allow space for the calendar icon) - */ -input.dp-applied { - width: 140px; - float: left; -} - -/* For search forms */ -.SearchDrawer { - //background: #1c94c4 url(../images/search-top-left-corner.png) top left no-repeat; - border-top: 5px solid #1c94c4; - border-left: 5px solid #1c94c4; - border-right: 5px solid #1c94c4; - border-bottom: 0; - background: #d6e8ef; - color: #000; - padding: 10px; - margin: 0; - font-size: 12px; -} -.SearchDrawer label { - background: #d6e8ef; - color: #000; -} -.SearchDrawer h1 { - color: #000; -} -.DrawerClosed { - display: none; -} -.DrawerHandle { - margin: 0; - padding: 5px; - background: url(../images/drawer-handle.gif) bottom no-repeat transparent; - color: #fff; - cursor: pointer; - text-align: center; - /* center the block */ - width: 100px; - margin-left: auto; - margin-right: auto; - margin-top: 0; - margin-bottom: 0; - display: block; - font-size: 12px; -} - -div.HRDrawer { - height: 5px; - width: 100%; - margin: 0; - background-color: #1c94c4; - margin: 0; - padding: 0; - border: 0; - display: block; -} -.mini_tabs a { - text-decoration: none; - font-weight:bold; - color: #ccc; - background-color:#333; - padding-left: 1em; - padding-right: 1em; - padding-bottom: 0.25em; -} -.mini_tabs a.selected { - color: #fff; - background-color: #1c94c4; - padding-top: 0.25em; -} -.mini_tabs ul { - margin: -10px; -} -.mini_tabs ul li { - float: right; - list-style: none; - nopadding-left: 1em; - nopadding-right: 1em; - margin-top: 0; -} -.mandatory { - border: 1px solid #f00; -} - -/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ -table.listResults tr.odd td.truncated, table.listResults tr td.truncated, .wizContainer table.listResults tr.odd td.truncated, .wizContainer table.listResults tr td.truncated { - background: url(../images/truncated.png) bottom repeat-x; -} - -/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ -table.listResults tr.even td.truncated, .wizContainer table.listResults tr.even td.truncated { - background: #f9f9f1 url(../images/truncated.png) bottom repeat-x; -} - -/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ -table.listResults tr.even td.hover.truncated, , .wizContainer table.listResults tr.even td.hover.truncated { - background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; -} - -/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ -table.listResults tr.odd td.hover.truncated, table.listResults tr td.hover.truncated, .wizContainer table.listResults tr.odd td.hover.truncated, .wizContainer table.listResults tr td.hover.truncated { - background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; -} - -table.listResults.truncated { - border-bottom: 0; - padding-bottom: 0; -} - -tr.csv_row0 td { - padding-top:5px; - padding-bottom:5px; - padding-left:10px; - padding-right:10px; - background: #fff; - border-left: #000 1px solid; - -} -tr.csv_row1 td { - padding-top:5px; - padding-bottom:5px; - padding-left:10px; - padding-right:10px; - background: #f9f9f1; - border-left: #000 1px solid; - -} -tr.csv_row1 th, tr.csv_row0 th { - padding-top:5px; - padding-bottom:5px; - padding-left:10px; - padding-right:10px; - border-left: #000 1px solid; - -} - -td.cell_modified { - font-weight: bold; - color: #000; -} - -td.cell_error { - font-weight: bold; - color: #D81515; -} -table.transparent, table.transparent td { - background: transparent; -} -p.page-header { - color:#1c94c4; - font-weight: bold; - font-size: 12pt; - font-family: Verdana, Arial, Helvetica, Sans-Serif -} -td.dashboard { - vertical-align:top; - border: 1px solid #ccc; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; - padding: 10px; - width: 50%; -} -.white { - background-color: #fff; -} - -/*** New Lacanau layout ***/ - -.ui-layout-pane { /* all 'panes' */ - overflow: auto; -} - -.ui-layout-resizer { /* all 'resizer-bars' */ - background: #DDD; -} -.ui-layout-toggler { /* all 'toggler-buttons' */ - background: #AAA; -} -div#top-left { - width: 28px; - height: 70px; - background: #f6f6f1 url(../images/top-left-bkg.png) top left no-repeat; - float:left; -} -div#header-logo { - width: 100%; - height: 70px; - background: #f6f6f1 url(../images/splitter-top.png) top repeat-x; -} -.ui-layout-pane-west { - background: #f6f6f1 url(../images/left-bkg.png) left repeat-y; -} -div#right { - min-width: 260px; -} -div#menu { - width: 100%; - overflow: auto; -} -.header-menu { - padding-left: 24px; - padding-right: 8px; - padding-bottom: 24px; - background: transparent; -} -div#inner_menu { - padding-left: 24px; - padding-right: 8px; - background: transparent; -} -div#logo { - height: 70px; - nowidth: 100%; - text-align: center; -} -div#logo div { - height: 88px; - width: 244px; - background: url(../images/itop-logo-2.png) left no-repeat; -} -#top-bar { - height: 55px; - background: url(../images/banner-bkg.png) repeat-x scroll 0 0 transparent; - text-align: right; -} -#admin-banner { - float: left; - margin-top: 2px; - padding: 8px; - border: 1px solid #c33; - background-color: #fee; - -moz-border-radius: 0.5em; -} -#global-search { - height: 55px; - float: right; - background: url(../images/banner-search.png) no-repeat; - nopadding-top: 15px; - text-align: right; - overflow-y: hidden; -} -#global-search > form div { - padding-left: 4px; -} -#global-search table, #global-search tr td, #global-search tr { - padding: 0; - border: 0; - height: 55px; - margin: 0; - background: transparent; - overflow-y: hidden; - vertical-align: middle; -} -#global-search > form input[type="text"] { - border: 0; - height: 18px; - width: 180px; - padding-top: 4; - background: transparent; -} -#global-search > form tr td#g-search-input { - padding-top: 3px; - padding-left: 3px; - background: transparent; -} -div.icon { - width: 20px; - height: 20px; - margin: 2px; - float: right; -} -span.ui-icon { - float:left; - margin:0 2px; -} -.ui-layout-button-pin-down { - background: url(../images/splitter-bkg.png) transparent; - width: 16px; - background-position: -144px -144px; -} -.ui-layout-resizer-west-open { - background: url(../images/splitter-bkg.png) repeat-y scroll 0 0 transparent; - width: 16px; -} -div.footer img { - border: 0; - margin-bottom: 5px; - margin-top: 5px; -} -div.footer{ - text-align:center; -} -#SearchResultsToAdd table.listResults tbody { - height: 300px; - overflow-y: auto; -} -tr.row_unchanged td { - border-bottom: 1px #ccc solid; - padding: 2px; -} -.wizContainer table tr.row_error td { - border-bottom: 1px #ccc solid; - background-color: #fdd; - padding: 2px; -} -tr.row_modified td { - border-bottom: 1px #ccc solid; - padding: 2px; -} -tr.row_added td { - border-bottom: 1px #ccc solid; - padding: 2px; -} -a.truncated { - cursor: pointer; -} -.org_combo -{ - font-size:x-small; - width: auto; - max-width: 200px; -} -span.form_validation { - width:24px; - text-align:center; -} -.notification { - border: 1px solid #c33; - background-color: #fee; - padding: 0.5em; - margin: 0.5em; - text-align:center; - width: 95%; - -moz-border-radius: 0.5em; -} -.wiki_broken_link { - text-decoration: line-through; -} -.synoptics, .synoptics tr td { - background: transparent; - padding:10px; - font-size:1em; - vertical-align:middle; - color:#fff; - text-align:center; -} -.synoptics tr td.arrow { - color:#333; - border-top: 1px dashed #333; - width:100px; -} -.synoptics tr.synoptics_header td { - color:#000; font-size:1em; - vertical-align:middle; - text-align:center; -} -.mono_value { - display: inline-block; - background-color: #3c3; - color: #fff; - font-weight:bold; - padding: 3px; - padding-left: 5px; - padding-right: 5px; - margin-left:3px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; -} -.multi_values { - display: inline-block; - background-color: #c33; - color: #fff; - font-weight:bold; - padding: 3px; - padding-left: 5px; - padding-right: 5px; - margin-left:3px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; -} -.caselog { - overflow-x: hidden; - display: block; - overflow-y: auto; - border: 1px #ddd solid; - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 12px; -} -.caselog_input_header { - padding-top:3px; - padding-bottom:3px; - border-top:1px solid #fff; - background: #ddd; - width:100%; -} -.caselog_header { - padding:3px; - border-top:1px solid #fff; - background: #ddd url(../images/plus.gif) left no-repeat; - padding-left: 16px; - cursor: pointer; - width:100%; -} -.caselog_header.open { - background: #ddd url(../images/minus.gif) left no-repeat; -} -.caselog_entry { - padding:3px; - padding-left: 16px; - border-bottom:1px #999 solid; - margin-left:0; - margin-right:0; - white-space: pre-wrap; /* css-3 */ - white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* Internet Explorer 5.5+, CSS3 */ -} -table.details { - border-collapse: collapse; - noborder-bottom: 2px #fff solid; - width:100%; -} -table.details>tbody>tr>td { - border-bottom: 2px #ddd solid; - padding-bottom: 5px; - padding-top: 3px; -} -fieldset table.details>tbody>tr>td { - padding-top: 3px; - background: transparent; - border: 0; -} -.ac_dlg_loading { - background: white url('../images/indicator.gif') right center no-repeat; -} -table.pagination { - display:inline-block; -} -table.pagination tr td { - padding: 3px; -} -.pagination_container { - padding-left: 3px; -} -.pager p { - margin-top: 0; - margin-bottom: 0; -} -.pager td span { - min-width: 20px; - padding-left: 2px; - padding-right: 2px; - display:inline-block; - text-align: center; - cursor: pointer; -} - -.pager td span.curr_page { - color: #fff; - background: #999; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; -} -img.prev, img.first, img.next, img.last { - cursor: pointer; -} -div.actions_button { - float:right; - background: url("../images/actions_left.png") no-repeat scroll left top transparent; - padding-left: 5px; - margin-top: 0; - margin-right: 10px; - height:17px; - vertical-align: middle; -} - -div.actions_button a, .actions_button a:hover, .actions_button a:visited { - background:url(../images/actions_bkg.png) no-repeat scroll right top transparent; - color:#fff; - padding-right: 8px; - cursor:pointer; - font-family: Tahoma,sans-serif; - font-size: 11px; - font-weight: bold; - padding-left: 4px; - text-decoration: none; - height:17px; - line-height: 17px; - display: block; -} -select#org_id { - max-width: 90%; -} -/*********** Dashboards ***********/ -.itop-dashboard { - background-color: #fff; -} -.dragHover { - background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); -} -.edit_mode .dashlet { - background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); - padding: 5px; - margin:0; - position:relative; -} -.edit_mode .dashlet-selected { - background: #EB8F00 !important; - padding: 5px; - margin:0; -} -td.layout_cell { - height: 50px; /* min-height does not work */ - vertical-align: top; -} -.dashlet-content { - background: #fff; - margin:0; -} -table.prop_table { - border-bottom: 2px solid #F9F9F1; - padding: 1px; - width: 100%; -} -.close-box { - margin: 5px; - width: 20px; - height: 20px; - position: absolute; - top: 0; - right: 0; - z-index: 10; - background: transparent url(../images/delete.png) no-repeat center; -} -td.prop_value { - text-align: left; -} -tr.itop-property-field-modified td { - background: #fbb; -} -tr.itop-property-field-modified td.hover { - background: #f99; -} -td.prop_value textarea, td.prop_value input[type=text]{ - width: 98%; -} -td.prop_icon { - width: 20px; -} - -.dashlet { - text-align:left; -} -.dashlet-inline { - display: inline-block; -} -.dashlet-badge a.actions { - background: none repeat scroll 0 0 transparent; - color: #666666; - font-size: 16px; - text-decoration: none; -} -.dashlet-content .display_block { - text-align:left; -} -.prop_apply .ui-icon-alert { - display: none; -} -.prop_apply .ui-state-error .ui-icon-alert { - display: block; -} -.ui-state-error .ui-icon-circle-check { - display: none; -} -.summary-details { - float: right; - margin-top: 5px; -} -.summary-details th { - background: none repeat scroll 0 0 #CCCCCC; - color: #EEEEEE; - padding: 5px; - text-align: center; -} -.main_header { - background-color: #F1F1F6; - min-height: 60px; - width: 100%; -} -.main_header h1 { - color: #1C94C4; - line-height: 16px; - margin-bottom: 0; - margin-top: 0; - padding-bottom: 10px; - padding-top: 10px; -} -.main_header img { - margin-top: 10px; - margin-right: 10px; - float:left; -} -a.summary, a.summary:hover { - background: none repeat scroll 0 0 transparent; - color: #666666; - text-decoration: none; - padding-left: 0; -} -.summary-details td { - background: none repeat scroll 0 0 transparent; - padding: 5px; - text-align: center; -} - -#DashboardMenu > ul > li { - list-style: none; - vertical-align: middle; - margin: 0; - padding: 0; - cursor: pointer; -} - -#DashboardMenu > ul { - list-style: none; - vertical-align: middle; - margin: 0; - padding: 0; - height: 25px; -} -#DashboardMenu li a { - display: block; - padding: 5px 12px; - text-decoration: none; - color: #000; - font-weight: bold; - text-align: left; - white-space: nowrap; - background: #fff; -} -#DashboardMenu li span { - display: block; - padding: 5px 12px; - text-decoration: none; - color: #000; - white-space: nowrap; - background: #fff; -} -#DashboardMenu li { - list-style: none; -} -#DashboardMenu li a:hover { - background: #1A4473; -} - -#DashboardMenu ul > li > ul -{ - border: 1px solid black; - background: #fff; -} - -#DashboardMenu li > ul -{ margin: 0; - padding: 0; - position: absolute; - display: none; - border-top: 1px solid white; - z-index: 999; -} -#DashboardMenu li ul li a:hover{ - background: #D81515; - color: #fff; - font-weight: bold; - list-style: none; -} -.sortable_field_list { - display: inline-block; - width: 250px; - height: 150px; - border: 1px #333 solid; - overflow: auto; - padding-left: 0; - margin: 0; -} -.sortable_field_list li { - list-style: none; - font-size: 11px; -} -.sort_order { - display: inline-block; - width: 16px; - height: 12px; -} -.sort_none { - background: url(../images/bg.gif) no-repeat center; -} -.sort_asc { - background: url(../images/desc.gif) no-repeat center; -} -.sort_desc { - background: url(../images/asc.gif) no-repeat center; -} -.sort_hidden { - display: none; -} -.sortable_field_list > li.selected { - background: #F6A828; -} -.itop-deleted-object { - text-decoration: line-through; -} -.header_message { - padding: 1em; - font-size: 10pt; - background: #fff; - border: 1px solid #999; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - margin-bottom: 10px; -} -.header_message { - padding: 1em; - font-size: 10pt; - background: #fff; - border: 1px solid #999; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - margin-bottom: 10px; -} -.message_info { - border: 1px solid #993; - background: url(../images/info-mini.png) 1em 1em no-repeat #ffc; - padding-left: 3em; -} -.message_ok { - border: 1px solid #393; - background: url(../images/ok.png) 1em 1em no-repeat #cfc; - padding-left: 3em; -} -.message_error { - border: 1px solid #933; - background: url(../images/error.png) 1em 1em no-repeat #fcc; - padding-left: 3em; -} -.fg-menu a img { - border: 0; -} -div.ui-dialog-header { - padding-bottom: 10px; - padding-top: 7px; -} -.form_field_error { - border: 1px solid #933; - background: #fcc; -} -.simple-graph { - background: #fff; -} \ No newline at end of file +/* + * CSS Document + */ +body { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 10pt; + color: black; + margin: 0; + /* + * Remove body margin/padding + */ + + padding: 0; + overflow: hidden; + /* + * Remove scroll bars on browser window + */ + +} + + +/* + * to prevent flicker, hide the pane's content until it's ready + */ +.ui-layout-center, .ui-layout-north, .ui-layout-south { + display: none; +} + + +.ui-layout-content { + padding-left: 10px; +} + + +.raw_output { + font-family: Courier-New, Courier, Arial, Helvetica; + font-size: 8pt; + background-color: #eeeeee; + color: black; + border: 1px dashed black; + padding: 0.25em; + margin-top: 1em; +} + + +h1 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: black; + font-weight: bold; + font-size: 12pt; +} + + +h2 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: black; + font-weight: normal; + font-size: 12pt; +} + + +h3 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: black; + font-weight: normal; + font-size: 10pt; +} + + +.hilite, .hilite a, .hilite a:visited { + color: #e87c1e; + text-decoration: none; +} + + +table.datatable { + width: 100%; + border: 0; + padding: 0; +} + + +td.menucontainer { + text-align: right; +} + + +table.listResults { + padding: 0px; + border-top: 3px solid #f1f1f1; + border-left: 3px solid #f1f1f1; + border-bottom: 3px solid #e6e6e1; + border-right: 3px solid #e6e6e1; + width: 100%; + background-color: white; +} + + +table.listResults td { + padding: 2px; +} + + +table.listContainer { + border: 0; + padding: 0; + width: 100%; + clear: both; +} + + +tr.containerHeader, tr.containerHeader td { + background: transparent; +} + + +.wizContainer tr.even td, tr.even td { + background-color: #f1f1f1; +} + + +.wizContainer tr.red_even td, tr.red_even td { + background-color: #f97e75; + color: white; +} + + +.wizContainer tr.red td, tr.red td { + background-color: #f9a397; + color: white; +} + + +.wizContainer tr.orange_even td, tr.orange_even td { + background-color: #f4d07a; +} + + +.wizContainer tr.orange td, tr.orange td { + background-color: #f4e96c; +} + + +.wizContainer tr.green_even td, tr.green_even td { + background-color: #bee5a3; +} + + +.wizContainer tr.green td, tr.green td { + background-color: #b3e5b4; +} + + +.hover a, .hover a:hover, .hover a:visited, .wizContainer tr td.hover, .wizContainer tr.even td.hover, tr td.hover, tr.even td.hover { + background-color: #fdf5d0; + color: black; +} + + +th { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 8pt; + color: #1c94c4; + height: 20px; + background: #f1f1f1 bottom repeat-x; +} + + +th.header { + cursor: pointer; + background-repeat: no-repeat; + background-position: center right; + background-repeat: no-repeat; + padding-right: 16px; +} + + +th.headerSortUp { + background-image: url(../images/asc.gif); + text-decoration: underline; + cursor: pointer; +} + + +th.headerSortDown { + background-image: url(../images/desc.gif); + text-decoration: underline; + cursor: pointer; +} + + +td { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + color: #696969; + nobackground-color: white; + padding: 0px; +} + + +tr.clicked td { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: smaller; + background-color: #ffcfe8; +} + + +td.label { + vertical-align: top; +} + + +td.label span { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + color: black; + padding: 5px; + padding-right: 10px; + font-weight: bold; + vertical-align: top; + text-align: right; + display: block; +} + + +fieldset td.label span { + padding: 3px; + padding-right: 10px; +} + + +fieldset { + margin-top: 3px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + border-style: solid; + border-color: #dddddd; +} + + +legend { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + padding: 8px; + color: white; + background-color: #1c94c4; + font-weight: bold; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; +} + + +legend.transparent { + background: transparent; + color: #333333; + font-size: 1em; + font-weight: normal; + padding: 0; +} + + +.ui-widget-content td legend a, .ui-widget-content td legend a:hover, .ui-widget-content td legend a:visited { + color: white; +} + + +.ui-widget-content td a, p a, p a:visited, td a, td a:visited { + text-decoration: none; + color: #1c94c4; + padding-left: 14px; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} + + +p a:hover, td a:hover { + text-decoration: underline; + color: #e87c1e; + padding-left: 14px; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} + + +.SearchDrawer a.no-arrow, .SearchDrawer a.no-arrow:visited, td a.no-arrow, td a.no-arrow:visited { + text-decoration: none; + color: black; + padding-left: 0px; + background: inherit; +} + + +td a.no-arrow:hover { + text-decoration: underline; + color: #d81515; + padding-left: 0px; + background: inherit; +} + + +td a.mailto, td a.mailto:visited { + text-decoration: none; + color: black; + padding-left: 20px; + background: url(../images/mail.png) no-repeat left; +} + + +td a.mailto:hover { + text-decoration: underline; + color: #e87c1e; + padding-left: 20px; + background: url(../images/mail.png) no-repeat left; +} + + +a.small_action { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 8pt; + color: black; + text-decoration: none; +} + + +.display_block { + padding: 0.25em; +} + + +.actions_details { + float: right; + margin-top: 10px; + margin-right: 10px; + padding-left: 5px; + padding-top: 2px; + padding-bottom: 2px; + background: url(../images/actions_left.png) no-repeat left; +} + + +.actions_details span { + background: url(../images/actions_right.png) no-repeat right; + color: white; + font-weight: bold; + padding-top: 2px; + padding-bottom: 2px; + padding-right: 12px; +} + + +.actions_details a { + text-decoration: none; +} + + +.loading { + noborder: 1px dashed #cccccc; + background: #b9c1c8; + padding: 0.25em; +} + + +input.textSearch { + border: 1px solid black; + font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size: 12px; + color: black; +} + + +.ac_input { + border: 1px solid #7f9db9; + background: white url(../images/ac-background.gif) no-repeat right; +} + + +/* + * By Rom + */ +.csvimport_createobj { + color: #aa0000; + background-color: #eeeeee; +} + + +.csvimport_error { + font-weight: bold; + color: red; + background-color: #eeeeee; +} + + +.csvimport_warning { + color: #cc8888; + background-color: #eeeeee; +} + + +.csvimport_ok { + color: black; + background-color: #bbffbb; +} + + +.csvimport_reconkey { + font-style: italic; + color: #888888; + background-color: white; +} + + +.csvimport_extreconkey { + color: #888888; + background-color: white; +} + + +#accordion h3 { + padding: 10px; +} + + +.ui-accordion-content ul { + list-style: none; + list-style-image: url(data:0); + padding-left: 16px; + margin-top: 8px; +} + + +.ui-accordion-content li.submenu { + margin-top: 8px; +} + + +.ui-accordion-content ul ul { + padding: 8px 0px 8px 8px; + list-style: none; + list-style-image: url(data:0); + border: 0; +} + + +.nothing { + noborder-top: 1px solid #8b8b8b; + padding: 4px 0px 0px 16px; + font-size: 8pt; + background: url(../images/green-square.gif) no-repeat bottom left; + color: #83b217; + font-weight: bold; + text-decoration: none; +} + + +div.ui-accordion-content { + padding-top: 10px; + padding-left: 10px; +} + + +.ui-accordion-content a, ui-accordion-content a:visited { + color: #1c94c4; + text-decoration: none; +} + + +.ui-accordion-content a:hover { + color: #e87c1e; + text-decoration: none; +} + + +.ui-accordion-content ul { + padding-left: 0; + margin-top: 0; +} + + +.ui-accordion-content li { + color: #555555; + text-decoration: none; + margin: 0; + padding: 0px 0pt 0px 16px; + font-size: 9pt; + background: url(../images/mini-arrow-orange.gif) no-repeat top left; + font-weight: normal; + border: 0; +} + + +a.CollapsibleLabel, td a.CollapsibleLabel { + margin: 0; + padding: 0px 0pt 0px 16px; + font-size: 8pt; + text-decoration: none; + color: #555555; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} + + +/* + * Beware: IE6 does not support multiple selector with multiple classes, only the last class is used + */ +a.CollapsibleLabel.open, td a.CollapsibleLabel.open { + margin: 0; + padding: 0px 0pt 0px 16px; + font-size: 8pt; + text-decoration: none; + color: #e87c1e; + background: url(../images/mini-arrow-orange-open.gif) no-repeat left; +} + + +.page_header { + background-color: #f1f1f1; + padding: 5px; +} + + +/* + * move up a header immediately following a display block (i.e. "actions" menu) + */ +.display_block + .page_header { + margin-top: -8px; +} + + +.notreeview li { + background: url(../images/tv-item.gif) 0 0 no-repeat; +} + + +.notreeview .collapsable { + background-image: url(../images/tv-collapsable.gif); +} + + +.notreeview .expandable { + background-image: url(../images/tv-expandable.gif); +} + + +.notreeview .last { + background-image: url(../images/tv-item-last.gif); +} + + +.notreeview .lastCollapsable { + background-image: url(../images/tv-collapsable-last.gif); +} + + +.notreeview .lastExpandable { + background-image: url(../images/tv-expandable-last.gif); +} + + +#OrganizationSelection { + padding: 5px 0px 16px 20px; +} + + +/* + * popup menus + */ +div.itop_popup { + margin: 0; + padding: 0; + float: right; +} + + +div.itop_popup > ul > li { + list-style: none; + cursor: pointer; +} + + +div.actions_menu > ul { + height: 19px; + line-height: 17px; + vertical-align: middle; + display: block; + nowidth: 70px; + /* + * Nasty work-around for IE... en attendant mieux + */ + + padding-left: 5px; + background: url(../images/actions_left.png) no-repeat top left; + cursor: pointer; + margin: 0; +} + + +div.actions_menu > ul > li { + float: left; + list-style: none; + font-size: 11px; + font-family: Tahoma, sans-serif; + height: 17px; + padding-right: 16px; + padding-left: 4px; + background: url(../images/actions_right.png) no-repeat top right transparent; + font-weight: bold; + color: white; + vertical-align: middle; + margin: 0; +} + + +#logOffBtn > ul > li { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; +} + + +#logOffBtn > ul { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + height: 25px; + noline-height: 25px; +} + + +#logOffBtn li a, .itop_popup li a { + display: block; + padding: 5px 12px; + text-decoration: none; + nowidth: 70px; + color: black; + font-weight: bold; + white-space: nowrap; + background: white; +} + + +#logOffBtn li span { + display: block; + padding: 5px 12px; + text-decoration: none; + nowidth: 70px; + color: black; + white-space: nowrap; + background: white; +} + + +.itop_popup ul { + padding-left: 0; +} + + +.menucontainer div.toolkit_menu { + margin-left: 10px; +} + + +#logOffBtn li a:hover, .itop_popup li a:hover { + background: #1a4473; +} + + +#logOffBtn ul > li > ul, .itop_popup ul > li > ul { + border: 1px solid black; + background: white; +} + + +#logOffBtn li > ul, .itop_popup li > ul { + margin: 0; + padding: 0; + position: absolute; + display: none; + border-top: 1px solid white; + z-index: 999; +} + + +#logOffBtn li ul li, .itop_popup li ul li { + float: none; + display: inline; +} + + +#logOffBtn li ul li a, .itop_popup li ul li a { + width: auto; + text-align: left; +} + + +#logOffBtn li ul li a:hover, .itop_popup li ul li a:hover { + background: #e87c1e; + color: white; + font-weight: bold; +} + + +.itop_popup > ul { + margin: 0; +} + + +hr.menu-separator { + border: none 0; + border-top: 1px solid #cccccc; + color: #cccccc; + background-color: transparent; + height: 1px; + margin: 3px; + cursor: default; +} + + +/* + * ********************************** + */ +.wizHeader { + background: #1c94c4; + padding: 15px; +} + + +.wizContainer { + border: 5px solid #1c94c4; + background: #d6e8ef; + padding: 5px; +} + + +.wizContainer table tr td { + background: transparent; +} + + +.alignRight { + text-align: right; + padding: 3px; +} + + +.alignLeft { + text-align: left; + padding: 3px; +} + + +.red { + background-color: #ff6000; + color: black; +} + + +th.red { + background: url(../images/red-header.gif) bottom left repeat-x; + color: black; +} + + +.green { + background-color: #00cc00; + color: black; +} + + +th.green { + background: url(../images/green-header.gif) bottom left repeat-x; + color: black; +} + + +.orange { + background-color: #ffde00; + color: black; +} + + +th.orange { + background: url(../images/orange-header.gif) bottom left repeat-x; + color: black; +} + + +/* + * For Date Picker: Creates a little calendar icon + * * instead of a text link for "Choose date" + */ +a.dp-choose-date, a.dp-choose-date:hover, a.dp-choose-date:visited, td a.dp-choose-date, td a.dp-choose-date:hover, td a.dp-choose-date:visited { + float: left; + width: 16px; + height: 16px; + padding: 0; + margin: 5px 3px 0; + display: block; + text-indent: -2000px; + overflow: hidden; + background: url(../images/calendar.png) no-repeat; +} + + +a.dp-choose-date.dp-disabled, td a.dp-choose-date.dp-disabled { + background-position: 0 -20px; + cursor: default; +} + + +/* + * For Date Picker: makes the input field shorter once the date picker code + * * has run (to allow space for the calendar icon) + */ +input.dp-applied { + width: 140px; + float: left; +} + + +/* + * For search forms + */ +.SearchDrawer { + border-top: 5px solid #1c94c4; + border-left: 5px solid #1c94c4; + border-right: 5px solid #1c94c4; + border-bottom: 0; + background: #d6e8ef; + color: black; + padding: 10px; + margin: 0; + font-size: 12px; +} + + +.SearchDrawer label { + background: #d6e8ef; + color: black; +} + + +.SearchDrawer h1 { + color: black; +} + + +.DrawerClosed { + display: none; +} + + +.DrawerHandle { + margin: 0; + padding: 5px; + background: url(../images/drawer-handle.gif) bottom no-repeat transparent; + color: white; + cursor: pointer; + text-align: center; + /* + * center the block + */ + + width: 100px; + margin-left: auto; + margin-right: auto; + margin-top: 0; + margin-bottom: 0; + display: block; + font-size: 12px; +} + + +div.HRDrawer { + height: 5px; + width: 100%; + margin: 0; + background-color: #1c94c4; + margin: 0; + padding: 0; + border: 0; + display: block; +} + + +.mini_tabs a { + text-decoration: none; + font-weight: bold; + color: #cccccc; + background-color: #333333; + padding-left: 1em; + padding-right: 1em; + padding-bottom: 0.25em; +} + + +.mini_tabs a.selected { + color: white; + background-color: #1c94c4; + padding-top: 0.25em; +} + + +.mini_tabs ul { + margin: -10px; +} + + +.mini_tabs ul li { + float: right; + list-style: none; + nopadding-left: 1em; + nopadding-right: 1em; + margin-top: 0; +} + + +.mandatory { + border: 1px solid red; +} + + +/* + * Beware: IE6 does not support multiple selector with multiple classes, only the last class is used + */ +.wizContainer table.listResults tr td.truncated, .wizContainer table.listResults tr.odd td.truncated, table.listResults tr td.truncated, table.listResults tr.odd td.truncated { + background: url(../images/truncated.png) bottom repeat-x; +} + + +/* + * Beware: IE6 does not support multiple selector with multiple classes, only the last class is used + */ +.wizContainer table.listResults tr.even td.truncated, table.listResults tr.even td.truncated { + background: #f9f9f1 url(../images/truncated.png) bottom repeat-x; +} + + +/* + * Beware: IE6 does not support multiple selector with multiple classes, only the last class is used + */ +, .wizContainer table.listResults tr.even td.hover.truncated, table.listResults tr.even td.hover.truncated { + background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; +} + + +/* + * Beware: IE6 does not support multiple selector with multiple classes, only the last class is used + */ +.wizContainer table.listResults tr td.hover.truncated, .wizContainer table.listResults tr.odd td.hover.truncated, table.listResults tr td.hover.truncated, table.listResults tr.odd td.hover.truncated { + background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; +} + + +table.listResults.truncated { + border-bottom: 0; + padding-bottom: 0; +} + + +tr.csv_row0 td { + padding-top: 5px; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + background: white; + border-left: black 1px solid; +} + + +tr.csv_row1 td { + padding-top: 5px; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + background: #f9f9f1; + border-left: black 1px solid; +} + + +tr.csv_row0 th, tr.csv_row1 th { + padding-top: 5px; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + border-left: black 1px solid; +} + + +td.cell_modified { + font-weight: bold; + color: black; +} + + +td.cell_error { + font-weight: bold; + color: #d81515; +} + + +table.transparent, table.transparent td { + background: transparent; +} + + +p.page-header { + color: #1c94c4; + font-weight: bold; + font-size: 12pt; + font-family: Verdana, Arial, Helvetica, Sans-Serif; +} + + +td.dashboard { + vertical-align: top; + border: 1px solid #cccccc; + padding: 0.5em; + width: 50%; +} + + +.white { + background-color: white; +} + + +/* + * ** New Lacanau layout ** + */ +.ui-layout-pane { + /* + * all 'panes' + */ + + overflow: auto; +} + + +.ui-layout-resizer { + /* + * all 'resizer-bars' + */ + + background: #f1f1f1; +} + + +.ui-layout-toggler { + /* + * all 'toggler-buttons' + */ + + background: #aaaaaa; +} + + +div#top-left { + width: 28px; + height: 70px; + background: #f1f1f1; + float: left; +} + + +div#header-logo { + width: 100%; + height: 70px; + background: #f1f1f1; +} + + +.ui-layout-pane-west { + background: #f1f1f1; +} + + +div#right { + min-width: 260px; +} + + +div#menu { + width: 100%; + overflow: auto; +} + + +.header-menu { + padding-left: 24px; + padding-right: 8px; + padding-bottom: 24px; + background: transparent; +} + + +div#inner_menu { + padding-left: 24px; + padding-right: 8px; + background: transparent; +} + + +div#logo { + height: 70px; + nowidth: 100%; + text-align: center; +} + + +div#logo div { + height: 88px; + width: 244px; + background: url(../images/itop-logo-2.png) left no-repeat; +} + + +#left-pane .ui-layout-north { + overflow: hidden; +} + + +#top-bar { + height: 55px; + background: #f1f1f1; + text-align: right; +} + + +#admin-banner { + float: left; + margin-top: 2px; + padding: 8px; + border: 1px solid #cc3333; + background-color: #ffeeee; + -moz-border-radius: 0.5em; +} + + +#global-search { + height: 55px; + float: right; + background: url(../images/banner-search.png) no-repeat; + nopadding-top: 15px; + text-align: right; + overflow-y: hidden; +} + + +#global-search > form div { + padding-left: 4px; +} + + +#global-search table, #global-search tr, #global-search tr td { + padding: 0; + border: 0; + height: 55px; + margin: 0; + background: transparent; + overflow-y: hidden; + vertical-align: middle; +} + + +#global-search > form input[type="text"] { + border: 0; + height: 18px; + width: 180px; + padding-top: 4; + background: transparent; +} + + +#global-search > form tr td#g-search-input { + padding-top: 3px; + padding-left: 3px; + background: transparent; +} + + +div.icon { + width: 20px; + height: 20px; + margin: 2px; + float: right; +} + + +span.ui-icon { + float: left; + margin: 0 2px; +} + + +.ui-layout-button-pin-down { + background: url(../images/splitter-bkg.png) transparent; + width: 16px; + background-position: -144px -144px; +} + + +.ui-layout-resizer-west-open { + background-color: #f1f1f1; + width: 8px; +} + + +div.footer img { + border: 0; + margin-bottom: 5px; + margin-top: 5px; +} + + +div.footer { + text-align: center; +} + + +#SearchResultsToAdd table.listResults tbody { + height: 300px; + overflow-y: auto; +} + + +tr.row_unchanged td { + border-bottom: 1px #cccccc solid; + padding: 2px; +} + + +.wizContainer table tr.row_error td { + border-bottom: 1px #cccccc solid; + background-color: #ffdddd; + padding: 2px; +} + + +tr.row_modified td { + border-bottom: 1px #cccccc solid; + padding: 2px; +} + + +tr.row_added td { + border-bottom: 1px #cccccc solid; + padding: 2px; +} + + +a.truncated { + cursor: pointer; +} + + +.org_combo { + font-size: x-small; + width: auto; + max-width: 200px; +} + + +span.form_validation { + width: 24px; + text-align: center; +} + + +.notification { + border: 1px solid #cc3333; + background-color: #ffeeee; + padding: 0.5em; + margin: 0.5em; + text-align: center; + width: 95%; + -moz-border-radius: 0.5em; +} + + +.wiki_broken_link { + text-decoration: line-through; +} + + +.synoptics, .synoptics tr td { + background: transparent; + padding: 10px; + font-size: 1em; + vertical-align: middle; + color: white; + text-align: center; +} + + +.synoptics tr td.arrow { + color: #333333; + border-top: 1px dashed #333333; + width: 100px; +} + + +.synoptics tr.synoptics_header td { + color: black; + font-size: 1em; + vertical-align: middle; + text-align: center; +} + + +.mono_value { + display: inline-block; + background-color: #33cc33; + color: white; + font-weight: bold; + padding: 3px; + padding-left: 5px; + padding-right: 5px; + margin-left: 3px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} + + +.multi_values { + display: inline-block; + background-color: #cc3333; + color: white; + font-weight: bold; + padding: 3px; + padding-left: 5px; + padding-right: 5px; + margin-left: 3px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} + + +.caselog { + overflow-x: hidden; + display: block; + overflow-y: auto; + border: 1px #dddddd solid; + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; +} + + +.caselog_input_header { + padding-top: 3px; + padding-bottom: 3px; + border-top: 1px solid white; + background: #dddddd; + width: 100%; +} + + +.caselog_header { + padding: 3px; + border-top: 1px solid white; + background: #dddddd url(../images/plus.gif) left no-repeat; + padding-left: 16px; + cursor: pointer; + width: 100%; +} + + +.caselog_header.open { + background: #dddddd url(../images/minus.gif) left no-repeat; +} + + +.caselog_entry { + padding: 3px; + padding-left: 16px; + border-bottom: 1px #999999 solid; + white-space: pre-wrap; + /* + * css-3 + */ + + white-space: -moz-pre-wrap; + /* + * Mozilla, since 1999 + */ + + white-space: -pre-wrap; + /* + * Opera 4-6 + */ + + white-space: -o-pre-wrap; + /* + * Opera 7 + */ + + word-wrap: break-word; + /* + * Internet Explorer 5.5+, CSS3 + */ + +} + + +table.details { + border-collapse: collapse; + noborder-bottom: 2px white solid; + width: 100%; +} + + +table.details>tbody>tr>td { + border-bottom: 2px #dddddd solid; + padding-bottom: 5px; + padding-top: 3px; +} + + +fieldset table.details>tbody>tr>td { + padding-top: 3px; + background: transparent; + border: 0; +} + + +.ac_dlg_loading { + background: white url('../images/indicator.gif') right center no-repeat; +} + + +table.pagination { + display: inline-block; +} + + +table.pagination tr td { + padding: 3px; +} + + +.pagination_container { + padding-left: 3px; +} + + +.pager p { + margin-top: 0; + margin-bottom: 0; +} + + +.pager td span { + min-width: 20px; + padding-left: 2px; + padding-right: 2px; + display: inline-block; + text-align: center; + cursor: pointer; +} + + +.pager td span.curr_page { + color: white; + background: #999999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + + +img.first, img.last, img.next, img.prev { + cursor: pointer; +} + + +div.actions_button { + float: right; + background: url("../images/actions_left.png") no-repeat scroll left top transparent; + padding-left: 5px; + margin-top: 0; + margin-right: 10px; + height: 17px; + vertical-align: middle; +} + + +.actions_button a:hover, .actions_button a:visited, div.actions_button a { + background: url(../images/actions_bkg.png) no-repeat scroll right top transparent; + color: white; + padding-right: 8px; + cursor: pointer; + font-family: Tahoma, sans-serif; + font-size: 11px; + font-weight: bold; + padding-left: 4px; + text-decoration: none; + height: 17px; + line-height: 17px; + display: block; +} + + +select#org_id { + max-width: 90%; +} + + +/* + * ********** Dashboards ********** + */ +.itop-dashboard { + background-color: white; +} + + +.dragHover { + background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); +} + + +.edit_mode .dashlet { + background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); + padding: 5px; + position: relative; +} + + +.edit_mode .dashlet-selected { + background: #e87c1e !important; + padding: 5px; +} + + +td.layout_cell { + height: 50px; + /* + * min-height does not work + */ + + vertical-align: top; +} + + +.dashlet-content { + background: white; +} + + +table.prop_table { + border-bottom: 2px solid #f9f9f1; + padding: 1px; + width: 100%; +} + + +.close-box { + margin: 5px; + width: 20px; + height: 20px; + position: absolute; + top: 0; + right: 0; + z-index: 10; + background: transparent url(../images/delete.png) no-repeat center; +} + + +td.prop_value { + text-align: left; +} + + +tr.itop-property-field-modified td { + background: #ffbbbb; +} + + +tr.itop-property-field-modified td.hover { + background: #ff9999; +} + + +td.prop_value input[type=text], td.prop_value textarea { + width: 98%; +} + + +td.prop_icon { + width: 20px; +} + + +.dashlet { + text-align: left; +} + + +.dashlet-inline { + display: inline-block; +} + + +.dashlet-badge a.actions { + background: none repeat scroll 0 0 transparent; + color: #666666; + font-size: 16px; + text-decoration: none; +} + + +.dashlet-content .display_block { + text-align: left; +} + + +.prop_apply .ui-icon-alert { + display: none; +} + + +.prop_apply .ui-state-error .ui-icon-alert { + display: block; +} + + +.ui-state-error .ui-icon-circle-check { + display: none; +} + + +.summary-details { + float: right; + margin-top: 5px; +} + + +.summary-details th { + background: none repeat scroll 0 0 #555555; + color: #eeeeee; + padding: 5px; + text-align: center; +} + + +.main_header { + background-color: #f1f1f1; + min-height: 60px; + width: 100%; +} + + +.main_header h1 { + color: #1c94c4; + line-height: 16px; + margin-bottom: 0; + margin-top: 0; + padding-bottom: 10px; + padding-top: 10px; +} + + +.main_header img { + margin-top: 10px; + margin-right: 10px; + float: left; +} + + +a.summary, a.summary:hover { + background: none repeat scroll 0 0 transparent; + color: #666666; + text-decoration: none; + padding-left: 0; +} + + +.summary-details td { + background: none repeat scroll 0 0 transparent; + padding: 5px; + text-align: center; +} + + +#DashboardMenu > ul > li { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; +} + + +#DashboardMenu > ul { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + height: 25px; +} + + +#DashboardMenu li a { + display: block; + padding: 5px 12px; + text-decoration: none; + color: black; + font-weight: bold; + text-align: left; + white-space: nowrap; + background: white; +} + + +#DashboardMenu li span { + display: block; + padding: 5px 12px; + text-decoration: none; + color: black; + white-space: nowrap; + background: white; +} + + +#DashboardMenu li { + list-style: none; +} + + +#DashboardMenu li a:hover { + background: #1a4473; +} + + +#DashboardMenu ul > li > ul { + border: 1px solid black; + background: white; +} + + +#DashboardMenu li > ul { + margin: 0; + padding: 0; + position: absolute; + display: none; + border-top: 1px solid white; + z-index: 999; +} + + +#DashboardMenu li ul li a:hover { + background: #d81515; + color: white; + font-weight: bold; + list-style: none; +} + + +.sortable_field_list { + display: inline-block; + width: 250px; + height: 150px; + border: 1px #333333 solid; + overflow: auto; + padding-left: 0; + margin: 0; +} + + +.sortable_field_list li { + list-style: none; + font-size: 11px; +} + + +.sort_order { + display: inline-block; + width: 16px; + height: 12px; +} + + +.sort_none { + background: url(../images/bg.gif) no-repeat center; +} + + +.sort_asc { + background: url(../images/desc.gif) no-repeat center; +} + + +.sort_desc { + background: url(../images/asc.gif) no-repeat center; +} + + +.sort_hidden { + display: none; +} + + +.sortable_field_list > li.selected { + background: #f6a828; +} + + +.itop-deleted-object { + text-decoration: line-through; +} + + +.header_message { + padding: 1em; + font-size: 10pt; + background: white; + border: 1px solid #999999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin-bottom: 10px; +} + + +.header_message { + padding: 1em; + font-size: 10pt; + background: white; + border: 1px solid #999999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin-bottom: 10px; +} + + +.message_info { + border: 1px solid #999933; + background: url(../images/info-mini.png) 1em 1em no-repeat #ffffcc; + padding-left: 3em; +} + + +.message_ok { + border: 1px solid #339933; + background: url(../images/ok.png) 1em 1em no-repeat #ccffcc; + padding-left: 3em; +} + + +.message_error { + border: 1px solid #993333; + background: url(../images/error.png) 1em 1em no-repeat #ffcccc; + padding-left: 3em; +} + + +.fg-menu a img { + border: 0; +} + + +div.ui-dialog-header { + padding-bottom: 10px; + padding-top: 7px; +} + + +.form_field_error { + border: 1px solid #993333; + background: #ffcccc; +} + + +.graph_config, .simple-graph { + background: white; +} + + +.graph_config { + padding: 0.25em; +} + + +.graph_config button.ui-widget { + font-size: 12px; +} + + +.arrow:after, .ui-tooltip { + background: #f1f1f1; + border: 1px solid #555555; +} + + +.ui-tooltip { + padding: 10px 10px; + box-shadow: 0 0 7px black; +} + + +.arrow { + width: 70px; + height: 16px; + overflow: hidden; + position: absolute; + left: 50%; + margin-left: -35px; + bottom: -16px; +} + + +.arrow.top { + top: -16px; + bottom: auto; +} + + +.arrow.left { + left: 20%; +} + + +.arrow:after { + content: ""; + position: absolute; + left: 20px; + top: -20px; + width: 25px; + height: 25px; + box-shadow: 6px 5px 9px -9px black; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + + +.arrow.top:after { + bottom: -20px; + top: auto; +} + + diff --git a/css/light-grey.scss b/css/light-grey.scss new file mode 100644 index 000000000..46ffc0481 --- /dev/null +++ b/css/light-grey.scss @@ -0,0 +1,1439 @@ +@import 'css-variables.scss'; + +$hilight-color = $highlight-color; +$summary-details-background = $grey-color; +$main-header-background = $frame-background-color; +$table-even-background = $frame-background-color; +$popup-menu-highlight-color = $highlight-color; +$popup-menu-text-color: #000; +$popup-menu-background-color: #fff; +$popup-menu-text-higlight-color: #fff; + +/* CSS Document */ +body { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 10pt; + color: $text-color; + margin: 0; /* Remove body margin/padding */ + padding: 0; + overflow: hidden; /* Remove scroll bars on browser window */ +} + +/* to prevent flicker, hide the pane's content until it's ready */ +.ui-layout-center, .ui-layout-north, .ui-layout-south { + display: none; +} +.ui-layout-content { + padding-left: 10px; +} + +.raw_output { + font-family: Courier-New, Courier, Arial, Helvetica; + font-size: 8pt; + background-color: #eeeeee; + color: $text-color; + border: 1px dashed $text-color; + padding: 0.25em; + margin-top: 1em; +} + +h1 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: $text-color; + font-weight: bold; + font-size: 12pt; +} +h2 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: $text-color; + font-weight: normal; + font-size: 12pt; +} +h3 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: $text-color; + font-weight: normal; + font-size: 10pt; +} +.hilite, .hilite a, .hilite a:visited { + color: $hilight-color; + text-decoration: none; +} +table.datatable { + width: 100%; + border: 0; + padding: 0; +} +td.menucontainer { + text-align: right; +} +table.listResults { + padding: 0px; + border-top: 3px solid $frame-background-color; + border-left: 3px solid $frame-background-color; + border-bottom: 3px solid #e6e6e1; + border-right: 3px solid #e6e6e1; + width: 100%; + background-color: #fff; +} + +table.listResults td { + padding: 2px; +} + +table.listContainer { + border: 0; + padding: 0; + margin:0; + width: 100%; + clear: both; +} + +tr.containerHeader, tr.containerHeader td { + background: transparent; +} + +tr.even td, .wizContainer tr.even td { + background-color: $table-even-background; +} +tr.red_even td, .wizContainer tr.red_even td { + background-color: #f97e75; + color: #fff; +} +tr.red td, .wizContainer tr.red td { + background-color: #f9a397; + color: #fff; +} +tr.orange_even td, .wizContainer tr.orange_even td { + background-color: #f4d07a; +} +tr.orange td, .wizContainer tr.orange td { + background-color: #f4e96c; +} +tr.green_even td, .wizContainer tr.green_even td { + background-color: #bee5a3; +} +tr.green td, .wizContainer tr.green td { + background-color: #b3e5b4; +} + +tr td.hover, tr.even td.hover, .hover a, .hover a:visited, .hover a:hover, .wizContainer tr.even td.hover, .wizContainer tr td.hover { + background-color: #fdf5d0; + color: $text-color; +} + +th { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 8pt; + color: $complement-color; + height:20px; + background: $frame-background-color bottom repeat-x; +} + +th.header { + cursor: pointer; + background-repeat: no-repeat; + background-position: center right; + background-repeat: no-repeat; + padding-right: 16px; // some space for the asc/desc icons +} + +th.headerSortUp { + background-image: url(../images/asc.gif); + text-decoration: underline; + cursor: pointer; +} + +th.headerSortDown { + background-image: url(../images/desc.gif); + text-decoration: underline; + cursor: pointer; +} + +td { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + color:#696969; + nobackground-color: #ffffff; + padding: 0px; +} + +tr.clicked td { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: smaller; + background-color: #ffcfe8; +} + +td.label { + vertical-align: top; +} +td.label span { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + color: #000000; + padding: 5px; + padding-right: 10px; + font-weight:bold; + vertical-align: top; + text-align: right; + display: block; +} +fieldset td.label span { + padding: 3px; + padding-right: 10px; +} +fieldset { + margin-top: 3px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + border-style: solid; + border-color: #ddd; +} + +legend { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + padding:8px; + color: #fff; + background-color: $complement-color; + font-weight: bold; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; +} +legend.transparent { + background: transparent; + color: #333333; + font-size: 1em; + font-weight: normal; + padding: 0; +} +.ui-widget-content td legend a, .ui-widget-content td legend a:hover, .ui-widget-content td legend a:visited { + color: #fff; +} + +.ui-widget-content td a, p a, p a:visited, td a, td a:visited { + text-decoration:none; + color: $complement-color; + padding-left:14px; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} +p a:hover, td a:hover { + text-decoration:underline; + color:$highlight-color; + padding-left:14px; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} + +td a.no-arrow, td a.no-arrow:visited, .SearchDrawer a.no-arrow, .SearchDrawer a.no-arrow:visited { + text-decoration:none; + color:#000000; + padding-left:0px; + background: inherit; +} +td a.no-arrow:hover { + text-decoration:underline; + color:#d81515; + padding-left:0px; + background: inherit; +} +td a.mailto, td a.mailto:visited { + text-decoration:none; + color:#000000; + padding-left:20px; + background: url(../images/mail.png) no-repeat left; +} +td a.mailto:hover { + text-decoration:underline; + color:$highlight-color; + padding-left:20px; + background: url(../images/mail.png) no-repeat left; +} + +a.small_action { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 8pt; + color: #000000; + text-decoration:none; +} +.display_block { + padding:0.25em; +} +.actions_details { + float:right; + margin-top:10px; + margin-right:10px; + padding-left: 5px; + padding-top: 2px; + padding-bottom: 2px; + background: url(../images/actions_left.png) no-repeat left; +} +.actions_details span{ + background: url(../images/actions_right.png) no-repeat right; + color: #fff; + font-weight: bold; + padding-top: 2px; + padding-bottom: 2px; + padding-right: 12px; +} +.actions_details a { + text-decoration:none; +} +.loading { + noborder: 1px dashed #CCC; + background: #b9c1c8; + padding:0.25em; +} + +input.textSearch { + border:1px solid #000; + font-family:Tahoma,Verdana, Arial, Helvetica, sans-serif; + font-size: 12px; + color:#000000; +} + +.ac_input { + border: 1px solid #7f9db9; + background: #fff url(../images/ac-background.gif) no-repeat right; +} + +/* By Rom */ +.csvimport_createobj { + color: #AA0000; + background-color:#EEEEEE; +} +.csvimport_error { + font-weight: bold; + color: #FF0000; + background-color:#EEEEEE; +} +.csvimport_warning { + color: #CC8888; + background-color:#EEEEEE; +} +.csvimport_ok { + color: #00000; + background-color:#BBFFBB; +} +.csvimport_reconkey { + font-style: italic; + color: #888888; + background-color:#FFFFF; +} +.csvimport_extreconkey { + color: #888888; + background-color:#FFFFFF; +} + +#accordion h3 { + padding: 10px; +} + +.ui-accordion-content ul { + list-style:none; + list-style-image: url(data:0); + padding-left:16px; + margin-top: 8px; +} + +.ui-accordion-content li.submenu { + margin-top: 8px; +} + +.ui-accordion-content ul ul { + padding: 8px 0px 8px 8px; + margin:0; + list-style:none; + list-style-image: url(data:0); + border: 0; +} + +.nothing { + noborder-top: 1px solid #8b8b8b; + padding: 4px 0px 0px 16px; + font-size:8pt; + background: url(../images/green-square.gif) no-repeat bottom left; + color:#83b217; + font-weight:bold; + text-decoration:none; +} +div.ui-accordion-content { + padding-top: 10px; + padding-left: 10px; +} +.ui-accordion-content a, ui-accordion-content a:visited { + color: $complement-color; + text-decoration:none; +} + +.ui-accordion-content a:hover { + color: $highlight-color; + text-decoration: none; +} + +.ui-accordion-content ul { + padding-left: 0; + margin-top: 0; +} + +.ui-accordion-content li { + color:$grey-color; + text-decoration:none; + margin: 0; + padding: 0px 0pt 0px 16px; + font-size: 9pt; + background: url(../images/mini-arrow-orange.gif) no-repeat top left; + font-weight:normal; + border: 0; +} + +a.CollapsibleLabel, td a.CollapsibleLabel { + margin: 0; + padding: 0px 0pt 0px 16px; + font-size:8pt; + text-decoration:none; + color:$grey-color; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} + +/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ +a.CollapsibleLabel.open, td a.CollapsibleLabel.open { + margin: 0; + padding: 0px 0pt 0px 16px; + font-size:8pt; + text-decoration:none; + color: $highlight-color; + background: url(../images/mini-arrow-orange-open.gif) no-repeat left; +} + +.page_header { + background-color:$frame-background-color; + padding:5px; +} +/* move up a header immediately following a display block (i.e. "actions" menu) */ +.display_block + .page_header { + margin-top: -8px; +} + +.notreeview li { background: url(../images/tv-item.gif) 0 0 no-repeat; } +.notreeview .collapsable { background-image: url(../images/tv-collapsable.gif); } +.notreeview .expandable { background-image: url(../images/tv-expandable.gif); } +.notreeview .last { background-image: url(../images/tv-item-last.gif); } +.notreeview .lastCollapsable { background-image: url(../images/tv-collapsable-last.gif); } +.notreeview .lastExpandable { background-image: url(../images/tv-expandable-last.gif); } + +#OrganizationSelection { + padding:5px 0px 16px 20px; +} + +/* popup menus */ +div.itop_popup { + margin: 0; + padding: 0; + float:right; +} +div.itop_popup > ul > li { + list-style: none; + cursor: pointer; +} + +div.actions_menu > ul { + height:19px; + line-height: 17px; + vertical-align: middle; + display:block; + nowidth:70px; /* Nasty work-around for IE... en attendant mieux */ + padding-left: 5px; + background: url(../images/actions_left.png) no-repeat top left; + cursor: pointer; + margin: 0; +} + +div.actions_menu > ul > li { + float: left; + list-style: none; + font-size: 11px; + font-family: Tahoma,sans-serif; + height: 17px; + padding-right: 16px; + padding-left: 4px; + background: url(../images/actions_right.png) no-repeat top right transparent; + font-weight: bold; + color: $popup-menu-text-higlight-color; + vertical-align: middle; + margin: 0; +} +#logOffBtn > ul > li { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; +} +#logOffBtn > ul { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + height: 25px; + noline-height: 25px; +} + +.itop_popup li a, #logOffBtn li a { + display: block; + padding: 5px 12px; + text-decoration: none; + nowidth: 70px; + color: $popup-menu-text-color; + font-weight: bold; + white-space: nowrap; + background: $popup-menu-background-color; +} + +#logOffBtn li span { + display: block; + padding: 5px 12px; + text-decoration: none; + nowidth: 70px; + color: $popup-menu-text-color; + white-space: nowrap; + background: $popup-menu-background-color; +} +.itop_popup ul { + padding-left: 0; +} + +.menucontainer div.toolkit_menu { + margin-left: 10px; +} + +.itop_popup li a:hover, #logOffBtn li a:hover { + background: #1A4473; +} + +.itop_popup ul > li > ul, #logOffBtn ul > li > ul +{ + border: 1px solid black; + background: #fff; +} + +.itop_popup li > ul, #logOffBtn li > ul +{ margin: 0; + padding: 0; + position: absolute; + display: none; + border-top: 1px solid white; + z-index: 999; +} + +.itop_popup li ul li, #logOffBtn li ul li { + float: none; + display: inline; +} + +.itop_popup li ul li a, #logOffBtn li ul li a { + width: auto; + text-align: left; +} + +.itop_popup li ul li a:hover, #logOffBtn li ul li a:hover{ + background: $popup-menu-highlight-color; + color: $popup-menu-text-higlight-color; + font-weight: bold; +} +.itop_popup > ul { + margin: 0; +} +hr.menu-separator { + border: none 0; + border-top: 1px solid #ccc; + color: #ccc; + background-color: transparent; + height: 1px; + margin: 3px; + cursor: default; +} +/************************************/ +.wizHeader { + background: $complement-color; + padding: 15px; +} +.wizContainer { + border: 5px solid $complement-color; + background: $complement-light; + padding: 5px; +} + +.wizContainer table tr td { + background: transparent; +} +.alignRight { + text-align: right; + padding: 3px; +} + +.alignLeft { + text-align: left; + padding: 3px; +} + +.red { + background-color: #ff6000; + color: #000; +} + +th.red { + background: url(../images/red-header.gif) bottom left repeat-x; + color: #000; +} + +.green { + background-color: #00cc00; + color: #000; +} +th.green { + background: url(../images/green-header.gif) bottom left repeat-x; + color: #000; +} + +.orange { + background-color: #ffde00; + color: #000; +} + +th.orange { + background: url(../images/orange-header.gif) bottom left repeat-x; + color: #000; +} + +/* For Date Picker: Creates a little calendar icon + * instead of a text link for "Choose date" + */ +td a.dp-choose-date, a.dp-choose-date, td a.dp-choose-date:hover, a.dp-choose-date:hover, td a.dp-choose-date:visited, a.dp-choose-date:visited { + float: left; + width: 16px; + height: 16px; + padding: 0; + margin: 5px 3px 0; + display: block; + text-indent: -2000px; + overflow: hidden; + background: url(../images/calendar.png) no-repeat; +} +td a.dp-choose-date.dp-disabled, a.dp-choose-date.dp-disabled { + background-position: 0 -20px; + cursor: default; +} +/* For Date Picker: makes the input field shorter once the date picker code + * has run (to allow space for the calendar icon) + */ +input.dp-applied { + width: 140px; + float: left; +} + +/* For search forms */ +.SearchDrawer { + //background: $complement-color url(../images/search-top-left-corner.png) top left no-repeat; + border-top: 5px solid $complement-color; + border-left: 5px solid $complement-color; + border-right: 5px solid $complement-color; + border-bottom: 0; + background: $complement-light; + color: #000; + padding: 10px; + margin: 0; + font-size: 12px; +} +.SearchDrawer label { + background: $complement-light; + color: #000; +} +.SearchDrawer h1 { + color: #000; +} +.DrawerClosed { + display: none; +} +.DrawerHandle { + margin: 0; + padding: 5px; + background: url(../images/drawer-handle.gif) bottom no-repeat transparent; + color: #fff; + cursor: pointer; + text-align: center; + /* center the block */ + width: 100px; + margin-left: auto; + margin-right: auto; + margin-top: 0; + margin-bottom: 0; + display: block; + font-size: 12px; +} + +div.HRDrawer { + height: 5px; + width: 100%; + margin: 0; + background-color: $complement-color; + margin: 0; + padding: 0; + border: 0; + display: block; +} +.mini_tabs a { + text-decoration: none; + font-weight:bold; + color: #ccc; + background-color:#333; + padding-left: 1em; + padding-right: 1em; + padding-bottom: 0.25em; +} +.mini_tabs a.selected { + color: #fff; + background-color: $complement-color; + padding-top: 0.25em; +} +.mini_tabs ul { + margin: -10px; +} +.mini_tabs ul li { + float: right; + list-style: none; + nopadding-left: 1em; + nopadding-right: 1em; + margin-top: 0; +} +.mandatory { + border: 1px solid #f00; +} + +/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ +table.listResults tr.odd td.truncated, table.listResults tr td.truncated, .wizContainer table.listResults tr.odd td.truncated, .wizContainer table.listResults tr td.truncated { + background: url(../images/truncated.png) bottom repeat-x; +} + +/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ +table.listResults tr.even td.truncated, .wizContainer table.listResults tr.even td.truncated { + background: #f9f9f1 url(../images/truncated.png) bottom repeat-x; +} + +/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ +table.listResults tr.even td.hover.truncated, , .wizContainer table.listResults tr.even td.hover.truncated { + background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; +} + +/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ +table.listResults tr.odd td.hover.truncated, table.listResults tr td.hover.truncated, .wizContainer table.listResults tr.odd td.hover.truncated, .wizContainer table.listResults tr td.hover.truncated { + background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; +} + +table.listResults.truncated { + border-bottom: 0; + padding-bottom: 0; +} + +tr.csv_row0 td { + padding-top:5px; + padding-bottom:5px; + padding-left:10px; + padding-right:10px; + background: #fff; + border-left: #000 1px solid; + +} +tr.csv_row1 td { + padding-top:5px; + padding-bottom:5px; + padding-left:10px; + padding-right:10px; + background: #f9f9f1; + border-left: #000 1px solid; + +} +tr.csv_row1 th, tr.csv_row0 th { + padding-top:5px; + padding-bottom:5px; + padding-left:10px; + padding-right:10px; + border-left: #000 1px solid; + +} + +td.cell_modified { + font-weight: bold; + color: #000; +} + +td.cell_error { + font-weight: bold; + color: #D81515; +} +table.transparent, table.transparent td { + background: transparent; +} +p.page-header { + color:$complement-color; + font-weight: bold; + font-size: 12pt; + font-family: Verdana, Arial, Helvetica, Sans-Serif +} +td.dashboard { + vertical-align:top; + border: 1px solid #ccc; + padding: 0.5em; + width: 50%; +} +.white { + background-color: #fff; +} + +/*** New Lacanau layout ***/ + +.ui-layout-pane { /* all 'panes' */ + overflow: auto; +} + +.ui-layout-resizer { /* all 'resizer-bars' */ + background: #f1f1f1; +} +.ui-layout-toggler { /* all 'toggler-buttons' */ + background: #AAA; +} +div#top-left { + width: 28px; + height: 70px; + background: $frame-background-color; + float:left; +} +div#header-logo { + width: 100%; + height: 70px; + background: $frame-background-color; +} +.ui-layout-pane-west { + background: $frame-background-color; +} +div#right { + min-width: 260px; +} +div#menu { + width: 100%; + overflow: auto; +} +.header-menu { + padding-left: 24px; + padding-right: 8px; + padding-bottom: 24px; + background: transparent; +} +div#inner_menu { + padding-left: 24px; + padding-right: 8px; + background: transparent; +} +div#logo { + height: 70px; + nowidth: 100%; + text-align: center; +} +div#logo div { + height: 88px; + width: 244px; + background: url(../images/itop-logo-2.png) left no-repeat; +} +#left-pane .ui-layout-north { + overflow: hidden; +} +#top-bar { + height: 55px; + background: $frame-background-color; + text-align: right; +} +#admin-banner { + float: left; + margin-top: 2px; + padding: 8px; + border: 1px solid #c33; + background-color: #fee; + -moz-border-radius: 0.5em; +} +#global-search { + height: 55px; + float: right; + background: url(../images/banner-search.png) no-repeat; + nopadding-top: 15px; + text-align: right; + overflow-y: hidden; +} +#global-search > form div { + padding-left: 4px; +} +#global-search table, #global-search tr td, #global-search tr { + padding: 0; + border: 0; + height: 55px; + margin: 0; + background: transparent; + overflow-y: hidden; + vertical-align: middle; +} +#global-search > form input[type="text"] { + border: 0; + height: 18px; + width: 180px; + padding-top: 4; + background: transparent; +} +#global-search > form tr td#g-search-input { + padding-top: 3px; + padding-left: 3px; + background: transparent; +} +div.icon { + width: 20px; + height: 20px; + margin: 2px; + float: right; +} +span.ui-icon { + float:left; + margin:0 2px; +} +.ui-layout-button-pin-down { + background: url(../images/splitter-bkg.png) transparent; + width: 16px; + background-position: -144px -144px; +} +.ui-layout-resizer-west-open { + background-color: $frame-background-color; + width: 8px; +} +div.footer img { + border: 0; + margin-bottom: 5px; + margin-top: 5px; +} +div.footer{ + text-align:center; +} +#SearchResultsToAdd table.listResults tbody { + height: 300px; + overflow-y: auto; +} +tr.row_unchanged td { + border-bottom: 1px #ccc solid; + padding: 2px; +} +.wizContainer table tr.row_error td { + border-bottom: 1px #ccc solid; + background-color: #fdd; + padding: 2px; +} +tr.row_modified td { + border-bottom: 1px #ccc solid; + padding: 2px; +} +tr.row_added td { + border-bottom: 1px #ccc solid; + padding: 2px; +} +a.truncated { + cursor: pointer; +} +.org_combo +{ + font-size:x-small; + width: auto; + max-width: 200px; +} +span.form_validation { + width:24px; + text-align:center; +} +.notification { + border: 1px solid #c33; + background-color: #fee; + padding: 0.5em; + margin: 0.5em; + text-align:center; + width: 95%; + -moz-border-radius: 0.5em; +} +.wiki_broken_link { + text-decoration: line-through; +} +.synoptics, .synoptics tr td { + background: transparent; + padding:10px; + font-size:1em; + vertical-align:middle; + color:#fff; + text-align:center; +} +.synoptics tr td.arrow { + color:#333; + border-top: 1px dashed #333; + width:100px; +} +.synoptics tr.synoptics_header td { + color:#000; font-size:1em; + vertical-align:middle; + text-align:center; +} +.mono_value { + display: inline-block; + background-color: #3c3; + color: #fff; + font-weight:bold; + padding: 3px; + padding-left: 5px; + padding-right: 5px; + margin-left:3px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} +.multi_values { + display: inline-block; + background-color: #c33; + color: #fff; + font-weight:bold; + padding: 3px; + padding-left: 5px; + padding-right: 5px; + margin-left:3px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} +.caselog { + overflow-x: hidden; + display: block; + overflow-y: auto; + border: 1px #ddd solid; + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; +} +.caselog_input_header { + padding-top:3px; + padding-bottom:3px; + border-top:1px solid #fff; + background: #ddd; + width:100%; +} +.caselog_header { + padding:3px; + border-top:1px solid #fff; + background: #ddd url(../images/plus.gif) left no-repeat; + padding-left: 16px; + cursor: pointer; + width:100%; +} +.caselog_header.open { + background: #ddd url(../images/minus.gif) left no-repeat; +} +.caselog_entry { + padding:3px; + padding-left: 16px; + border-bottom:1px #999 solid; + margin-left:0; + margin-right:0; + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+, CSS3 */ +} +table.details { + border-collapse: collapse; + noborder-bottom: 2px #fff solid; + width:100%; +} +table.details>tbody>tr>td { + border-bottom: 2px #ddd solid; + padding-bottom: 5px; + padding-top: 3px; +} +fieldset table.details>tbody>tr>td { + padding-top: 3px; + background: transparent; + border: 0; +} +.ac_dlg_loading { + background: white url('../images/indicator.gif') right center no-repeat; +} +table.pagination { + display:inline-block; +} +table.pagination tr td { + padding: 3px; +} +.pagination_container { + padding-left: 3px; +} +.pager p { + margin-top: 0; + margin-bottom: 0; +} +.pager td span { + min-width: 20px; + padding-left: 2px; + padding-right: 2px; + display:inline-block; + text-align: center; + cursor: pointer; +} + +.pager td span.curr_page { + color: #fff; + background: #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} +img.prev, img.first, img.next, img.last { + cursor: pointer; +} +div.actions_button { + float:right; + background: url("../images/actions_left.png") no-repeat scroll left top transparent; + padding-left: 5px; + margin-top: 0; + margin-right: 10px; + height:17px; + vertical-align: middle; +} + +div.actions_button a, .actions_button a:hover, .actions_button a:visited { + background:url(../images/actions_bkg.png) no-repeat scroll right top transparent; + color:#fff; + padding-right: 8px; + cursor:pointer; + font-family: Tahoma,sans-serif; + font-size: 11px; + font-weight: bold; + padding-left: 4px; + text-decoration: none; + height:17px; + line-height: 17px; + display: block; +} +select#org_id { + max-width: 90%; +} +/*********** Dashboards ***********/ +.itop-dashboard { + background-color: #fff; +} +.dragHover { + background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); +} +.edit_mode .dashlet { + background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); + padding: 5px; + margin:0; + position:relative; +} +.edit_mode .dashlet-selected { + background: $highlight-color !important; + padding: 5px; + margin:0; +} +td.layout_cell { + height: 50px; /* min-height does not work */ + vertical-align: top; +} +.dashlet-content { + background: #fff; + margin:0; +} +table.prop_table { + border-bottom: 2px solid #F9F9F1; + padding: 1px; + width: 100%; +} +.close-box { + margin: 5px; + width: 20px; + height: 20px; + position: absolute; + top: 0; + right: 0; + z-index: 10; + background: transparent url(../images/delete.png) no-repeat center; +} +td.prop_value { + text-align: left; +} +tr.itop-property-field-modified td { + background: #fbb; +} +tr.itop-property-field-modified td.hover { + background: #f99; +} +td.prop_value textarea, td.prop_value input[type=text]{ + width: 98%; +} +td.prop_icon { + width: 20px; +} + +.dashlet { + text-align:left; +} +.dashlet-inline { + display: inline-block; +} +.dashlet-badge a.actions { + background: none repeat scroll 0 0 transparent; + color: #666666; + font-size: 16px; + text-decoration: none; +} +.dashlet-content .display_block { + text-align:left; +} +.prop_apply .ui-icon-alert { + display: none; +} +.prop_apply .ui-state-error .ui-icon-alert { + display: block; +} +.ui-state-error .ui-icon-circle-check { + display: none; +} +.summary-details { + float: right; + margin-top: 5px; +} +.summary-details th { + background: none repeat scroll 0 0 $summary-details-background; + color: #EEEEEE; + padding: 5px; + text-align: center; +} +.main_header { + background-color: $main-header-background; + min-height: 60px; + width: 100%; +} +.main_header h1 { + color: $complement-color; + line-height: 16px; + margin-bottom: 0; + margin-top: 0; + padding-bottom: 10px; + padding-top: 10px; +} +.main_header img { + margin-top: 10px; + margin-right: 10px; + float:left; +} +a.summary, a.summary:hover { + background: none repeat scroll 0 0 transparent; + color: #666666; + text-decoration: none; + padding-left: 0; +} +.summary-details td { + background: none repeat scroll 0 0 transparent; + padding: 5px; + text-align: center; +} + +#DashboardMenu > ul > li { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; +} + +#DashboardMenu > ul { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + height: 25px; +} +#DashboardMenu li a { + display: block; + padding: 5px 12px; + text-decoration: none; + color: #000; + font-weight: bold; + text-align: left; + white-space: nowrap; + background: #fff; +} +#DashboardMenu li span { + display: block; + padding: 5px 12px; + text-decoration: none; + color: #000; + white-space: nowrap; + background: #fff; +} +#DashboardMenu li { + list-style: none; +} +#DashboardMenu li a:hover { + background: #1A4473; +} + +#DashboardMenu ul > li > ul +{ + border: 1px solid black; + background: #fff; +} + +#DashboardMenu li > ul +{ margin: 0; + padding: 0; + position: absolute; + display: none; + border-top: 1px solid white; + z-index: 999; +} +#DashboardMenu li ul li a:hover{ + background: #D81515; + color: #fff; + font-weight: bold; + list-style: none; +} +.sortable_field_list { + display: inline-block; + width: 250px; + height: 150px; + border: 1px #333 solid; + overflow: auto; + padding-left: 0; + margin: 0; +} +.sortable_field_list li { + list-style: none; + font-size: 11px; +} +.sort_order { + display: inline-block; + width: 16px; + height: 12px; +} +.sort_none { + background: url(../images/bg.gif) no-repeat center; +} +.sort_asc { + background: url(../images/desc.gif) no-repeat center; +} +.sort_desc { + background: url(../images/asc.gif) no-repeat center; +} +.sort_hidden { + display: none; +} +.sortable_field_list > li.selected { + background: #F6A828; +} +.itop-deleted-object { + text-decoration: line-through; +} +.header_message { + padding: 1em; + font-size: 10pt; + background: #fff; + border: 1px solid #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin-bottom: 10px; +} +.header_message { + padding: 1em; + font-size: 10pt; + background: #fff; + border: 1px solid #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin-bottom: 10px; +} +.message_info { + border: 1px solid #993; + background: url(../images/info-mini.png) 1em 1em no-repeat #ffc; + padding-left: 3em; +} +.message_ok { + border: 1px solid #393; + background: url(../images/ok.png) 1em 1em no-repeat #cfc; + padding-left: 3em; +} +.message_error { + border: 1px solid #933; + background: url(../images/error.png) 1em 1em no-repeat #fcc; + padding-left: 3em; +} +.fg-menu a img { + border: 0; +} +div.ui-dialog-header { + padding-bottom: 10px; + padding-top: 7px; +} +.form_field_error { + border: 1px solid #933; + background: #fcc; +} +.simple-graph, .graph_config { + background: #fff; +} +.graph_config { + padding: 0.25em; +} +.graph_config button.ui-widget { + font-size: 12px; +} +.ui-tooltip, .arrow:after { + background: $frame-background-color; + border: 1px solid $grey-color; +} +.ui-tooltip { + padding: 10px 10px; + box-shadow: 0 0 7px black; +} +.arrow { + width: 70px; + height: 16px; + overflow: hidden; + position: absolute; + left: 50%; + margin-left: -35px; + bottom: -16px; +} +.arrow.top { + top: -16px; + bottom: auto; +} +.arrow.left { + left: 20%; +} +.arrow:after { + content: ""; + position: absolute; + left: 20px; + top: -20px; + width: 25px; + height: 25px; + box-shadow: 6px 5px 9px -9px black; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} +.arrow.top:after { + bottom: -20px; + top: auto; +} \ No newline at end of file diff --git a/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png index e20472bb8..ea3abcbd5 100644 Binary files a/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png and b/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png differ diff --git a/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png index 1ed713580..61826c13c 100644 Binary files a/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png and b/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png differ diff --git a/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png index bbabfb194..c9c77a43a 100644 Binary files a/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png and b/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png differ diff --git a/css/ui-lightness/images/ui-icons_222222_256x240.png b/css/ui-lightness/images/ui-icons_222222_256x240.png index c1cb1170c..e9c8e16ac 100644 Binary files a/css/ui-lightness/images/ui-icons_222222_256x240.png and b/css/ui-lightness/images/ui-icons_222222_256x240.png differ diff --git a/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/css/ui-lightness/images/ui-icons_ffd27a_256x240.png index 8b6c05868..4435b497e 100644 Binary files a/css/ui-lightness/images/ui-icons_ffd27a_256x240.png and b/css/ui-lightness/images/ui-icons_ffd27a_256x240.png differ diff --git a/css/ui-lightness/images/ui-icons_ffffff_256x240.png b/css/ui-lightness/images/ui-icons_ffffff_256x240.png index 4f624bb2b..4d66f596e 100644 Binary files a/css/ui-lightness/images/ui-icons_ffffff_256x240.png and b/css/ui-lightness/images/ui-icons_ffffff_256x240.png differ diff --git a/css/ui-lightness/jquery-ui-1.10.3.custom.css b/css/ui-lightness/jquery-ui-1.10.3.custom.css new file mode 100755 index 000000000..8cc642501 --- /dev/null +++ b/css/ui-lightness/jquery-ui-1.10.3.custom.css @@ -0,0 +1,1178 @@ +/*! jQuery UI - v1.10.4 - 2015-04-25 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=0&bgColorHeader=%23E87C1E&bgTextureHeader=flat&bgImgOpacityHeader=35&borderColorHeader=%23F26522&fcHeader=%23ffffff&iconColorHeader=%23ffffff&bgColorContent=%23eeeeee&bgTextureContent=flat&bgImgOpacityContent=100&borderColorContent=%23dddddd&fcContent=%23333333&iconColorContent=%23222222&bgColorDefault=%23f1f1f1&bgTextureDefault=flat&bgImgOpacityDefault=100&borderColorDefault=%23cccccc&fcDefault=%23555555&iconColorDefault=%23F26522&bgColorHover=%23fde17c&bgTextureHover=flat&bgImgOpacityHover=100&borderColorHover=%23E87C1E&fcHover=%23E87C1E&iconColorHover=%23E87C1E&bgColorActive=%23ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=%23E87C1E&fcActive=%23E87C1E&iconColorActive=%23E87C1E&bgColorHighlight=%23ffe45c&bgTextureHighlight=flat&bgImgOpacityHighlight=75&borderColorHighlight=%23fed22f&fcHighlight=%23363636&iconColorHighlight=%231c94c4&bgColorError=%23b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=%23cd0a0a&fcError=%23ffffff&iconColorError=%23ffd27a&bgColorOverlay=%23666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=%23000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px +* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.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; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin-top: 2px; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-noicons { + padding-left: .7em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.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; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.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-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 49%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + overflow: hidden; + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 20px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-menu { + list-style: none; + padding: 2px; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + margin-top: -3px; + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 100%; + /* support: IE10, see #8844 */ + list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); +} +.ui-menu .ui-menu-divider { + margin: 5px -2px 5px -2px; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: 2px .4em; + line-height: 1.5; + min-height: 0; /* support: IE7 */ + font-weight: normal; +} +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} + +.ui-menu .ui-state-disabled { + font-weight: normal; + margin: .4em 0 .2em; + line-height: 1.5; +} +.ui-menu .ui-state-disabled a { + cursor: default; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item a { + position: relative; + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: .2em; + left: .2em; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + position: static; + float: right; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("images/animated-overlay.gif"); + height: 100%; + filter: alpha(opacity=25); + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* For IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to override default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertically center icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav .ui-tabs-anchor { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { + cursor: text; +} +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #dddddd; + background: #eeeeee url("images/ui-bg_flat_100_eeeeee_40x100.png") 50% 50% repeat-x; + color: #333333; +} +.ui-widget-content a { + color: #333333; +} +.ui-widget-header { + border: 1px solid #F26522; + background: #E87C1E url("images/ui-bg_flat_35_E87C1E_40x100.png") 50% 50% repeat-x; + color: #ffffff; + font-weight: bold; +} +.ui-widget-header a { + color: #ffffff; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #cccccc; + background: #f1f1f1 url("images/ui-bg_flat_100_f1f1f1_40x100.png") 50% 50% repeat-x; + font-weight: bold; + color: #555555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #E87C1E; + background: #fde17c url("images/ui-bg_flat_100_fde17c_40x100.png") 50% 50% repeat-x; + font-weight: bold; + color: #E87C1E; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited { + color: #E87C1E; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #E87C1E; + background: #ffffff url("images/ui-bg_flat_65_ffffff_40x100.png") 50% 50% repeat-x; + font-weight: bold; + color: #E87C1E; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #E87C1E; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fed22f; + background: #ffe45c url("images/ui-bg_flat_75_ffe45c_40x100.png") 50% 50% repeat-x; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat; + color: #ffffff; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #ffffff; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #ffffff; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("images/ui-icons_222222_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("images/ui-icons_ffffff_256x240.png"); +} +.ui-state-default .ui-icon { + background-image: url("images/ui-icons_F26522_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url("images/ui-icons_E87C1E_256x240.png"); +} +.ui-state-active .ui-icon { + background-image: url("images/ui-icons_E87C1E_256x240.png"); +} +.ui-state-highlight .ui-icon { + background-image: url("images/ui-icons_1c94c4_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("images/ui-icons_ffd27a_256x240.png"); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 0; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 0; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 0; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 0; +} + +/* Overlays */ +.ui-widget-overlay { + background: #666666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat; + opacity: .5; + filter: Alpha(Opacity=50); +} +.ui-widget-shadow { + margin: -5px 0 0 -5px; + padding: 5px; + background: #000000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x; + opacity: .2; + filter: Alpha(Opacity=20); + border-radius: 5px; +} diff --git a/css/ui-lightness/jquery-ui-1.10.3.custom.min.css b/css/ui-lightness/jquery-ui-1.10.3.custom.min.css index d7f98fcbc..4ad4c8999 100644 --- a/css/ui-lightness/jquery-ui-1.10.3.custom.min.css +++ b/css/ui-lightness/jquery-ui-1.10.3.custom.min.css @@ -1,5 +1,7 @@ -/*! jQuery UI - v1.10.3 - 2013-05-29 +/*! jQuery UI - v1.10.4 - 2015-04-25 * http://jqueryui.com -* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px -* Copyright 2013 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-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.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-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.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-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:400;margin:-1px}.ui-menu .ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(images/animated-overlay.gif);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_228ef1_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffd27a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px} \ No newline at end of file +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=0&bgColorHeader=%23E87C1E&bgTextureHeader=flat&bgImgOpacityHeader=35&borderColorHeader=%23F26522&fcHeader=%23ffffff&iconColorHeader=%23ffffff&bgColorContent=%23eeeeee&bgTextureContent=flat&bgImgOpacityContent=100&borderColorContent=%23dddddd&fcContent=%23333333&iconColorContent=%23222222&bgColorDefault=%23f1f1f1&bgTextureDefault=flat&bgImgOpacityDefault=100&borderColorDefault=%23cccccc&fcDefault=%23555555&iconColorDefault=%23F26522&bgColorHover=%23fde17c&bgTextureHover=flat&bgImgOpacityHover=100&borderColorHover=%23E87C1E&fcHover=%23E87C1E&iconColorHover=%23E87C1E&bgColorActive=%23ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=%23E87C1E&fcActive=%23E87C1E&iconColorActive=%23E87C1E&bgColorHighlight=%23ffe45c&bgTextureHighlight=flat&bgImgOpacityHighlight=75&borderColorHighlight=%23fed22f&fcHighlight=%23363636&iconColorHighlight=%231c94c4&bgColorError=%23b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=%23cd0a0a&fcError=%23ffffff&iconColorError=%23ffd27a&bgColorOverlay=%23666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=%23000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px +* Copyright 2015 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-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.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-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.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-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_flat_100_eeeeee_40x100.png") 50% 50% repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #F26522;background:#E87C1E url("images/ui-bg_flat_35_E87C1E_40x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f1f1f1 url("images/ui-bg_flat_100_f1f1f1_40x100.png") 50% 50% repeat-x;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #E87C1E;background:#fde17c url("images/ui-bg_flat_100_fde17c_40x100.png") 50% 50% repeat-x;font-weight:bold;color:#E87C1E}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#E87C1E;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #E87C1E;background:#fff url("images/ui-bg_flat_65_ffffff_40x100.png") 50% 50% repeat-x;font-weight:bold;color:#E87C1E}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#E87C1E;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_flat_75_ffe45c_40x100.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_F26522_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_E87C1E_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_E87C1E_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_1c94c4_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:0}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:0}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px} \ No newline at end of file diff --git a/images/Resize of Resize of erwanIncidents.jpg b/images/Resize of Resize of erwanIncidents.jpg deleted file mode 100644 index a2703d4fe..000000000 Binary files a/images/Resize of Resize of erwanIncidents.jpg and /dev/null differ diff --git a/images/Resize of Resize of erwanNetwork.jpg b/images/Resize of Resize of erwanNetwork.jpg deleted file mode 100644 index 81417b953..000000000 Binary files a/images/Resize of Resize of erwanNetwork.jpg and /dev/null differ diff --git a/images/Resize of Resize of erwanPC.jpg b/images/Resize of Resize of erwanPC.jpg deleted file mode 100644 index 25e2e016c..000000000 Binary files a/images/Resize of Resize of erwanPC.jpg and /dev/null differ diff --git a/images/Resize of erwanBuidling.jpg b/images/Resize of erwanBuidling.jpg deleted file mode 100644 index 865f64f32..000000000 Binary files a/images/Resize of erwanBuidling.jpg and /dev/null differ diff --git a/images/Resize of erwanBuilding.jpg b/images/Resize of erwanBuilding.jpg deleted file mode 100644 index d2b640907..000000000 Binary files a/images/Resize of erwanBuilding.jpg and /dev/null differ diff --git a/images/Resize of erwanDocument.jpg b/images/Resize of erwanDocument.jpg deleted file mode 100644 index 7611dcb81..000000000 Binary files a/images/Resize of erwanDocument.jpg and /dev/null differ diff --git a/images/Resize of erwanIncidents.jpg b/images/Resize of erwanIncidents.jpg deleted file mode 100644 index 71d44335f..000000000 Binary files a/images/Resize of erwanIncidents.jpg and /dev/null differ diff --git a/images/Resize of erwanNetwork.jpg b/images/Resize of erwanNetwork.jpg deleted file mode 100644 index adfc0de66..000000000 Binary files a/images/Resize of erwanNetwork.jpg and /dev/null differ diff --git a/images/Resize of erwanPC.jpg b/images/Resize of erwanPC.jpg deleted file mode 100644 index 05369a00a..000000000 Binary files a/images/Resize of erwanPC.jpg and /dev/null differ diff --git a/images/WanLinks.jpg b/images/WanLinks.jpg deleted file mode 100644 index f8948ab81..000000000 Binary files a/images/WanLinks.jpg and /dev/null differ diff --git a/images/actions_bkg.png b/images/actions_bkg.png index cb2733b29..5b2648342 100644 Binary files a/images/actions_bkg.png and b/images/actions_bkg.png differ diff --git a/images/actions_left.png b/images/actions_left.png index e9ac41043..182b61691 100644 Binary files a/images/actions_left.png and b/images/actions_left.png differ diff --git a/images/actions_right.png b/images/actions_right.png index ccd1a9a25..fe7fc5483 100644 Binary files a/images/actions_right.png and b/images/actions_right.png differ diff --git a/images/banner-search.png b/images/banner-search.png index f2caad76a..3b9ad538f 100755 Binary files a/images/banner-search.png and b/images/banner-search.png differ diff --git a/images/blue-corner.gif b/images/blue-corner.gif deleted file mode 100644 index cdaba5a19..000000000 Binary files a/images/blue-corner.gif and /dev/null differ diff --git a/images/bomb.jpg b/images/bomb.jpg deleted file mode 100644 index 89d22cfaa..000000000 Binary files a/images/bomb.jpg and /dev/null differ diff --git a/images/bomb.png b/images/bomb.png deleted file mode 100644 index aa2847167..000000000 Binary files a/images/bomb.png and /dev/null differ diff --git a/images/connect_to_network.png b/images/connect_to_network.png deleted file mode 100644 index bafb6c685..000000000 Binary files a/images/connect_to_network.png and /dev/null differ diff --git a/images/contacts.gif b/images/contacts.gif deleted file mode 100644 index f8934bb8c..000000000 Binary files a/images/contacts.gif and /dev/null differ diff --git a/images/contacts_big.gif b/images/contacts_big.gif deleted file mode 100644 index 6d0d4ba4d..000000000 Binary files a/images/contacts_big.gif and /dev/null differ diff --git a/images/device.gif b/images/device.gif deleted file mode 100644 index 05c9d3018..000000000 Binary files a/images/device.gif and /dev/null differ diff --git a/images/devices_big.gif b/images/devices_big.gif deleted file mode 100644 index 7d0b6f783..000000000 Binary files a/images/devices_big.gif and /dev/null differ diff --git a/images/documents.jpg b/images/documents.jpg deleted file mode 100644 index 14f1143e0..000000000 Binary files a/images/documents.jpg and /dev/null differ diff --git a/images/erwanBuilding.jpg b/images/erwanBuilding.jpg deleted file mode 100644 index 082ae15fe..000000000 Binary files a/images/erwanBuilding.jpg and /dev/null differ diff --git a/images/erwanContracts.jpg b/images/erwanContracts.jpg deleted file mode 100644 index ba9d8d4f6..000000000 Binary files a/images/erwanContracts.jpg and /dev/null differ diff --git a/images/erwanContracts2.jpg b/images/erwanContracts2.jpg deleted file mode 100644 index 8d825a560..000000000 Binary files a/images/erwanContracts2.jpg and /dev/null differ diff --git a/images/erwanContracts3.jpg b/images/erwanContracts3.jpg deleted file mode 100644 index b7bbf7d82..000000000 Binary files a/images/erwanContracts3.jpg and /dev/null differ diff --git a/images/erwanDocument.jpg b/images/erwanDocument.jpg deleted file mode 100644 index 97d8345c0..000000000 Binary files a/images/erwanDocument.jpg and /dev/null differ diff --git a/images/erwanIncidents.jpg b/images/erwanIncidents.jpg deleted file mode 100644 index 5d5a0a3a4..000000000 Binary files a/images/erwanIncidents.jpg and /dev/null differ diff --git a/images/erwanMobilePhones.jpg b/images/erwanMobilePhones.jpg deleted file mode 100644 index da9c953aa..000000000 Binary files a/images/erwanMobilePhones.jpg and /dev/null differ diff --git a/images/erwanNetwork.jpg b/images/erwanNetwork.jpg deleted file mode 100644 index 1be5244f4..000000000 Binary files a/images/erwanNetwork.jpg and /dev/null differ diff --git a/images/erwanPC.jpg b/images/erwanPC.jpg deleted file mode 100644 index 4c2b86166..000000000 Binary files a/images/erwanPC.jpg and /dev/null differ diff --git a/images/erwanServices.jpg b/images/erwanServices.jpg deleted file mode 100644 index b840279c2..000000000 Binary files a/images/erwanServices.jpg and /dev/null differ diff --git a/images/erwanTask.jpg b/images/erwanTask.jpg deleted file mode 100644 index 250e931dc..000000000 Binary files a/images/erwanTask.jpg and /dev/null differ diff --git a/images/erwanTools.jpg b/images/erwanTools.jpg deleted file mode 100644 index 96862cb2c..000000000 Binary files a/images/erwanTools.jpg and /dev/null differ diff --git a/images/hgrabber2.gif b/images/hgrabber2.gif deleted file mode 100644 index 1a43c7adf..000000000 Binary files a/images/hgrabber2.gif and /dev/null differ diff --git a/images/hgrabber2_active.gif b/images/hgrabber2_active.gif deleted file mode 100644 index fa5947bb5..000000000 Binary files a/images/hgrabber2_active.gif and /dev/null differ diff --git a/images/home.gif b/images/home.gif deleted file mode 100644 index c2c8262e3..000000000 Binary files a/images/home.gif and /dev/null differ diff --git a/images/itop-logo-external.png b/images/itop-logo-external.png index 14b80bfc1..8f9f434f8 100755 Binary files a/images/itop-logo-external.png and b/images/itop-logo-external.png differ diff --git a/images/itop-logo.png b/images/itop-logo.png index 14b80bfc1..8f9f434f8 100755 Binary files a/images/itop-logo.png and b/images/itop-logo.png differ diff --git a/images/logo-combodo.png b/images/logo-combodo.png index dbf8a3ee6..66b1e07d2 100755 Binary files a/images/logo-combodo.png and b/images/logo-combodo.png differ diff --git a/images/mini_add.gif b/images/mini_add.gif index b319dff5e..09ab4914b 100644 Binary files a/images/mini_add.gif and b/images/mini_add.gif differ diff --git a/images/mini_search.gif b/images/mini_search.gif index 618bc7ad3..cbb169da1 100644 Binary files a/images/mini_search.gif and b/images/mini_search.gif differ diff --git a/images/mini_tree.gif b/images/mini_tree.gif index 211861da1..9d7ad958b 100644 Binary files a/images/mini_tree.gif and b/images/mini_tree.gif differ diff --git a/images/search-top-left-corner.png b/images/search-top-left-corner.png deleted file mode 100755 index e84ea6d64..000000000 Binary files a/images/search-top-left-corner.png and /dev/null differ diff --git a/images/searchBtn.png b/images/searchBtn.png index 4d9ad416d..3ad9cf93d 100755 Binary files a/images/searchBtn.png and b/images/searchBtn.png differ diff --git a/images/software.jpg b/images/software.jpg deleted file mode 100644 index 28da976d8..000000000 Binary files a/images/software.jpg and /dev/null differ diff --git a/images/splitter-bkg.png b/images/splitter-bkg.png deleted file mode 100755 index b7cfeba16..000000000 Binary files a/images/splitter-bkg.png and /dev/null differ diff --git a/images/splitter-top-corner.png b/images/splitter-top-corner.png deleted file mode 100755 index 5b74243bd..000000000 Binary files a/images/splitter-top-corner.png and /dev/null differ diff --git a/images/splitter-top.png b/images/splitter-top.png deleted file mode 100755 index be4fbaab9..000000000 Binary files a/images/splitter-top.png and /dev/null differ diff --git a/images/std_view.gif b/images/std_view.gif deleted file mode 100644 index 5ba0c1328..000000000 Binary files a/images/std_view.gif and /dev/null differ diff --git a/images/tab-topleft.gif b/images/tab-topleft.gif deleted file mode 100644 index 9676d0194..000000000 Binary files a/images/tab-topleft.gif and /dev/null differ diff --git a/images/tab.png b/images/tab.png deleted file mode 100644 index 992cdfce5..000000000 Binary files a/images/tab.png and /dev/null differ diff --git a/images/toolkit_menu.png b/images/toolkit_menu.png index 636393795..f3b252df9 100644 Binary files a/images/toolkit_menu.png and b/images/toolkit_menu.png differ diff --git a/images/top-left-bkg.png b/images/top-left-bkg.png deleted file mode 100755 index f0d00f17b..000000000 Binary files a/images/top-left-bkg.png and /dev/null differ diff --git a/images/wan-mid.gif b/images/wan-mid.gif deleted file mode 100644 index 0c8a3f8fe..000000000 Binary files a/images/wan-mid.gif and /dev/null differ diff --git a/images/wan.gif b/images/wan.gif deleted file mode 100644 index f05524cb3..000000000 Binary files a/images/wan.gif and /dev/null differ diff --git a/images/wizActiveStepLeft.gif b/images/wizActiveStepLeft.gif deleted file mode 100644 index b0ce7bfc7..000000000 Binary files a/images/wizActiveStepLeft.gif and /dev/null differ diff --git a/images/wizActiveStepRight.gif b/images/wizActiveStepRight.gif deleted file mode 100644 index 6740587fc..000000000 Binary files a/images/wizActiveStepRight.gif and /dev/null differ diff --git a/images/wizArrow.gif b/images/wizArrow.gif deleted file mode 100644 index 20d39ca9b..000000000 Binary files a/images/wizArrow.gif and /dev/null differ diff --git a/images/wizStepLeft.gif b/images/wizStepLeft.gif deleted file mode 100644 index 68e249315..000000000 Binary files a/images/wizStepLeft.gif and /dev/null differ diff --git a/images/wizStepRight.gif b/images/wizStepRight.gif deleted file mode 100644 index 037ba2bf9..000000000 Binary files a/images/wizStepRight.gif and /dev/null differ diff --git a/js/extkeywidget.js b/js/extkeywidget.js index 52ff345c0..6cfe63dc5 100644 --- a/js/extkeywidget.js +++ b/js/extkeywidget.js @@ -95,6 +95,7 @@ function ExtKeyWidget(id, sTargetClass, sFilter, sTitle, bSelectMode, oWizHelper me.UpdateSizes(); me.UpdateButtons(); me.ajax_request = null; + FixSearchFormsDisposition(); me.DoSearchObjects(); }, 'html' diff --git a/js/linksdirectwidget.js b/js/linksdirectwidget.js index 080473e43..2ad60e55e 100644 --- a/js/linksdirectwidget.js +++ b/js/linksdirectwidget.js @@ -257,6 +257,7 @@ $(function() var c = this.value; me._onUpdateDlgButtons(c); }); + FixSearchFormsDisposition(); $('#SearchResultsToAdd_'+me.id).unblock(); me._onSearchDlgUpdateSize(); }); diff --git a/js/linkswidget.js b/js/linkswidget.js index dabb3048d..d42af420a 100644 --- a/js/linkswidget.js +++ b/js/linkswidget.js @@ -134,6 +134,7 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates, oWizH var c = this.value; me.UpdateButtons(c); }); + FixSearchFormsDisposition(); $(sSearchAreaId).unblock(); }, 'html' diff --git a/js/utils.js b/js/utils.js index d15f875b9..b7ae5b9d4 100644 --- a/js/utils.js +++ b/js/utils.js @@ -210,12 +210,35 @@ function ReloadSearchForm(divId, sClassName, sBaseClass, sContext) } } } + FixSearchFormsDisposition(); oDiv.unblock(); oDiv.parent().resize(); // Inform the parent that the form has just been (potentially) resized } ); } +function FixSearchFormsDisposition() +{ + // Fix search forms + $('.SearchDrawer').each(function() { + var colWidth = 0; + var labelWidth = 0; + $('label:visible', $(this)).each( function() { + var l = $(this).parent().width() - $(this).width(); + colWidth = Math.max(l, colWidth); + labelWidth = Math.max($(this).width(), labelWidth); + }); + $('label:visible', $(this)).each( function() { + if($(this).data('resized') != true) + { + $(this).parent().width(colWidth + labelWidth); + $(this).width(labelWidth).css({display: 'inline-block'}).data('resized', true); + } + }); + }); + +} + /** * Stores - in a persistent way - user specific preferences * depends on a global variable oUserPreferences created/filled by the iTopWebPage @@ -389,6 +412,33 @@ function ShortcutListDlg(sOQL, sDataTableId, sContext) return false; } +function ExportListDlg(sOQL, sDataTableId, sFormat, sDlgTitle) +{ + var sDataTableName = 'datatable_'+sDataTableId; + var oColumns = $('#'+sDataTableName).datatable('option', 'oColumns'); + var aFields = []; + for(var j in oColumns) + { + for(var k in oColumns[j]) + { + if (oColumns[j][k].checked) + { + var sCode = oColumns[j][k].code; + if (sCode == '_key_') + { + sCode = 'id'; + } + aFields.push(j+'.'+sCode); + } + } + } + + $.post(GetAbsoluteUrlAppRoot()+'webservices/export-v2.php', {interactive: 1, advanced: 1, mode: 'dialog', format: sFormat, expression: sOQL, suggested_fields: aFields.join(','), dialog_title: sDlgTitle}, function(data) { + $('body').append(data); + }); + return false; +} + function DisplayHistory(sSelector, sFilter, iCount, iStart) { $(sSelector).block(); diff --git a/lib/sass/Phamlp.php b/lib/sass/Phamlp.php new file mode 100644 index 000000000..7bec17527 --- /dev/null +++ b/lib/sass/Phamlp.php @@ -0,0 +1,72 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + */ +/** + * Phamlp class. + * Static support classes. + * @package PHamlP + */ +class Phamlp { + /** + * @var string Language used to translate messages + */ + public static $language; + /** + * @var array Messages used for translation + */ + public static $messages; + + /** + * Translates a message to the specified language. + * @param string message category. + * @param string the original message + * @param array parameters to be applied to the message using strtr. + * @return string the translated message + */ + public static function t($category, $message, $params = array()) { + if (!empty(self::$language)) { + $message = self::translate($category, $message); + } + return $params!==array() ? strtr($message,$params) : $message; + } + + /** + * Translates a message to the specified language. + * If the language or the message in the specified language is not defined the + * original message is returned. + * @param string message category + * @param string the original message + * @return string the translated message + */ + private static function translate($category, $message) { + if (empty(self::$messages[$category])) self::loadMessages($category); + return (empty(self::$messages[$category][$message]) ? $message : self::$messages[$category][$message]); + } + + /** + * Loads the specified language message file for translation. + * Message files are PHP files in the "category/messages" directory and named + * "language.php", where category is either haml or sass, and language is the + * specified language. + * The message file returns an array of (source, translation) pairs; for example: + *
+	 * return array(
+	 *   'original message 1' => 'translated message 1',
+	 *   'original message 2' => 'translated message 2',
+	 * );
+	 * 
+ * @param string message category + */ + private static function loadMessages($category) { + $messageFile = dirname(__FILE__).DIRECTORY_SEPARATOR.$category.DIRECTORY_SEPARATOR.'messages'.DIRECTORY_SEPARATOR.self::$language.'.php'; + if (file_exists($messageFile)) { + self::$messages[$category] = require_once($messageFile); + } + } +} \ No newline at end of file diff --git a/lib/sass/PhamlpException.php b/lib/sass/PhamlpException.php new file mode 100644 index 000000000..1dc32032e --- /dev/null +++ b/lib/sass/PhamlpException.php @@ -0,0 +1,31 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + */ + +require_once('Phamlp.php'); + +/** + * Phamlp exception class. + * Base class for PHamlP::Haml and PHamlP::Sass exceptions. + * Translates exception messages. + * @package PHamlP + */ +class PhamlpException extends Exception { + /** + * Phamlp Exception. + * @param string Category (haml|sass) + * @param string Exception message + * @param array parameters to be applied to the message using strtr. + */ + public function __construct($category, $message, $params, $object) { + parent::__construct(Phamlp::t($category, $message, $params) . + (is_object($object) ? ": {$object->filename}::{$object->line}\nSource: {$object->source}" : '') + ); + } +} \ No newline at end of file diff --git a/lib/sass/haml/HamlException.php b/lib/sass/haml/HamlException.php new file mode 100644 index 000000000..e83f45ef5 --- /dev/null +++ b/lib/sass/haml/HamlException.php @@ -0,0 +1,29 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml + */ + +require_once(dirname(__FILE__).'/../PhamlpException.php'); + +/** + * Haml exception class. + * @package PHamlP + * @subpackage Haml + */ +class HamlException extends PhamlpException { + /** + * Haml Exception. + * @param string Exception message + * @param array parameters to be applied to the message using strtr. + * @param object object with source code and meta data + */ + public function __construct($message, $params = array(), $object = null) { + parent::__construct('haml', $message, $params, $object); + } +} \ No newline at end of file diff --git a/lib/sass/haml/HamlHelpers.php b/lib/sass/haml/HamlHelpers.php new file mode 100644 index 000000000..769f7ecff --- /dev/null +++ b/lib/sass/haml/HamlHelpers.php @@ -0,0 +1,199 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml + */ + +/** + * HamlHelpers class. + * Contains methods to make it easier to do various tasks. + * + * The class can be extended to provide user defined helper methods. The + * signature for user defined helper methods is ($block, $other, $arguments); + * $block is the string generated by the Haml block being operated on. + * + * Tthe path to the extended class is provided to HamlParser in the config + * array; class name == file name. + * + * HamlHelpers and any extended class are automatically included in the context + * that a Haml template is parsed in, so all the methods are at your disposal + * from within the template. + * + * @package PHamlP + * @subpackage Haml + */ +class HamlHelpers { + const XMLNS = 'http://www.w3.org/1999/xhtml'; + + /** + * Returns the block with string appended. + * @see succeed + * @param string Haml block + * @param string string to append + * @return string the block with string appended. + */ + public static function append($block, $string) { + return $block.$string; + } + + /** + * Escapes HTML entities in text, but without escaping an ampersand that is + * already part of an escaped entity. + * @param string Haml block + * @return string the block with HTML entities escaped. + */ + public static function escape_once($block) { + return htmlentities(html_entity_decode($block)); + } + + /** + * Returns an array containing default assignments for the xmlns, lang, and + * xml:lang attributes of the html element. + * This helper method is for use in the html element only. + * + * Examples:
+ * %html(html_attrs())
+ * produces
+ * + * + * %html(html_attrs('en-gb'))
+ * produces
+ * + * + * %html(html_attrs('en-gb', false))
+ * produces
+ * + * + * Although handled in HamlParser, the notes below are here for completeness.
+ * Other attributes are defined as normal. e.g.
+ * %html(xmlns:me="http://www.example.com/me" html_attrs('en-gb', false))
+ * produces
+ * + * + * PHamlP also allows for the language to be defined using PHP code that can + * be eval'd; the code must end with a semi-colon (;). e.g.
+ * %html(html_attrs("FW::app()->language);", false))
+ * produces (assuming FW::app()->language returns 'en-gb')
+ * + * + * @param string document language. Default = en-us + * @param boolean whether the html element has the lang attribute. Default: true + * Should be set false for XHTML 1.1 or greater documents + * @return string the block with string appended. + */ + public static function html_attrs($language = 'en-us', $lang = true) { + return ($lang ? + array('xmlns'=>self::XMLNS, 'xml:lang'=>$language, 'lang'=>$language) : + array('xmlns'=>self::XMLNS, 'xml:lang'=>$language)); + } + + /** + * Returns a copy of text with ampersands, angle brackets and quotes escaped + * into HTML entities. + * @param string Haml block + * @return string the block with HTML entities escaped. + */ + public static function html_escape($block) { + return htmlspecialchars($block); + } + + /** + * Iterates an array and using the block to generate a
  • element for each + * array element. + * Examples:
    + * = list_of(array('red', 'orange', ...., 'violet'), 'colour')
    + * = colour
    + * Produces:
    + *
  • red

  • + *
  • orange

  • + * |
    + * |
    + *
  • violet>

  • + * + * = list_of(array('Fly Fishing' => 'JR Hartley', 'Lord of the Rings' => 'JRR Tolkien'), 'title', 'author')
    + * %h3= title
    + * %p= author
    + * Produces:
    + *

  • + *

    Fly Fishing


    + *

    JR Hartley


    + *

  • + *

  • + *

    Lord of the Rings


    + *

    JRR Tolkien


    + *

  • + * + * @param string Haml block + * @param array items + * @param string string in block to replace with item key or item value + * @param string string in block to replace with item value + * @return string list items. + */ + public static function list_of($block, $items, $key, $value = null) { + $output = ''; + foreach ($items as $_key=>$_value) { + $output .= '
  • ' . strtr($block, (empty($value) ? array($key=>$_value) : + array($key=>$_key, $value=>$_value))) . '
  • '; + } // foreach + return $output; + } + + /** + * Alias for prepend. + * @see prepend + * @param string Haml block + * @param string string to prepend + * @return string the block with string prepended + */ + public static function preceed($block, $string) { + return self::prepend($block, $string); + } + + /** + * Returns the block with string prepended. + * @param string Haml block + * @param string string to prepend + * @return string the block with string prepended + */ + public static function prepend($block, $string) { + return $string.$block; + } + + /** + * Converts newlines in the block to HTML entities. + * @param string Haml block + * @return string the block with newlines converted to HTML entities + */ + public static function preserve($block) { + return str_replace("\n", ' ', $block); + } + + /** + * Alias for append. + * @see append + * @param string Haml block + * @param string string to apppend + * @return string the block with string apppended + */ + public static function succeed($block, $string) { + return self::append($block, $string); + } + + /** + * Surrounds a block of Haml code with strings. + * If $back is not given it defaults to $front. + * @param string Haml block + * @param string string to prepend + * @param string string to apppend + * @return string the block surrounded by the strings + */ + public static function surround($block, $front, $back=null) { + return $front.$block.(is_null($back) ? $front : $back); + } +} \ No newline at end of file diff --git a/lib/sass/haml/HamlParser.php b/lib/sass/haml/HamlParser.php new file mode 100644 index 000000000..47721d658 --- /dev/null +++ b/lib/sass/haml/HamlParser.php @@ -0,0 +1,1249 @@ + + *
  • Debug (addition)
      + *
    • Source debug - adds comments to the output showing each source line above + * the result - ?#s+ to turn on, ?#s- to turn off, ?#s! to toggle
    • + *
    • Output debug - shows the output directly in the browser - ?#o+ to turn on, ?#o- to turn off, ?#o! to toggle
    • + *
    • Control both at once - ?#so+ to turn on, ?#so- to turn off, ?#so! to toggle
    • + *
    • Ugly mode can be controlled by the template
    • + * + *
    • Ugly mode is turned off when in debug
  • + *
  • "-" command (notes)
      + *
    • PHP does not require ending ";"
    • + *
    • PHP control blocks are automatically bracketed
    • + *
    • Switch Case statements do not end with ":" + *
    • do-while control blocks are written as "do (expression)"
  • + * + * Comes with filters that run "out of the box": + * + plain: useful for large chunks of text to ensure Haml doesn't do anything. + * + escaped: like plain but the output is (x)html escaped. + * + preserve: like plain but preserves the whitespace. + * + cdata: wraps the content in CDATA tags. + * + javascript: wraps the content in \n"; + } +} \ No newline at end of file diff --git a/lib/sass/haml/filters/HamlPhpFilter.php b/lib/sass/haml/filters/HamlPhpFilter.php new file mode 100644 index 000000000..6fdbb1f28 --- /dev/null +++ b/lib/sass/haml/filters/HamlPhpFilter.php @@ -0,0 +1,27 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +/** + * PHP Filter for {@link http://haml-lang.com/ Haml} class. + * The text will be parsed with the PHP interpreter. + * @package PHamlP + * @subpackage Haml.filters + */ +class HamlPhpFilter extends HamlBaseFilter { + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + return "\n"; + } +} diff --git a/lib/sass/haml/filters/HamlPlainFilter.php b/lib/sass/haml/filters/HamlPlainFilter.php new file mode 100644 index 000000000..33bbe0b1d --- /dev/null +++ b/lib/sass/haml/filters/HamlPlainFilter.php @@ -0,0 +1,28 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +/** + * Plain Filter for {@link http://haml-lang.com/ Haml} class. + * Does not parse the filtered text. This is useful for large blocks of text + * without HTML tags when lines are not to be parsed. + * @package PHamlP + * @subpackage Haml.filters + */ +class HamlPlainFilter extends HamlBaseFilter { + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + return preg_replace(HamlParser::MATCH_INTERPOLATION, '', $text). "\n"; + } +} \ No newline at end of file diff --git a/lib/sass/haml/filters/HamlPreserveFilter.php b/lib/sass/haml/filters/HamlPreserveFilter.php new file mode 100644 index 000000000..03a2cd327 --- /dev/null +++ b/lib/sass/haml/filters/HamlPreserveFilter.php @@ -0,0 +1,29 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +/** + * Preserve Filter for {@link http://haml-lang.com/ Haml} class. + * Does not parse the filtered text and preserves line breaks. + * @package PHamlP + * @subpackage Haml.filters + */ +class HamlPreserveFilter extends HamlBaseFilter { + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + return str_replace("\n", ' ', + preg_replace(HamlParser::MATCH_INTERPOLATION, '', $text) + ) . "\n"; + } +} \ No newline at end of file diff --git a/lib/sass/haml/filters/HamlSassFilter.php b/lib/sass/haml/filters/HamlSassFilter.php new file mode 100644 index 000000000..ce2ece6ce --- /dev/null +++ b/lib/sass/haml/filters/HamlSassFilter.php @@ -0,0 +1,37 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +require_once('HamlCssFilter.php'); +require_once(dirname(__FILE__).'/../../sass/SassParser.php'); + +/** + * {@link Sass http://sass-lang.com/} Filter for + * {@link http://haml-lang.com/ Haml} class. + * Parses the text as Sass then calls the CSS filter. + * Useful for including inline Sass. + * @package PHamlP + * @subpackage Haml.filters + */ +class HamlSassFilter extends HamlBaseFilter { + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + $sass = new SassParser(); + $css = new HamlCssFilter(); + $css->init(); + + return $css->run($sass->toCss(preg_replace(HamlParser::MATCH_INTERPOLATION, '', $text), false)); + } +} \ No newline at end of file diff --git a/lib/sass/haml/filters/HamlScssFilter.php b/lib/sass/haml/filters/HamlScssFilter.php new file mode 100644 index 000000000..7c783106a --- /dev/null +++ b/lib/sass/haml/filters/HamlScssFilter.php @@ -0,0 +1,37 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +require_once('HamlCssFilter.php'); +require_once(dirname(__FILE__).'/../../sass/SassParser.php'); + +/** + * {@link Sass http://sass-lang.com/} Filter for + * {@link http://haml-lang.com/ Haml} class. + * Parses the text as Sass then calls the CSS filter. + * Useful for including inline Sass. + * @package PHamlP + * @subpackage Haml.filters + */ +class HamlScssFilter extends HamlBaseFilter { + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + $sass = new SassParser(array('syntax'=>'scss')); + $css = new HamlCssFilter(); + $css->init(); + + return $css->run($sass->toCss(preg_replace(HamlParser::MATCH_INTERPOLATION, '', $text), false)); + } +} \ No newline at end of file diff --git a/lib/sass/haml/filters/_HamlMarkdownFilter.php b/lib/sass/haml/filters/_HamlMarkdownFilter.php new file mode 100644 index 000000000..c7db577fd --- /dev/null +++ b/lib/sass/haml/filters/_HamlMarkdownFilter.php @@ -0,0 +1,50 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +/** + * Markdown Filter for {@link http://haml-lang.com/ Haml} class. + * Parses the text with Markdown. + * + * This is an abstract class that must be extended and the init() method + * implemented to provide the vendorPath if the vendor class is not imported + * elsewhere in the application (e.g. by a framework) and vendorClass if the + * default class name is not correct. + * @package PHamlP + * @subpackage Haml.filters + */ +abstract class _HamlMarkdownFilter extends HamlBaseFilter { + /** + * @var string Path to Markdown Parser + */ + protected $vendorPath; + /** + * @var string Markdown class + * Override this value if the class name is different in your environment + */ + protected $vendorClass = 'MarkdownExtra_Parser'; + + /** + * Child classes must implement this method. + * Typically the child class will set $vendorPath and $vendorClass + */ + public function init() {} + + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + return 'vendorPath)?'require_once "'.$this->vendorPath.'";':'').'$markdown___=new '.$this->vendorClass.'();echo $markdown___->safeTransform("'.preg_replace(HamlParser::MATCH_INTERPOLATION, '".\1."', $text).'");?>'; + } +} diff --git a/lib/sass/haml/filters/_HamlTextileFilter.php b/lib/sass/haml/filters/_HamlTextileFilter.php new file mode 100644 index 000000000..1bb3cdaa8 --- /dev/null +++ b/lib/sass/haml/filters/_HamlTextileFilter.php @@ -0,0 +1,50 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +/** + * Textile Filter for {@link http://haml-lang.com/ Haml} class. + * Parses the text with Textile. + * + * This is an abstract class that must be extended and the init() method + * implemented to provide the vendorPath if the vendor class is not imported + * elsewhere in the application (e.g. by a framework) and vendorClass if the + * default class name is not correct. + * @package PHamlP + * @subpackage Haml.filters + */ +abstract class _HamlTextileFilter extends HamlBaseFilter { + /** + * @var string Path to Textile Parser + */ + protected $vendorPath; + /** + * @var string Textile class + * Override this value if the class name is different in your environment + */ + protected $vendorClass = 'Textile'; + + /** + * Child classes must implement this method. + * Typically the child class will set $vendorPath and $vendorClass + */ + public function init() {} + + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + return 'vendorPath)?'require_once "'.$this->vendorPath.'";':'').'$textile___=new '.$this->vendorClass.'();echo $textile___->TextileThis("'.preg_replace(HamlParser::MATCH_INTERPOLATION, '".\1."', $text).'");?>'; + } +} \ No newline at end of file diff --git a/lib/sass/haml/messages/_i18n.php b/lib/sass/haml/messages/_i18n.php new file mode 100644 index 000000000..c878297cf --- /dev/null +++ b/lib/sass/haml/messages/_i18n.php @@ -0,0 +1,32 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.messages + */ + return array ( + 'Attribute must be "class" or "id" with array value'=>'', + 'Illegal indentation level ({indentLevel}); indentation level can only increase by one'=>'', + 'Invalid indentation'=>'', + 'Invalid {what} ({value})'=>'', + 'Invalid {what} ({value}); must be one of "{options}"'=>'', + 'Mixed indentation not allowed'=>'', + 'No getter function for {what}'=>'', + 'No setter function for {what}'=>'', + 'Unable to find {what}: {filename}'=>'', + '{what} must extend {base} class'=>'', + ); \ No newline at end of file diff --git a/lib/sass/haml/messages/de.php b/lib/sass/haml/messages/de.php new file mode 100644 index 000000000..84f41fdb1 --- /dev/null +++ b/lib/sass/haml/messages/de.php @@ -0,0 +1,32 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.messages + */ + return array ( + 'Attribute must be "class" or "id" with array value'=>'Attribute müssen "class" oder "id" mit array-wert', + 'Illegal indentation level ({indentLevel}); indentation level can only increase by one'=>'Illegale einrückungsebene ({indentLevel}); einrückungsebene kann nur von einem anstieg', + 'Invalid indentation'=>'Ungültige einrückung', + 'Invalid {what}'=>'Ungültige {what}', + 'Invalid {what} ({value}); must be one of "{options}"'=>'Ungültige {what} ({value}); muss einer der "{options}"', + 'Mixed indentation not allowed'=>'Mixed einzug nicht erlaubt', + 'No getter function for {what}'=>'Kein getter-funktion für {what}', + 'No setter function for {what}'=>'Kein setter-funktion für {what}', + 'Unable to find {what}: {filename}'=>'Kann zu finden {what}: {filename}', + '{what} must extend {base} class'=>'{what} muss {base} klasse erweitern', + ); \ No newline at end of file diff --git a/lib/sass/haml/messages/fr.php b/lib/sass/haml/messages/fr.php new file mode 100644 index 000000000..ebb0485ab --- /dev/null +++ b/lib/sass/haml/messages/fr.php @@ -0,0 +1,32 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.messages + */ + return array ( + 'Attribute must be "class" or "id" with array value'=>"D'attributs doivent être \"class\" ou \"id\" avec valeur de array", + 'Illegal indentation level ({indentLevel}); indentation level can only increase by one: {file}::{line}'=>"Niveau niveau d'indentation illégale ({indentLevel}); ne peut augmenter d'un: {file}::{line}", + 'Invalid indentation: {line}::{file}'=>'Indentation blancs: {line}::{file}', + 'Invalid {what} ({value}): {file}::{line}'=>'Invalide {what} ({value}): {file}::{line}', + 'Invalid {what} ({value}); must be one of "{options}".'=>"Invalide {what} ({value}); doit être l'un des \"{options}\"", + 'Mixed indentation not allowed: {file}::{line}'=>'Indentation mixte pas autorisé: {file}::{line}', + 'No getter function for {what}'=>'Pas de fonction getter pour {what}', + 'No setter function for {what}'=>'Pas de fonction setter pour {what}', + 'Unable to find {what}: {filename}.'=>'Impossible de trouver {what}: {filename}.', + '{what} must extend {base} class.'=>"{what} doit s'étendre classe {base}", + ); \ No newline at end of file diff --git a/lib/sass/haml/renderers/HamlCompactRenderer.php b/lib/sass/haml/renderers/HamlCompactRenderer.php new file mode 100644 index 000000000..aaa7f1077 --- /dev/null +++ b/lib/sass/haml/renderers/HamlCompactRenderer.php @@ -0,0 +1,32 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.renderers + */ + +/** + * HamlCompactRenderer class. + * Renders blocks on single lines. + * @package PHamlP + * @subpackage Haml.renderers + */ +class HamlCompactRenderer extends HamlRenderer { + /** + * Renders the opening tag of an element + */ + public function renderOpeningTag($node) { + return ($node->isBlock ? '' : ' ') . parent::renderOpeningTag($node); + } + + /** + * Renders the closing tag of an element + */ + public function renderClosingTag($node) { + return parent::renderClosingTag($node) . ($node->isBlock ? "\n" : ' '); + } +} \ No newline at end of file diff --git a/lib/sass/haml/renderers/HamlCompressedRenderer.php b/lib/sass/haml/renderers/HamlCompressedRenderer.php new file mode 100644 index 000000000..5f68c7033 --- /dev/null +++ b/lib/sass/haml/renderers/HamlCompressedRenderer.php @@ -0,0 +1,48 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.renderers + */ + +/** + * HamlCompressedRenderer class. + * Output has minimal whitespace. + * @package PHamlP + * @subpackage Haml.renderers + */ +class HamlCompressedRenderer extends HamlRenderer { + /** + * Renders the opening of a comment. + * Only conditional comments are rendered + */ + public function renderOpenComment($node) { + if ($node->isConditional) return parent::renderOpenComment($node); + } + + /** + * Renders the closing of a comment. + * Only conditional comments are rendered + */ + public function renderCloseComment($node) { + if ($node->isConditional) return parent::renderCloseComment($node); + } + + /** + * Renders the opening tag of an element + */ + public function renderOpeningTag($node) { + return ($node->isBlock ? '' : ' ') . parent::renderOpeningTag($node); + } + + /** + * Renders the closing tag of an element + */ + public function renderClosingTag($node) { + return parent::renderClosingTag($node) . ($node->isBlock ? '' : ' '); + } +} \ No newline at end of file diff --git a/lib/sass/haml/renderers/HamlExpandedRenderer.php b/lib/sass/haml/renderers/HamlExpandedRenderer.php new file mode 100644 index 000000000..8bb4657c4 --- /dev/null +++ b/lib/sass/haml/renderers/HamlExpandedRenderer.php @@ -0,0 +1,58 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.renderers + */ + +/** + * HamlExpandedRenderer class. + * Blocks are on single lines and content indented. + * @package PHamlP + * @subpackage Haml.renderers + */ +class HamlExpandedRenderer extends HamlRenderer { + /** + * Renders the opening tag of an element + */ + public function renderOpeningTag($node) { + return parent::renderOpeningTag($node) . + ($node->whitespaceControl['inner'] ? '' : + ($node->isSelfClosing && $node->whitespaceControl['outer'] ? '' : "\n")); + } + + /** + * Renders the closing tag of an element + */ + public function renderClosingTag($node) { + return ($node->isSelfClosing ? '' : parent::renderClosingTag($node) . + ($node->whitespaceControl['outer'] ? '' : "\n")); + } + + /** + * Renders content. + * @param HamlNode the node being rendered + * @return string the rendered content + */ + public function renderContent($node) { + return self::INDENT . parent::renderContent($node) . "\n"; + } + + /** + * Renders the start of a code block + */ + public function renderStartCodeBlock($node) { + return parent::renderStartCodeBlock($node) . "\n"; + } + + /** + * Renders the end of a code block + */ + public function renderEndCodeBlock($node) { + return parent::renderEndCodeBlock($node) . "\n"; + } +} \ No newline at end of file diff --git a/lib/sass/haml/renderers/HamlNestedRenderer.php b/lib/sass/haml/renderers/HamlNestedRenderer.php new file mode 100644 index 000000000..f3135d4e0 --- /dev/null +++ b/lib/sass/haml/renderers/HamlNestedRenderer.php @@ -0,0 +1,77 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.renderers + */ + +/** + * HamlNestedRenderer class. + * Blocks and content are indented according to their nesting level. + * @package PHamlP + * @subpackage Haml.renderers + */ +class HamlNestedRenderer extends HamlRenderer { + /** + * Renders the opening tag of an element + */ + public function renderOpeningTag($node) { + return ($node->whitespaceControl['outer'] ? '' : $this->getIndent($node)) . + parent::renderOpeningTag($node) . ($node->whitespaceControl['inner'] ? '' : + ($node->isSelfClosing && $node->whitespaceControl['outer'] ? '' : "\n")); + } + + /** + * Renders the closing tag of an element + */ + public function renderClosingTag($node) { + return ($node->isSelfClosing ? '' : ($node->whitespaceControl['inner'] ? '' : + $this->getIndent($node)) . parent::renderClosingTag($node) . + ($node->whitespaceControl['outer'] ? '' : "\n")); + } + + /** + * Renders content. + * @param HamlNode the node being rendered + * @return string the rendered content + */ + public function renderContent($node) { + return $this->getIndent($node) . parent::renderContent($node) . "\n"; + } + + /** + * Renders the opening of a comment + */ + public function renderOpenComment($node) { + return parent::renderOpenComment($node) . (empty($node->content) ? "\n" : ''); + } + + /** + * Renders the closing of a comment + */ + public function renderCloseComment($node) { + return parent::renderCloseComment($node) . "\n"; + } + + /** + * Renders the start of a code block + */ + public function renderStartCodeBlock($node) { + return $this->getIndent($node) . parent::renderStartCodeBlock($node) . "\n"; + } + + /** + * Renders the end of a code block + */ + public function renderEndCodeBlock($node) { + return $this->getIndent($node) . parent::renderEndCodeBlock($node) . "\n"; + } + + private function getIndent($node) { + return str_repeat(' ', 2 * $node->line['indentLevel']); + } +} \ No newline at end of file diff --git a/lib/sass/haml/renderers/HamlRenderer.php b/lib/sass/haml/renderers/HamlRenderer.php new file mode 100644 index 000000000..e707a203e --- /dev/null +++ b/lib/sass/haml/renderers/HamlRenderer.php @@ -0,0 +1,137 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.renderers + */ + +require_once('HamlCompressedRenderer.php'); +require_once('HamlCompactRenderer.php'); +require_once('HamlExpandedRenderer.php'); +require_once('HamlNestedRenderer.php'); + +/** + * HamlRenderer class. + * Provides the most common version of each method. Child classs override + * methods to provide style specific rendering. + * @package PHamlP + * @subpackage Haml.renderers + */ +class HamlRenderer { + /**#@+ + * Output Styles + */ + const STYLE_COMPRESSED = 'compressed'; + const STYLE_COMPACT = 'compact'; + const STYLE_EXPANDED = 'expanded'; + const STYLE_NESTED = 'nested'; + /**#@-*/ + + const INDENT = ' '; + + private $format; + private $attrWrapper; + private $minimizedAttributes; + + /** + * Returns the renderer for the required render style. + * @param string render style + * @return HamlRenderer + */ + static public function getRenderer($style, $options) { + switch ($style) { + case self::STYLE_COMPACT: + return new HamlCompactRenderer($options); + case self::STYLE_COMPRESSED: + return new HamlCompressedRenderer($options); + case self::STYLE_EXPANDED: + return new HamlExpandedRenderer($options); + case self::STYLE_NESTED: + return new HamlNestedRenderer($options); + } // switch + } + + public function __construct($options) { + foreach ($options as $name => $value) { + $this->$name = $value; + } // foreach + } + + /** + * Renders element attributes + */ + private function renderAttributes($attributes) { + $output = ''; + foreach ($attributes as $name => $value) { + if (is_integer($name)) { // attribute function + $output .= " $value"; + } + elseif ($name == $value && + ($this->format === 'html4' || $this->format === 'html5')) { + $output .= " $name"; + } + else { + $output .= " $name={$this->attrWrapper}$value{$this->attrWrapper}"; + } + } + return $output; + } + + /** + * Renders the opening tag of an element + */ + public function renderOpeningTag($node) { + $output = "<{$node->content}"; + $output .= $this->renderAttributes($node->attributes); + $output .= ($node->isSelfClosing ? ' /' : '') . '>'; + return $output; + } + + /** + * Renders the closing tag of an element + */ + public function renderClosingTag($node) { + return ($node->isSelfClosing ? '' : "content}>"); + } + + /** + * Renders the opening of a comment + */ + public function renderOpenComment($node) { + return ($node->isConditional ? "\n\n" : '') . "' . ($node->isConditional ? "\n" : ''); + } + + /** + * Renders the start of a code block + */ + public function renderStartCodeBlock($node) { + return $this->renderContent($node); + } + + /** + * Renders the end of a code block + */ + public function renderEndCodeBlock($node) { + return 'doWhile) ? " {$node->doWhile}" : '') . ' ?>'; + } + + /** + * Renders content. + * @param HamlNode the node being rendered + * @return string the rendered content + */ + public function renderContent($node) { + return $node->content; + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlCodeBlockNode.php b/lib/sass/haml/tree/HamlCodeBlockNode.php new file mode 100644 index 000000000..4252397ae --- /dev/null +++ b/lib/sass/haml/tree/HamlCodeBlockNode.php @@ -0,0 +1,58 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +require_once('HamlRootNode.php'); +require_once('HamlNodeExceptions.php'); + +/** + * HamlCodeBlockNode class. + * Represents a code block - if, elseif, else, foreach, do, and while. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlCodeBlockNode extends HamlNode { + /** + * @var HamlCodeBlockNode else nodes for if statements + */ + public $else; + /** + * @var string while clause for do-while loops + */ + public $doWhile; + + /** + * Adds an "else" statement to this node. + * @param SassIfNode "else" statement node to add + * @return SassIfNode this node + */ + public function addElse($node) { + if (is_null($this->else)) { + $node->root = $this->root; + $node->parent = $this->parent; + $this->else = $node; + } + else { + $this->else->addElse($node); + } + return $this; + } + + public function render() { + $output = $this->renderer->renderStartCodeBlock($this); + foreach ($this->children as $child) { + $output .= $child->render(); + } // foreach + $output .= (empty($this->else) ? + $this->renderer->renderEndCodeBlock($this) : $this->else->render()); + + return $this->debug($output); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlCommentNode.php b/lib/sass/haml/tree/HamlCommentNode.php new file mode 100644 index 000000000..230244256 --- /dev/null +++ b/lib/sass/haml/tree/HamlCommentNode.php @@ -0,0 +1,41 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +/** + * HamlCommentNode class. + * Represents a comment, including MSIE conditional comments. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlCommentNode extends HamlNode { + private $isConditional; + + public function __construct($content, $parent) { + $this->content = $content; + $this->isConditional = (bool)preg_match('/^\[.+\]$/', $content, $matches); + $this->parent = $parent; + $this->root = $parent->root; + $parent->children[] = $this; + } + + public function getIsConditional() { + return $this->isConditional; + } + + public function render() { + $output = $this->renderer->renderOpenComment($this); + foreach ($this->children as $child) { + $output .= $child->render(); + } // foreach + $output .= $this->renderer->renderCloseComment($this); + return $this->debug($output); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlDoctypeNode.php b/lib/sass/haml/tree/HamlDoctypeNode.php new file mode 100644 index 000000000..e64d416be --- /dev/null +++ b/lib/sass/haml/tree/HamlDoctypeNode.php @@ -0,0 +1,27 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +/** + * HamlDoctypeNode class. + * Represents a Doctype. + * Doctypes are always rendered on a single line with a newline. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlDoctypeNode extends HamlNode { + /** + * Render this node. + * @return string the rendered node + */ + public function render() { + return $this->debug($this->content . "\n"); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlElementNode.php b/lib/sass/haml/tree/HamlElementNode.php new file mode 100644 index 000000000..5dfd9ef17 --- /dev/null +++ b/lib/sass/haml/tree/HamlElementNode.php @@ -0,0 +1,52 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +require_once('HamlRootNode.php'); +require_once('HamlNodeExceptions.php'); + +/** + * HamlElementNode class. + * Represents an element. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlElementNode extends HamlNode { + public $isBlock; + public $isSelfClosing; + public $attributes; + public $whitespaceControl; + public $escapeHTML; + + public function render() { + $renderer = $this->renderer; + $this->output = $renderer->renderOpeningTag($this); + $close = $renderer->renderClosingTag($this); + + if ($this->whitespaceControl['outer']['left']) { + $this->output = ltrim($this->output); + $close = rtrim($close); + $this->parent->output = rtrim($this->parent->output); + } + + foreach ($this->children as $index=>$child) { + $output = $child->render(); + $output = ($this->whitespaceControl['inner'] ? trim($output) : $output); + if ($index && $this->children[$index-1] instanceof HamlElementNode && $this->children[$index-1]->whitespaceControl['outer']['right']) { + $output = ltrim($output); + } + $this->output .= $output; + } // foreach + + return $this->debug($this->output . (isset($child) && + $child instanceof HamlElementNode && + $child->whitespaceControl['outer']['right'] ? ltrim($close) : $close)); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlFilterNode.php b/lib/sass/haml/tree/HamlFilterNode.php new file mode 100644 index 000000000..c92cd2875 --- /dev/null +++ b/lib/sass/haml/tree/HamlFilterNode.php @@ -0,0 +1,50 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +/** + * HamlFilterNode class. + * Represent a filter in the Haml source. + * The filter is run on the output from child nodes when the node is rendered. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlFilterNode extends HamlNode { + /** + * @var HamlBaseFilter the filter to run + */ + private $filter; + + /** + * HamlFilterNode constructor. + * Sets the filter. + * @param HamlBaseFilter the filter to run + * @return HamlFilterNode + */ + public function __construct($filter, $parent) { + $this->filter = $filter; + $this->parent = $parent; + $this->root = $parent->root; + $parent->children[] = $this; + } + + /** + * Render this node. + * The filter is run on the content of child nodes before being returned. + * @return string the rendered node + */ + public function render() { + $output = ''; + foreach ($this->children as $child) { + $output .= $child->getContent(); + } // foreach + return $this->debug($this->filter->run($output)); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlHelperNode.php b/lib/sass/haml/tree/HamlHelperNode.php new file mode 100644 index 000000000..1066b7739 --- /dev/null +++ b/lib/sass/haml/tree/HamlHelperNode.php @@ -0,0 +1,73 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +/** + * HamlHelperNode class. + * Represent a helper in the Haml source. + * The helper is run on the output from child nodes when the node is rendered. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlHelperNode extends HamlNode { + const MATCH = '/(.*?)(\w+)\((.+?)\)(?:\s+(.*))?$/'; + const PRE = 1; + const NAME = 2; + const ARGS = 3; + const BLOCK = 4; + + /** + * @var string the helper class name + */ + private $class; + /** + * @var string helper method name + */ + private $pre; + /** + * @var string helper method name + */ + private $name; + /** + * @var string helper method arguments + */ + private $args; + + /** + * HamlFilterNode constructor. + * Sets the filter. + * @param string helper class. + * @param string helper call. + * @return HamlHelperNode + */ + public function __construct($class, $pre, $name, $args, $parent) { + $this->class = $class; + $this->pre = $pre; + $this->name = $name; + $this->args = $args; + $this->parent = $parent; + $this->root = $parent->root; + $parent->children[] = $this; + } + + /** + * Render this node. + * The filter is run on the content of child nodes before being returned. + * @return string the rendered node + */ + public function render() { + $children = ''; + foreach ($this->children as $child) { + $children .= trim($child->render()); + } // foreach + $output = 'pre) ? 'echo' : $this->pre)." {$this->class}::{$this->name}('$children',{$this->args}); ?>"; + return $this->debug($output); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlNode.php b/lib/sass/haml/tree/HamlNode.php new file mode 100644 index 000000000..beec66767 --- /dev/null +++ b/lib/sass/haml/tree/HamlNode.php @@ -0,0 +1,253 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +require_once('HamlRootNode.php'); +require_once('HamlCommentNode.php'); +require_once('HamlDoctypeNode.php'); +require_once('HamlElementNode.php'); +require_once('HamlFilterNode.php'); +require_once('HamlHelperNode.php'); +require_once('HamlCodeBlockNode.php'); +require_once('HamlNodeExceptions.php'); + +/** + * HamlNode class. + * Base class for all Haml nodes. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlNode { + /** + * @var HamlNode root node of this node + */ + protected $root; + /** + * @var HamlNode parent of this node + */ + protected $parent; + /** + * @var array children of this node + */ + protected $children = array(); + /** + * @var array source line token + */ + public $token; + /** + * @var boolean whether to show the output in the browser for debug + */ + public $showOutput; + /** + * @var boolean whether to show the source in the browser for debug + */ + public $showSource; + /** + * @var string content to render + */ + public $content; + /** + * @var string output buffer + */ + protected $output; + /** + * @var HamlRenderer Renderer object + */ + private $_r; + /** + * @var array Options + */ + private $_o; + + public function __construct($content, $parent) { + $this->content = $content; + if (!is_null($parent)) { // $parent === null for "else" code blocks + $this->parent = $parent; + $this->root = $parent->root; + $parent->children[] = $this; + } + + } + + /** + * Getter. + * @param string name of property to get + * @return mixed return value of getter function + */ + public function __get($name) { + $getter = 'get' . ucfirst($name); + if (method_exists($this, $getter)) { + return $this->$getter(); + } + throw new HamlNodeException('No getter function for {what}', array('{what}'=>$name)); + } + + /** + * Setter. + * @param string name of property to set + * @return mixed value of property + * @return HamlNode this node + */ + public function __set($name, $value) { + $setter = 'set' . ucfirst($name); + if (method_exists($this, $setter)) { + $this->$setter($value); + return $this; + } + throw new HamlNodeException('No setter function for {what}', array('{what}'=>$name)); + } + + /** + * Return a value indicating if this node has a parent + * @return array the node's parent + */ + public function hasParent() { + return !empty($this->parent); + } + + /** + * Returns the node's content and that of its child nodes + * @param integer the indent level. This is to allow properly indented output + * that filters (e.g. Sass) may need. + * @return string the node's content and that of its child nodes + */ + public function getContent($indentLevel = 0) { + $output = str_repeat(' ', 2 * $indentLevel++) . $this->content . "\n"; + foreach ($this->children as $child) { + $output .= $child->getContent($indentLevel); + } // foreach + return $output; + } + + /** + * Returns the node's parent + * @return array the node's parent + */ + public function getParent() { + return $this->parent; + } + + /** + * Returns a value indicating if this node has children + * @return boolean true if the node has children, false if not + */ + public function hasChildren() { + return !empty($this->children); + } + + /** + * Returns the node's children + * @return array the node's children + */ + public function getChildren() { + return $this->children; + } + + /** + * Returns the last child node of this node. + * @return HamlNode the last child node of this node + */ + public function getLastChild() { + return $this->children[count($this->children) - 1]; + } + + /** + * Returns the indent level of this node. + * @return integer the indent level of this node + */ + private function getLevel() { + return $this->token['level']; + } + + /** + * Sets the indent level of this node. + * Used during rendering to give correct indentation. + * @param integer the indent level of this node + * @return HamlNode this node + */ + private function setLevel($level) { + $this->token['level'] = $level; + return $this; + } + + /** + * Returns the source for this node + * @return string the source for this node + */ + private function getSource() { + return $this->token[HamlParser::HAML_SOURCE]; + } + + /** + * Returns the source for this node + * @return string the source for this node + */ + private function getLine() { + return $this->token['line']; + } + + /** + * Returns the filename for this node + * @return string the filename for this node + */ + private function getFilename() { + return $this->token['filename']; + } + + /** + * Returns the options. + * @return array the options + */ + public function getOptions() { + if (empty($this->_o)) { + $this->_r = $this->root->options; + } + return $this->_o; + } + + /** + * Returns the renderer. + * @return HamlRenderer the rendered + */ + public function getRenderer() { + if (empty($this->_r)) { + $this->_r = $this->root->renderer; + } + return $this->_r; + } + + public function render() { + $output = $this->renderer->renderContent($this); + foreach ($this->children as $child) { + $output .= $child->render(); + } // foreach + return $this->debug($output); + } + + protected function debug($output) { + $output = ($this->showSource ? $this->showSource($output) : $output); + return ($this->showOutput && $this->line['indentLevel'] == 0 ? + nl2br(str_replace(' ', ' ', htmlspecialchars($output))) : + $output); + } + + /** + * Adds a comment with source debug information for the current line to the output. + * The debug information is: + * + source file (relative to the application path) + * + line number + * + indent level + * + source code + * @param array source line(s) that generated the ouput + */ + protected function showSource($output) { + return "\n$output"; + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlNodeExceptions.php b/lib/sass/haml/tree/HamlNodeExceptions.php new file mode 100644 index 000000000..9bf0c670f --- /dev/null +++ b/lib/sass/haml/tree/HamlNodeExceptions.php @@ -0,0 +1,19 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +require_once(dirname(__FILE__).'/../HamlException.php'); + +/** + * HamlNodeException class. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlNodeException extends HamlException {} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlRootNode.php b/lib/sass/haml/tree/HamlRootNode.php new file mode 100644 index 000000000..fa0463b78 --- /dev/null +++ b/lib/sass/haml/tree/HamlRootNode.php @@ -0,0 +1,58 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +require_once(dirname(__FILE__).'/../renderers/HamlRenderer.php'); + +/** + * HamlRootNode class. + * Also the root node of a document. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlRootNode extends HamlNode { + /** + * @var HamlRenderer the renderer for this node + */ + protected $renderer; + /** + * @var array options + */ + protected $options; + + /** + * Root HamlNode constructor. + * @param array options for the tree + * @return HamlNode + */ + public function __construct($options) { + $this->root = $this; + $this->options = $options; + $this->renderer = HamlRenderer::getRenderer($this->options['style'], + array( + 'format' => $this->options['format'], + 'attrWrapper' => $this->options['attrWrapper'], + 'minimizedAttributes' => $this->options['minimizedAttributes'], + ) + ); + $this->token = array('level' => -1); + } + + /** + * Render this node. + * @return string the rendered node + */ + public function render() { + foreach ($this->children as $child) { + $this->output .= $child->render(); + } // foreach + return $this->output; + } +} diff --git a/lib/sass/sass/SassException.php b/lib/sass/sass/SassException.php new file mode 100644 index 000000000..850a407e2 --- /dev/null +++ b/lib/sass/sass/SassException.php @@ -0,0 +1,29 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Sass + */ + +require_once(dirname(__FILE__).'/../PhamlpException.php'); + +/** + * Sass exception class. + * @package PHamlP + * @subpackage Sass + */ +class SassException extends PhamlpException { + /** + * Sass Exception. + * @param string Exception message + * @param array parameters to be applied to the message using strtr. + * @param object object with source code and meta data + */ + public function __construct($message, $params = array(), $object = null) { + parent::__construct('sass', $message, $params, $object); + } +} \ No newline at end of file diff --git a/lib/sass/sass/SassFile.php b/lib/sass/sass/SassFile.php new file mode 100644 index 000000000..3c071a6b3 --- /dev/null +++ b/lib/sass/sass/SassFile.php @@ -0,0 +1,164 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Sass + */ + +/** + * SassFile class. + * @package PHamlP + * @subpackage Sass + */ +class SassFile { + const SASS = 'sass'; + const SCSS = 'scss'; + const SASSC = 'sassc'; + + private static $extensions = array(self::SASS, self::SCSS); + + /** + * Returns the parse tree for a file. + * If caching is enabled a cached version will be used if possible; if not the + * parsed file will be cached. + * @param string filename to parse + * @param SassParser Sass parser + * @return SassRootNode + */ + public static function getTree($filename, $parser) { + if ($parser->cache) { + $cached = self::getCachedFile($filename, $parser->cache_location); + if ($cached !== false) { + return $cached; + } + } + + $sassParser = new SassParser(array_merge($parser->options, array('line'=>1))); + $tree = $sassParser->parse($filename); + if ($parser->cache) { + self::setCachedFile($tree, $filename, $parser->cache_location); + } + return $tree; + } + + /** + * Returns the full path to a file to parse. + * The file is looked for recursively under the load_paths directories and + * the template_location directory. + * If the filename does not end in .sass or .scss try the current syntax first + * then, if a file is not found, try the other syntax. + * @param string filename to find + * @param SassParser Sass parser + * @return string path to file + * @throws SassException if file not found + */ + public static function getFile($filename, $parser) { + $ext = substr($filename, -5); + + foreach (self::$extensions as $i=>$extension) { + if ($ext !== '.'.self::SASS && $ext !== '.'.self::SCSS) { + if ($i===0) { + $_filename = "$filename.{$parser->syntax}"; + } + else { + $_filename = $filename.'.'.($parser->syntax === self::SASS ? self::SCSS : self::SASS); + } + } + else { + $_filename = $filename; + } + + if (file_exists($_filename)) { + return $_filename; + } + + foreach (array_merge(array(dirname($parser->filename)), $parser->load_paths) as $loadPath) { + $path = self::findFile($_filename, realpath($loadPath)); + if ($path !== false) { + return $path; + } + } // foreach + + if (!empty($parser->template_location)) { + $path = self::findFile($_filename, realpath($parser->template_location)); + if ($path !== false) { + return $path; + } + } + } + + throw new SassException('Unable to find {what}: {filename}', array('{what}'=>'import file', '{filename}'=>$filename)); + } + + /** + * Looks for the file recursively in the specified directory. + * This will also look for _filename to handle Sass partials. + * @param string filename to look for + * @param string path to directory to look in and under + * @return mixed string: full path to file if found, false if not + */ + public static function findFile($filename, $dir) { + $partialname = dirname($filename).DIRECTORY_SEPARATOR.'_'.basename($filename); + + foreach (array($filename, $partialname) as $file) { + if (file_exists($dir . DIRECTORY_SEPARATOR . $file)) { + return realpath($dir . DIRECTORY_SEPARATOR . $file); + } + } + + $files = array_slice(scandir($dir), 2); + + foreach ($files as $file) { + if (is_dir($dir . DIRECTORY_SEPARATOR . $file)) { + $path = self::findFile($filename, $dir . DIRECTORY_SEPARATOR . $file); + if ($path !== false) { + return $path; + } + } + } // foreach + return false; + } + + /** + * Returns a cached version of the file if available. + * @param string filename to fetch + * @param string path to cache location + * @return mixed the cached file if available or false if it is not + */ + public static function getCachedFile($filename, $cacheLocation) { + $cached = realpath($cacheLocation) . DIRECTORY_SEPARATOR . + md5($filename) . '.'.self::SASSC; + + if ($cached && file_exists($cached) && + filemtime($cached) >= filemtime($filename)) { + return unserialize(file_get_contents($cached)); + } + return false; + } + + /** + * Saves a cached version of the file. + * @param SassRootNode Sass tree to save + * @param string filename to save + * @param string path to cache location + * @return mixed the cached file if available or false if it is not + */ + public static function setCachedFile($sassc, $filename, $cacheLocation) { + $cacheDir = realpath($cacheLocation); + + if (!$cacheDir) { + mkdir($cacheLocation); + @chmod($cacheLocation, 0777); + $cacheDir = realpath($cacheLocation); + } + + $cached = $cacheDir . DIRECTORY_SEPARATOR . md5($filename) . '.'.self::SASSC; + + return file_put_contents($cached, serialize($sassc)); + } +} \ No newline at end of file diff --git a/lib/sass/sass/SassParser.php b/lib/sass/sass/SassParser.php new file mode 100644 index 000000000..7d728acd5 --- /dev/null +++ b/lib/sass/sass/SassParser.php @@ -0,0 +1,848 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Sass + */ + +require_once('SassFile.php'); +require_once('SassException.php'); +require_once('tree/SassNode.php'); + +/** + * SassParser class. + * Parses {@link http://sass-lang.com/ .sass and .sccs} files. + * @package PHamlP + * @subpackage Sass + */ +class SassParser { + /**#@+ + * Default option values + */ + const CACHE = true; + const CACHE_LOCATION = './sass-cache'; + const CSS_LOCATION = './css'; + const TEMPLATE_LOCATION = './sass-templates'; + const BEGIN_COMMENT = '/'; + const BEGIN_CSS_COMMENT = '/*'; + const END_CSS_COMMENT = '*/'; + const BEGIN_SASS_COMMENT= '//'; + const BEGIN_INTERPOLATION = '#'; + const BEGIN_INTERPOLATION_BLOCK = '#{'; + const BEGIN_BLOCK = '{'; + const END_BLOCK = '}'; + const END_STATEMENT = ';'; + const DOUBLE_QUOTE = '"'; + const SINGLE_QUOTE = "'"; + + /** + * @var string the character used for indenting + * @see indentChars + * @see indentSpaces + */ + private $indentChar; + /** + * @var array allowable characters for indenting + */ + private $indentChars = array(' ', "\t"); + /** + * @var integer number of spaces for indentation. + * Used to calculate {@link Level} if {@link indentChar} is space. + */ + private $indentSpaces = 2; + + /** + * @var string source + */ + private $source; + + /**#@+ + * Option + */ + /** + * cache: + * @var boolean Whether parsed Sass files should be cached, allowing greater + * speed. + * + * Defaults to true. + */ + private $cache; + + /** + * cache_location: + * @var string The path where the cached sassc files should be written to. + * + * Defaults to './sass-cache'. + */ + private $cache_location; + + /** + * css_location: + * @var string The path where CSS output should be written to. + * + * Defaults to './css'. + */ + private $css_location; + + /** + * debug_info: + * @var boolean When true the line number and file where a selector is defined + * is emitted into the compiled CSS in a format that can be understood by the + * {@link https://addons.mozilla.org/en-US/firefox/addon/103988/ + * FireSass Firebug extension}. + * Disabled when using the compressed output style. + * + * Defaults to false. + * @see style + */ + private $debug_info; + + /** + * extensions: + * @var array Sass extensions, e.g. Compass. An associative array of the form + * $name => $options where $name is the name of the extension and $options + * is an array of name=>value options pairs. + */ + protected $extensions; + + /** + * filename: + * @var string The filename of the file being rendered. + * This is used solely for reporting errors. + */ + protected $filename; + + /** + * function_paths: + * @var array An array of filesystem paths which should be searched for + * SassScript functions. + */ + private $function_paths; + + /** + * line: + * @var integer The number of the first line of the Sass template. Used for + * reporting line numbers for errors. This is useful to set if the Sass + * template is embedded. + * + * Defaults to 1. + */ + private $line; + + /** + * line_numbers: + * @var boolean When true the line number and filename where a selector is + * defined is emitted into the compiled CSS as a comment. Useful for debugging + * especially when using imports and mixins. + * Disabled when using the compressed output style or the debug_info option. + * + * Defaults to false. + * @see debug_info + * @see style + */ + private $line_numbers; + + /** + * load_paths: + * @var array An array of filesystem paths which should be searched for + * Sass templates imported with the @import directive. + * + * Defaults to './sass-templates'. + */ + private $load_paths; + + /** + * property_syntax: + * @var string Forces the document to use one syntax for + * properties. If the correct syntax isn't used, an error is thrown. + * Value can be: + * + new - forces the use of a colon or equals sign after the property name. + * For example color: #0f3 or width: $main_width. + * + old - forces the use of a colon before the property name. + * For example: :color #0f3 or :width = $main_width. + * + * By default, either syntax is valid. + * + * Ignored for SCSS files which alaways use the new style. + */ + private $property_syntax; + + /** + * quiet: + * @var boolean When set to true, causes warnings to be disabled. + * Defaults to false. + */ + private $quiet; + + /** + * style: + * @var string the style of the CSS output. + * Value can be: + * + nested - Nested is the default Sass style, because it reflects the + * structure of the document in much the same way Sass does. Each selector + * and rule has its own line with indentation is based on how deeply the rule + * is nested. Nested style is very useful when looking at large CSS files as + * it allows you to very easily grasp the structure of the file without + * actually reading anything. + * + expanded - Expanded is the typical human-made CSS style, with each selector + * and property taking up one line. Selectors are not indented; properties are + * indented within the rules. + * + compact - Each CSS rule takes up only one line, with every property defined + * on that line. Nested rules are placed with each other while groups of rules + * are separated by a blank line. + * + compressed - Compressed has no whitespace except that necessary to separate + * selectors and properties. It's not meant to be human-readable. + * + * Defaults to 'nested'. + */ + private $style; + + /** + * syntax: + * @var string The syntax of the input file. + * 'sass' for the indented syntax and 'scss' for the CSS-extension syntax. + * + * This is set automatically when parsing a file, else defaults to 'sass'. + */ + private $syntax; + + /** + * template_location: + * @var string Path to the root sass template directory for your + * application. + */ + private $template_location; + + /** + * vendor_properties: + * If enabled a property need only be written in the standard form and vendor + * specific versions will be added to the style sheet. + * @var mixed array: vendor properties, merged with the built-in vendor + * properties, to automatically apply. + * Boolean true: use built in vendor properties. + * + * Defaults to vendor_properties disabled. + * @see _vendorProperties + */ + private $vendor_properties = array(); + + /**#@-*/ + /** + * Defines the build-in vendor properties + * @var array built-in vendor properties + * @see vendor_properties + */ + private $_vendorProperties = array( + 'border-radius' => array( + '-moz-border-radius', + '-webkit-border-radius', + '-khtml-border-radius' + ), + 'border-top-right-radius' => array( + '-moz-border-radius-topright', + '-webkit-border-top-right-radius', + '-khtml-border-top-right-radius' + ), + 'border-bottom-right-radius' => array( + '-moz-border-radius-bottomright', + '-webkit-border-bottom-right-radius', + '-khtml-border-bottom-right-radius' + ), + 'border-bottom-left-radius' => array( + '-moz-border-radius-bottomleft', + '-webkit-border-bottom-left-radius', + '-khtml-border-bottom-left-radius' + ), + 'border-top-left-radius' => array( + '-moz-border-radius-topleft', + '-webkit-border-top-left-radius', + '-khtml-border-top-left-radius' + ), + 'box-shadow' => array('-moz-box-shadow', '-webkit-box-shadow'), + 'box-sizing' => array('-moz-box-sizing', '-webkit-box-sizing'), + 'opacity' => array('-moz-opacity', '-webkit-opacity', '-khtml-opacity'), + ); + + /** + * Constructor. + * Sets parser options + * @param array $options + * @return SassParser + */ + public function __construct($options = array()) { + if (!is_array($options)) { + throw new SassException('{what} must be a {type}', array('{what}'=>'options', '{type}'=>'array')); + } + if (!empty($options['language'])) { + Phamlp::$language = $options['language']; + } + + if (!empty($options['extensions'])) { + foreach ($options['extensions'] as $extension=>$extOptions) { + include dirname(__FILE__).DIRECTORY_SEPARATOR.'extensions'.DIRECTORY_SEPARATOR.$extension.DIRECTORY_SEPARATOR.'config.php'; + $configClass = 'SassExtentions'.$extension.'Config'; + $config = new $configClass; + $config->config($extOptions); + + $lp = dirname(__FILE__).DIRECTORY_SEPARATOR.'extensions'.DIRECTORY_SEPARATOR.$extension.DIRECTORY_SEPARATOR.'frameworks'; + $fp = dirname(__FILE__).DIRECTORY_SEPARATOR.'extensions'.DIRECTORY_SEPARATOR.$extension.DIRECTORY_SEPARATOR.'functions'; + $options['load_paths'] = (empty($options['load_paths']) ? + array($lp) : array_merge($options['load_paths'], $lp)); + $options['function_paths'] = (empty($options['function_paths']) ? + array($fp) : array_merge($options['function_paths'], $fp)); + } + } + + if (!empty($options['vendor_properties'])) { + if ($options['vendor_properties'] === true) { + $this->vendor_properties = $this->_vendorProperties; + } + elseif (is_array($options['vendor_properties'])) { + $this->vendor_properties = array_merge($this->vendor_properties, $this->_vendorProperties); + } + } + unset($options['language'], $options['vendor_properties']); + + $defaultOptions = array( + 'cache' => self::CACHE, + 'cache_location' => dirname(__FILE__) . DIRECTORY_SEPARATOR . self::CACHE_LOCATION, + 'css_location' => dirname(__FILE__) . DIRECTORY_SEPARATOR . self::CSS_LOCATION, + 'debug_info' => false, + 'filename' => array('dirname' => '', 'basename' => ''), + 'function_paths' => array(), + 'load_paths' => array(dirname(__FILE__) . DIRECTORY_SEPARATOR . self::TEMPLATE_LOCATION), + 'line' => 1, + 'line_numbers' => false, + 'style' => SassRenderer::STYLE_NESTED, + 'syntax' => SassFile::SASS + ); + + foreach (array_merge($defaultOptions, $options) as $name=>$value) { + if (property_exists($this, $name)) { + $this->$name = $value; + } + } + } + + /** + * Getter. + * @param string name of property to get + * @return mixed return value of getter function + */ + public function __get($name) { + $getter = 'get' . ucfirst($name); + if (method_exists($this, $getter)) { + return $this->$getter(); + } + throw new SassException('No getter function for {what}', array('{what}'=>$name)); + } + + public function getCache() { + return $this->cache; + } + + public function getCache_location() { + return $this->cache_location; + } + + public function getCss_location() { + return $this->css_location; + } + + public function getDebug_info() { + return $this->debug_info; + } + + public function getFilename() { + return $this->filename; + } + + public function getLine() { + return $this->line; + } + + public function getSource() { + return $this->source; + } + + public function getLine_numbers() { + return $this->line_numbers; + } + + public function getFunction_paths() { + return $this->function_paths; + } + + public function getLoad_paths() { + return $this->load_paths; + } + + public function getProperty_syntax() { + return $this->property_syntax; + } + + public function getQuiet() { + return $this->quiet; + } + + public function getStyle() { + return $this->style; + } + + public function getSyntax() { + return $this->syntax; + } + + public function getTemplate_location() { + return $this->template_location; + } + + public function getVendor_properties() { + return $this->vendor_properties; + } + + public function getOptions() { + return array( + 'cache' => $this->cache, + 'cache_location' => $this->cache_location, + 'css_location' => $this->css_location, + 'filename' => $this->filename, + 'function_paths' => $this->function_paths, + 'line' => $this->line, + 'line_numbers' => $this->line_numbers, + 'load_paths' => $this->load_paths, + 'property_syntax' => $this->property_syntax, + 'quiet' => $this->quiet, + 'style' => $this->style, + 'syntax' => $this->syntax, + 'template_location' => $this->template_location, + 'vendor_properties' => $this->vendor_properties + ); + } + + /** + * Parse a sass file or Sass source code and returns the CSS. + * @param string name of source file or Sass source + * @return string CSS + */ + public function toCss($source, $isFile = true) { + return $this->parse($source, $isFile)->render(); + } + + /** + * Parse a sass file or Sass source code and + * returns the document tree that can then be rendered. + * The file will be searched for in the directories specified by the + * load_paths option. + * If caching is enabled a cached version will be used if possible or the + * compiled version cached if not. + * @param string name of source file or Sass source + * @return SassRootNode Root node of document tree + */ + public function parse($source, $isFile = true) { + if ($isFile) { + $this->filename = SassFile::getFile($source, $this); + + if ($isFile) { + $this->syntax = substr($this->filename, -4); + } + elseif ($this->syntax !== SassFile::SASS && $this->syntax !== SassFile::SCSS) { + throw new SassException('Invalid {what}', array('{what}'=>'syntax option')); + } + + if ($this->cache) { + $cached = SassFile::getCachedFile($this->filename, $this->cache_location); + if ($cached !== false) { + return $cached; + } + } + + $tree = $this->toTree(file_get_contents($this->filename)); + + if ($this->cache) { + SassFile::setCachedFile($tree, $this->filename, $this->cache_location); + } + + return $tree; + } + else { + return $this->toTree($source); + } + } + + /** + * Parse Sass source into a document tree. + * If the tree is already created return that. + * @param string Sass source + * @return SassRootNode the root of this document tree + */ + private function toTree($source) { + if ($this->syntax === SassFile::SASS) { + $this->source = explode("\n", $source); + $this->setIndentChar(); + } + else { + $this->source = $source; + } + unset($source); + $root = new SassRootNode($this); + $this->buildTree($root); + return $root; + } + + /** + * Builds a parse tree under the parent node. + * Called recursivly until the source is parsed. + * @param SassNode the node + */ + private function buildTree($parent) { + $node = $this->getNode($parent); + while (is_object($node) && $node->isChildOf($parent)) { + $parent->addChild($node); + $node = $this->buildTree($node); + } + return $node; + } + + /** + * Creates and returns the next SassNode. + * The tpye of SassNode depends on the content of the SassToken. + * @return SassNode a SassNode of the appropriate type. Null when no more + * source to parse. + */ + private function getNode($node) { + $token = $this->getToken(); + if (empty($token)) return null; + switch (true) { + case SassDirectiveNode::isa($token): + return $this->parseDirective($token, $node); + break; + case SassCommentNode::isa($token): + return new SassCommentNode($token); + break; + case SassVariableNode::isa($token): + return new SassVariableNode($token); + break; + case SassPropertyNode::isa($token, $this->property_syntax): + return new SassPropertyNode($token, $this->property_syntax); + break; + case SassMixinDefinitionNode::isa($token): + if ($this->syntax === SassFile::SCSS) { + throw new SassException('Mixin {which} shortcut not allowed in SCSS', array('{which}'=>'definition'), $this); + } + return new SassMixinDefinitionNode($token); + break; + case SassMixinNode::isa($token): + if ($this->syntax === SassFile::SCSS) { + throw new SassException('Mixin {which} shortcut not allowed in SCSS', array('{which}'=>'include'), $this); + } + return new SassMixinNode($token); + break; + default: + return new SassRuleNode($token); + break; + } // switch + } + + /** + * Returns a token object that contains the next source statement and + * meta data about it. + * @return object + */ + private function getToken() { + return ($this->syntax === SassFile::SASS ? $this->sass2Token() : $this->scss2Token()); + } + + /** + * Returns an object that contains the next source statement and meta data + * about it from SASS source. + * Sass statements are passed over. Statements spanning multiple lines, e.g. + * CSS comments and selectors, are assembled into a single statement. + * @return object Statement token. Null if end of source. + */ + private function sass2Token() { + $statement = ''; // source line being tokenised + $token = null; + + while (is_null($token) && !empty($this->source)) { + while (empty($statement) && !empty($this->source)) { + $source = array_shift($this->source); + $statement = trim($source); + $this->line++; + } + + if (empty($statement)) { + break; + } + + $level = $this->getLevel($source); + + // Comment statements can span multiple lines + if ($statement[0] === self::BEGIN_COMMENT) { + // Consume Sass comments + if (substr($statement, 0, strlen(self::BEGIN_SASS_COMMENT)) + === self::BEGIN_SASS_COMMENT) { + unset($statement); + while($this->getLevel($this->source[0]) > $level) { + array_shift($this->source); + $this->line++; + } + continue; + } + // Build CSS comments + elseif (substr($statement, 0, strlen(self::BEGIN_CSS_COMMENT)) + === self::BEGIN_CSS_COMMENT) { + while($this->getLevel($this->source[0]) > $level) { + $statement .= "\n" . ltrim(array_shift($this->source)); + $this->line++; + } + } + else { + $this->source = $statement; + throw new SassException('Illegal comment type', array(), $this); + } + } + // Selector statements can span multiple lines + elseif (substr($statement, -1) === SassRuleNode::CONTINUED) { + // Build the selector statement + while($this->getLevel($this->source[0]) === $level) { + $statement .= ltrim(array_shift($this->source)); + $this->line++; + } + } + + $token = (object) array( + 'source' => $statement, + 'level' => $level, + 'filename' => $this->filename, + 'line' => $this->line - 1, + ); + } + return $token; + } + + /** + * Returns the level of the line. + * Used for .sass source + * @param string the source + * @return integer the level of the source + * @throws Exception if the source indentation is invalid + */ + private function getLevel($source) { + $indent = strlen($source) - strlen(ltrim($source)); + $level = $indent/$this->indentSpaces; + if (!is_int($level) || + preg_match("/[^{$this->indentChar}]/", substr($source, 0, $indent))) { + $this->source = $source; + throw new SassException('Invalid indentation', array(), $this); + } + return $level; + } + + /** + * Returns an object that contains the next source statement and meta data + * about it from SCSS source. + * @return object Statement token. Null if end of source. + */ + private function scss2Token() { + static $srcpos = 0; // current position in the source stream + static $srclen; // the length of the source stream + + $statement = ''; + $token = null; + if (empty($srclen)) { + $srclen = strlen($this->source); + } + while (is_null($token) && $srcpos < $srclen) { + $c = $this->source[$srcpos++]; + switch ($c) { + case self::BEGIN_COMMENT: + if (substr($this->source, $srcpos-1, strlen(self::BEGIN_SASS_COMMENT)) + === self::BEGIN_SASS_COMMENT) { + while ($this->source[$srcpos++] !== "\n"); + $statement .= "\n"; + } + elseif (substr($this->source, $srcpos-1, strlen(self::BEGIN_CSS_COMMENT)) + === self::BEGIN_CSS_COMMENT) { + if (ltrim($statement)) { + throw new SassException('Invalid {what}', array('{what}'=>'comment'), (object) array( + 'source' => $statement, + 'filename' => $this->filename, + 'line' => $this->line, + )); + } + $statement .= $c.$this->source[$srcpos++]; + while (substr($this->source, $srcpos, strlen(self::END_CSS_COMMENT)) + !== self::END_CSS_COMMENT) { + $statement .= $this->source[$srcpos++]; + } + $srcpos += strlen(self::END_CSS_COMMENT); + $token = $this->createToken($statement.self::END_CSS_COMMENT); + } + else { + $statement .= $c; + } + break; + case self::DOUBLE_QUOTE: + case self::SINGLE_QUOTE: + $statement .= $c; + while ($this->source[$srcpos] !== $c) { + $statement .= $this->source[$srcpos++]; + } + $statement .= $this->source[$srcpos++]; + break; + case self::BEGIN_INTERPOLATION: + $statement .= $c; + if (substr($this->source, $srcpos-1, strlen(self::BEGIN_INTERPOLATION_BLOCK)) + === self::BEGIN_INTERPOLATION_BLOCK) { + while ($this->source[$srcpos] !== self::END_BLOCK) { + $statement .= $this->source[$srcpos++]; + } + $statement .= $this->source[$srcpos++]; + } + break; + case self::BEGIN_BLOCK: + case self::END_BLOCK: + case self::END_STATEMENT: + $token = $this->createToken($statement . $c); + if (is_null($token)) $statement = ''; + break; + default: + $statement .= $c; + break; + } + } + + if (is_null($token)) + $srclen = $srcpos = 0; + + return $token; + } + + /** + * Returns an object that contains the source statement and meta data about + * it. + * If the statement is just and end block we update the meta data and return null. + * @param string source statement + * @return SassToken + */ + private function createToken($statement) { + static $level = 0; + + $this->line += substr_count($statement, "\n"); + $statement = trim($statement); + if (substr($statement, 0, strlen(self::BEGIN_CSS_COMMENT)) !== self::BEGIN_CSS_COMMENT) { + $statement = str_replace(array("\n","\r"), '', $statement); + } + $last = substr($statement, -1); + // Trim the statement removing whitespace, end statement (;), begin block ({), and (unless the statement ends in an interpolation block) end block (}) + $statement = rtrim($statement, ' '.self::BEGIN_BLOCK.self::END_STATEMENT); + $statement = (preg_match('/#\{.+?\}$/i', $statement) ? $statement : rtrim($statement, self::END_BLOCK)); + $token = ($statement ? (object) array( + 'source' => $statement, + 'level' => $level, + 'filename' => $this->filename, + 'line' => $this->line, + ) : null); + $level += ($last === self::BEGIN_BLOCK ? 1 : ($last === self::END_BLOCK ? -1 : 0)); + return $token; + } + + /** + * Parses a directive + * @param SassToken token to parse + * @param SassNode parent node + * @return SassNode a Sass directive node + */ + private function parseDirective($token, $parent) { + switch (SassDirectiveNode::extractDirective($token)) { + case '@extend': + return new SassExtendNode($token); + break; + case '@mixin': + return new SassMixinDefinitionNode($token); + break; + case '@include': + return new SassMixinNode($token); + break; + case '@import': + if ($this->syntax == SassFile::SASS) { + $i = 0; + $source = ''; + while (!empty($this->source) && empty($source)) { + $source = $this->source[$i++]; + } + if (!empty($source) && $this->getLevel($source) > $token->level) { + throw new SassException('Nesting not allowed beneath {what}', array('{what}'=>'@import directive'), $token); + } + } + return new SassImportNode($token); + break; + case '@for': + return new SassForNode($token); + break; + case '@if': + return new SassIfNode($token); + break; + case '@else': // handles else and else if directives + return new SassElseNode($token); + break; + case '@do': + case '@while': + return new SassWhileNode($token); + break; + case '@debug': + return new SassDebugNode($token); + break; + case '@warn': + return new SassDebugNode($token, true); + break; + default: + return new SassDirectiveNode($token); + break; + } + } + + /** + * Determine the indent character and indent spaces. + * The first character of the first indented line determines the character. + * If this is a space the number of spaces determines the indentSpaces; this + * is always 1 if the indent character is a tab. + * Only used for .sass files. + * @throws SassException if the indent is mixed or + * the indent character can not be determined + */ + private function setIndentChar() { + foreach ($this->source as $l=>$source) { + if (!empty($source) && in_array($source[0], $this->indentChars)) { + $this->indentChar = $source[0]; + for ($i = 0, $len = strlen($source); $i < $len && $source[$i] == $this->indentChar; $i++); + if ($i < $len && in_array($source[$i], $this->indentChars)) { + $this->line = ++$l; + $this->source = $source; + throw new SassException('Mixed indentation not allowed', array(), $this); + } + $this->indentSpaces = ($this->indentChar == ' ' ? $i : 1); + return; + } + } // foreach + $this->indentChar = ' '; + $this->indentSpaces = 2; + } +} diff --git a/lib/sass/sass/extensions/compass/config.php b/lib/sass/sass/extensions/compass/config.php new file mode 100644 index 000000000..0ae79f1f6 --- /dev/null +++ b/lib/sass/sass/extensions/compass/config.php @@ -0,0 +1,65 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Sass.extensions.compass + */ + +/** + * Compass extension configuration class. + * @package PHamlP + * @subpackage Sass.extensions.compass + */ +class SassExtentionsCompassConfig { + public static $config; + private static $defaultConfig = array( + 'project_path' => '', + 'http_path' => '/', + 'css_dir' => 'css', + 'css_path' => '', + 'http_css_path' => '', + 'fonts_dir' => 'fonts', + 'fonts_path' => '', + 'http_fonts_path' => '', + 'images_dir' => 'images', + 'images_path' => '', + 'http_images_path' => '', + 'javascripts_dir' => 'javascripts', + 'javascripts_path' => '', + 'http_javascripts_path' => '', + 'relative_assets' => true, + ); + + /** + * Sets configuration settings or returns a configuration setting. + * @param mixed array: configuration settings; string: configuration setting to return + * @return string configuration setting. Null if setting does not exist. + */ + public function config($config) { + if (is_array($config)) { + self::$config = array_merge(self::$defaultConfig, $config); + self::setDefaults(); + } + elseif (is_string($config) && isset(self::$config[$config])) { + return self::$config[$config]; + } + } + + /** + * Sets default values for paths not specified + */ + private static function setDefaults() { + foreach (array('css', 'images', 'fonts', 'javascripts') as $asset) { + if (empty(self::$config[$asset.'_path'])) { + self::$config[$asset.'_path'] = self::$config['project_path'].DIRECTORY_SEPARATOR.self::$config[$asset.'_dir']; + } + if (empty(self::$config['http_'.$asset.'_path'])) { + self::$config['http_'.$asset.'_path'] = self::$config['http_path'].self::$config[$asset.'_dir']; + } + } + } +} \ No newline at end of file diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/_blueprint.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/_blueprint.scss new file mode 100644 index 000000000..067f84e54 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/_blueprint.scss @@ -0,0 +1,47 @@ +@import "blueprint/colors"; +@import "blueprint/grid"; +@import "blueprint/typography"; +@import "blueprint/utilities"; +@import "blueprint/form"; +@import "blueprint/interaction"; +@import "blueprint/debug"; +@import "blueprint/print"; +@import "blueprint/ie"; + +// ### Usage examples: +// +// As a top-level mixin, apply to any page that includes the stylesheet: +//
    +// +blueprint
    +// 
    +// +// Scoped by a presentational class: +//
    +// body.blueprint
    +//   +blueprint(true)
    +// 
    +// +// Scoped by semantic selectors: +//
    +// body#page-1, body#page-2, body.a-special-page-type
    +//   +blueprint(true)
    +// 
    +// +// #### Deprecated: +// You use to be able to pass the body selector as the first argument when used as a top-level mixin +//
    +// +blueprint("body#page-1, body#page-2, body.a-special-page-type")
    +// 
    + +@mixin blueprint($body_selector: body) { + //@doc off + @if not ($body_selector == "body" or $body_selector == true) { + @warn "[DEPRECATED] To specify a the selector \"#{$body_selector}\" to +blueprint, pass true as the first argument and mix it into #{$body_selector}."; } + //@doc on + @include blueprint-typography($body_selector); + @include blueprint-utilities; + @include blueprint-grid; + @include blueprint-debug; + @include blueprint-interaction; + @include blueprint-form; +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.scss new file mode 100644 index 000000000..14af82242 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.scss @@ -0,0 +1,101 @@ +@import "compass/css3/inline-block"; +@import "compass/utilities/general/float"; + +// Button Font +$blueprint_button_font_family: unquote('"Lucida Grande", Tahoma, Arial, Verdana, sans-serif') !default; + +// Default Button Colors +$blueprint_button_border_color: #dedede !default; +$blueprint_button_background_color: #f5f5f5 !default; +$blueprint_button_font_color: #565656 !default; + +// Default Button Hover Colors +$blueprint_button_hover_border_color: #c2e1ef !default; +$blueprint_button_hover_background_color: #dff4ff !default; +$blueprint_button_hover_font_color: #336699 !default; + +// Default Button Active Colors +$blueprint_button_active_border_color: #6299c5 !default; +$blueprint_button_active_background_color: #6299c5 !default; +$blueprint_button_active_font_color: white !default; + +//** +// Sets the colors for a button +// @param border_highlight_color +// The highlight color defaults to whatever is the value of the border_color but it's one shade lighter. +@mixin button-colors( + $font_color: $blueprint_button_font_color, + $bg_color: $blueprint_button_background_color, + $border_color: $blueprint_button_border_color, + $border_highlight_color: $border_color + #101010 +) { + background-color: $bg_color; + border-color: $border_highlight_color $border_color $border_color $border_highlight_color; + color: $font_color; +} + +//** +// Sets the colors for a button in the active state +// @param border_highlight_color +// The highlight color defaults to whatever is the value of the border_color but it's one shade lighter. +@mixin button-active-colors( + $font_color: $blueprint_button_active_font_color, + $bg_color: $blueprint_button_active_background_color, + $border_color: $blueprint_button_active_border_color, + $border_highlight_color: $border_color + #101010 +) { + &:active { + @include button-colors($font_color, $bg_color, $border_color, $border_highlight_color); + } +} + +//** +// Sets the colors for a button in the hover state. +// @param border_highlight_color +// The highlight color defaults to whatever is the value of the border_color but it's one shade lighter. +@mixin button-hover-colors( + $font_color: $blueprint_button_hover_font_color, + $bg_color: $blueprint_button_hover_background_color, + $border_color: $blueprint_button_hover_border_color, + $border_highlight_color: $border_color + #101010 +) { + &:hover { + @include button-colors($font_color, $bg_color, $border_color, $border_highlight_color); + } +} + +@mixin button-base($float: false) { + @if $float { @include float($float); display: block; } + @else { @include inline-block; } + margin: 0.7em 0.5em 0.7em 0; + border-width: 1px; border-style: solid; + font-family: $blueprint_button_font_family; font-size: 100%; line-height: 130%; font-weight: bold; + text-decoration: none; + cursor: pointer; + img { + margin: 0 3px -3px 0 !important; + padding: 0; + border: none; + width: 16px; + height: 16px; + float: none; + } +} + +@mixin anchor-button($float: false) { + @include button-base($float); + padding: 5px 10px 5px 7px; +} + +@mixin button-button($float: false) { + @include button-base($float); + width: auto; + overflow: visible; + padding: 4px 10px 3px 7px; + &[type] { + padding: 4px 10px 4px 7px; + line-height: 17px; } + *:first-child+html &[type] { + padding: 4px 10px 3px 7px; + } +} \ No newline at end of file diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_colors.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_colors.scss new file mode 100644 index 000000000..6817a2d45 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_colors.scss @@ -0,0 +1,32 @@ +$font_color: #333333 !default; +$quiet_color: $font_color + #333333 !default; +$loud_color: $font_color - #222222 !default; +$header_color: $font_color - #111111 !default; +$alt_text_color: #666666 !default; +$blueprint_background_color: #eeeeee !default; + +$link_color: #000099 !default; +$link_hover_color: black !default; +$link_focus_color: $link_hover_color !default; +$link_active_color: $link_color + #cc0000 !default; +$link_visited_color: $link_color - #333333 !default; + +$feedback_border_color: #dddddd !default; +$success_color: #264409 !default; +$success_bg_color: #e6efc2 !default; +$success_border_color: #c6d880 !default; +$notice_color: #514721 !default; +$notice_bg_color: #fff6bf !default; +$notice_border_color: #ffd324 !default; +$error_color: #8a1f11 !default; +$error_bg_color: #fbe3e4 !default; +$error_border_color: #fbc2c4 !default; + +$highlight_color: yellow !default; +$added_color: white !default; +$added_bg_color: #006600 !default; +$removed_color: white !default; +$removed_bg_color: #990000 !default; + +$blueprint_table_header_color: #c3d9ff !default; +$blueprint_table_stripe_color: #e5ecf9 !default; diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_debug.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_debug.scss new file mode 100644 index 000000000..b37a89c0a --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_debug.scss @@ -0,0 +1,11 @@ +@mixin showgrid($image: "grid.png") { + background: image_url($image); +} + +@mixin blueprint-debug($grid_image: unquote("grid.png")) { + // Use this class on any column or container to see the grid. + // TODO: prefix this with the project path. + .showgrid { + @include showgrid($grid_image); + } +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss new file mode 100644 index 000000000..b6bf33c8f --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss @@ -0,0 +1,86 @@ +@import "typography"; + +$alternate-text-font : "Warnock Pro", "Goudy Old Style", "Palatino", "Book Antiqua", Georgia, serif !default; +// To install the fancy type plugin: +// 1. import the fancy_type module: @import blueprint/fancy_type +// 2. mixin +fancy-type to your project's body or at the top level of your stylesheet: +// body +// +fancy-type + +@mixin fancy-type { + @include fancy-paragraphs; + .caps { @include caps; } + .dquo { @include dquo; } + .alt { @include alt; } +} + +// Indentation instead of line shifts for sibling paragraphs. Mixin to a style like p + p +@mixin sibling-indentation { + text-indent: 2em; + margin-top: -1.5em; + /* Don't want this in forms. */ + form & { text-indent: 0; } +} + +// For great looking type, use this code instead of asdf: +// asdf +// Best used on prepositions and ampersands. + +@mixin alt { + color: $alt-text-color; + font-family: $alternate-text-font; + font-style: italic; + font-weight: normal; +} + +// For great looking quote marks in titles, replace "asdf" with: +// asdf” +// (That is, when the title starts with a quote mark). +// (You may have to change this value depending on your font size). + +@mixin dquo($offset: 0.5em) { + margin-left: -$offset; +} + +// Reduced size type with incremental leading +// (http://www.markboulton.co.uk/journal/comments/incremental_leading/) +// +// This could be used for side notes. For smaller type, you don't necessarily want to +// follow the 1.5x vertical rhythm -- the line-height is too much. +// +// Using this mixin, reduces your font size and line-height so that for +// every four lines of normal sized type, there is five lines of the sidenote. eg: +// +// Arguments: +// `$font-size` - The desired font size in pixels. This will be converted to ems for you. Defaults to 10px. +// `$base-font-size` - The base font size in pixels. Defaults to 12px +// `$old-line-height` - The old line height. Defaults to 1.5 times the base-font-size + +@mixin incr( + $font-size: 10px, + $base-font-size: $blueprint-font-size, + $old-line-height: $base-font-size * 1.5 +) { + font-size: 1em * $font-size / $base-font-size; + line-height: 1em * $old-line-height / $font-size * 4 / 5; + margin-bottom: 1.5em; +} + +// Surround uppercase words and abbreviations with this class. +// Based on work by Jørgen Arnor GÃ¥rdsø Lom [http://twistedintellect.com/] + +@mixin caps { + font-variant: small-caps; + letter-spacing: 1px; + text-transform: lowercase; + font-size: 1.2em; + line-height: 1%; + font-weight: bold; + padding: 0 2px; +} + +@mixin fancy-paragraphs { + p + p { @include sibling-indentation; } + p.incr, + .incr p { @include incr; } +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_form.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_form.scss new file mode 100644 index 000000000..fe4afe38d --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_form.scss @@ -0,0 +1,68 @@ +@import "colors"; + +// Mixin for producing Blueprint "inline" forms. Should be used with the blueprint-form mixin. +@mixin blueprint-inline-form { + line-height: 3; + p { + margin-bottom: 0; + } +} + +@mixin blueprint-form { + @include blueprint-form-layout; + @include blueprint-form-borders; + @include blueprint-form-sizes; +} + +@mixin blueprint-form-layout { + label { font-weight: bold; } + fieldset { padding: 1.4em; margin: 0 0 1.5em 0; } + legend { font-weight: bold; font-size: 1.2em; } + input { + &.text, + &.title, + &[type=email], + &[type=text], + &[type=password] { margin: 0.5em 0; background-color: white; padding: 5px; } + &.title { font-size: 1.5em; } + &[type=checkbox], + &.checkbox, + &[type=radio], + &.radio { position: relative; top: 0.25em; } + } + textarea { margin: 0.5em 0; padding: 5px; } + select { margin: 0.5em 0; } +} + +@mixin blueprint-form-sizes +( + $input_width: 300px, + $textarea_width: 390px, + $textarea_height: 250px +) { + input { + &.text, + &.title, + &[type=email], + &[type=text], + &[type=password] { width: $input_width; } + } + textarea { width: $textarea_width; height: $textarea_height; } +} + +@mixin blueprint-form-borders +( + $unfocused_border_color: #bbbbbb, + $focus_border_color: #666666, + $fieldset_border_color: #cccccc +) { + fieldset { + border: 1px solid $fieldset_border_color; } + input.text, input.title, input[type=email], input[type=text], input[type=password], + textarea, select { + border: 1px solid $unfocused_border_color; + &:focus { + border: 1px solid $focus_border_color; + } + } +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_grid.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_grid.scss new file mode 100644 index 000000000..78f509e20 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_grid.scss @@ -0,0 +1,249 @@ +// -------------------------------------------------------------- +// SASS Gridification +// * Author: Chris Eppstein +// A SASS adaptation of Blueprint CSS +// * Version: 0.7.1 (2008-02-25) +// * Website: http://code.google.com/p/blueprintcss/ +// Based on work by: +// * Lorin Tackett [lorintackett.com] +// * Olav Bjorkoy [bjorkoy.com] +// * Nathan Borror [playgroundblues.com] +// * Jeff Croft [jeffcroft.com] +// * Christian Metts [mintchaos.com] +// * Khoi Vinh [subtraction.com] +// Read more about using a grid here: +// * http://www.subtraction.com/2007/03/18/oh-yeeaahh +// -------------------------------------------------------------- + +@import "compass/utilities/general/float"; +@import "compass/utilities/general/clearfix"; + +// The number of columns in the grid. +$blueprint_grid_columns: 24 !default; + +// The width of a column +$blueprint_grid_width: 30px !default; + +// The amount of margin between columns +$blueprint_grid_margin: 10px !default; + +// The width of a column including the margin. With default settings this is `40px`. +$blueprint_grid_outer_width: $blueprint_grid_width + $blueprint_grid_margin; + +// The width of the container. With default settings this is `950px`. +$blueprint_container_size: $blueprint_grid_outer_width * $blueprint_grid_columns - $blueprint_grid_margin; + +// Generates presentational class names that you can use +// in your html to layout your pages. +// +// #### Note: +// Best practices discourage using this mixin, +// but it is provided to support legacy websites +// and to test the sass port against blueprint's example pages. + +@mixin blueprint-grid { + // A container should group all your columns + .container { + @include container; } + .column, #{enumerate("div.span", 1, $blueprint_grid_columns)} { + @include column-base; } + // The last column in a row needs this class (or mixin) or it will end up on the next row. + .last, div.last { + @include last; } + // Use these classes (or mixins) to set the width of a column. + @for $n from 1 to $blueprint_grid_columns { + .span-#{$n} { + @include span($n); } } + .span-#{$blueprint_grid_columns}, div.span-#{$blueprint_grid_columns} { + @include span($blueprint_grid_columns); + margin: 0; } + input, textarea, select { + @for $n from 1 through $blueprint_grid_columns { + &.span-#{$n} { + @include span($n, true); } } } + // Add these to a column to append empty cols. + @for $n from 1 to $blueprint_grid_columns { + .append-#{$n} { + @include append($n); } } + // Add these to a column to prepend empty cols. + @for $n from 1 to $blueprint_grid_columns { + .prepend-#{$n} { + @include prepend($n); } } + // Use these classes on an element to push it into the + // next column, or to pull it into the previous column. + #{enumerate(".pull", 1, $blueprint_grid_columns)} { + @include pull-base; } + @for $n from 1 through $blueprint_grid_columns { + .pull-#{$n} { + @include pull-margins($n); } } + #{enumerate(".push", 1, $blueprint_grid_columns)} { + @include push-base; } + @for $n from 1 through $blueprint_grid_columns { + .push-#{$n} { + @include push-margins($n); } } + .prepend-top { + @include prepend-top; } + .append-bottom { + @include append-bottom; } } + +// A container for your columns. +// +// #### Note: +// If you use this mixin without the class and want to support ie6 +// you must set text-align left on your container element in an IE stylesheet. +@mixin container { + width: $blueprint_container_size; + margin: 0 auto; + @include clearfix; } + +// The last column in a row needs this mixin or it will end up +// on the next row in some browsers. +@mixin last { + margin-right: 0; } + +// Use this mixins to set the width of n columns. +@mixin column($n, $last: false) { + @include column-base($last); + @include span($n); } + +// Set only the width of an element to align it with the grid. +// Most of the time you'll want to use `+column` instead. +// +// This mixin is especially useful for aligning tables to the grid. +@mixin span($n, $override: false) { + $width: $blueprint_grid_width * $n + $blueprint_grid_margin * ($n - 1); + @if $override { + width: $width !important; } + @else { + width: $width; } } + +// The basic set of styles needed to make an element +// behave like a column: +// +// * floated to left +// * gutter margin on the right (unless the last column) +// * Some IE fixes +// +// #### Note: +// This mixin gets applied automatically when using `+column` +// so you probably don't need to use it directly unless +// you need to deviate from the grid or are trying +// to reduce the amount of generated CSS. +@mixin column-base($last: false) { + @include float-left; + @if $last { + @include last; } + @else { + margin-right: $blueprint_grid_margin; } + * html & { + overflow-x: hidden; } } + +// Mixin to a column to append n empty columns to the right +// by adding right padding to the column. +@mixin append($n) { + padding-right: $blueprint_grid_outer_width * $n; } + +// Mixin to a column to append n empty columns to the left +// by adding left padding to the column. +@mixin prepend($n) { + padding-left: $blueprint_grid_outer_width * $n; } + +// Adds trailing margin. +@mixin append-bottom($amount: 1.5em) { + margin-bottom: $amount; } + +// Adds leading margin. +@mixin prepend-top($amount: 1.5em) { + margin-top: $amount; } + +// Base styles that make it possible to pull an element to the left. +// #### Note: +// This mixin gets applied automatically when using `+pull` +// so you probably don't need to use it directly unless +// you need to deviate from the grid or are trying +// to reduce the amount of generated CSS. +@mixin pull-base { + @include float-left; + position: relative; } + +// The amount of pulling for element to the left. +// #### Note: +// This mixin gets applied automatically when using `+pull` +// so you probably don't need to use it directly unless +// you need to deviate from the grid or are trying +// to reduce the amount of generated CSS. +@mixin pull-margins($n, $last: false) { + @if $last { + margin-left: -$blueprint_grid_outer_width * $n + $blueprint_grid_margin; } + @else { + margin-left: -$blueprint_grid_outer_width * $n; } } + +// Moves a column `n` columns to the left. +// +// This mixin can also be used to change the display order of columns. +// +// If pulling past the last (visually) element in a row, +// pass `true` as the second argument so the calculations can adjust +// accordingly. + +// For example: +// +// HTML: +//
    +// 
    One
    +//
    Two
    +//
    +// Sass: +//
    +// #one
    +//   +column(18, true)
    +//   +prepend(6)
    +// #two
    +//   +column(6)
    +//   +pull(18, true)
    +// 
    +@mixin pull($n, $last: false) { + @include pull-base; + @include pull-margins($n, $last); } + +@mixin push-base { + @include float-right; + position: relative; } + +@mixin push-margins($n) { + margin: 0 (-$blueprint_grid_outer_width * $n) 1.5em $blueprint_grid_outer_width * $n; } + +// mixin to a column to push it n columns to the right +@mixin push($n) { + @include push-base; + @include push-margins($n); } + +// Border on right hand side of a column. +@mixin border($border_color: #eeeeee, $border_width: 1px) { + padding-right: $blueprint_grid_margin / 2 - $border_width; + margin-right: $blueprint_grid_margin / 2; + border-right: #{$border_width} solid #{$border_color}; } + +// Border with more whitespace, spans one column. +@mixin colborder($border_color: #eeeeee, $border_width: 1px) { + padding-right: floor(($blueprint_grid_width + 2 * $blueprint_grid_margin - $border_width) / 2); + margin-right: ceil(($blueprint_grid_width + 2 * $blueprint_grid_margin - $border_width) / 2); + border-right: #{$border_width} solid #{$border_color}; } + +// Mixin this to an hr to make a horizontal ruler across a column. +@mixin colruler($border_color: #dddddd) { + background: $border_color; + color: $border_color; + clear: both; + float: none; + width: 100%; + height: 0.1em; + margin: 0 0 1.45em; + border: none; } + +// Mixin this to an hr to make a horizontal spacer across a column. +@mixin colspacer { + @include colruler; + background: white; + color: white; + visibility: hidden; } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_ie.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_ie.scss new file mode 100644 index 000000000..fb3fe5f78 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_ie.scss @@ -0,0 +1,109 @@ +// @doc off +// The blueprint IE mixins should be mixed into a stylesheet that gets conditionally included +// into IE like so: +// +// @doc on + +//| Usage Examples +//| -------------- +//| +//| As a top-level mixin, apply to any page that includes the stylesheet: +//|
    +//| +blueprint-ie
    +//| 
    +//| Scoped by a presentational class: +//|
    +//| body.blueprint
    +//|  +blueprint-ie(true)
    +//| 
    +//| Scoped by semantic selectors: +//|
    +//| body#page-1, body#page-2, body.a-special-page-type
    +//|   +blueprint-ie(true)
    +//| 
    +//| **Deprecated:** You can pass the body selector as the first argument when used as a top-level mixin +//|
    +//| +blueprint-ie("body#page-1, body#page-2, body.a-special-page-type")
    +//| 
    +@mixin blueprint-ie($body_selector: body) { + @if $body_selector == true { + @include blueprint-ie-body; + @include blueprint-ie-defaults; } + @else { + #{$body_selector} { + @include blueprint-ie-body; + @if $body_selector != "body" { + @warn "[DEPRECATED] To specify a the selector \"#{$body_selector}\" to +blueprint-ie, pass true as the first argument and mix it into #{$body_selector}."; + @include blueprint-ie-defaults; } } + @if $body_selector == "body" { + @include blueprint-ie-defaults; } } } + +@mixin blueprint-ie-body { + text-align: center; + @include blueprint-ie-hacks; } + +@mixin blueprint-ie-hacks { + * html & { + legend { + margin: 0px -8px 16px 0; + padding: 0; } } + html>& { + p code { + *white-space: normal; } } } + +// Fixes for Blueprint "inline" forms in IE +@mixin blueprint-inline-form-ie { + div, p { + vertical-align: middle; } + label { + position: relative; + top: -0.25em; } + input { + &.checkbox, &.radio, &.button, button { + margin: 0.5em 0; } } } + +@mixin blueprint-ie-defaults { + .container { + text-align: left; } + sup { + vertical-align: text-top; } + sub { + vertical-align: text-bottom; } + hr { + margin: -8px auto 11px; } + img { + -ms-interpolation-mode: bicubic; } + fieldset { + padding-top: 0; } + textarea { + overflow: auto; } + input { + &.text { + margin: 0.5em 0; + background-color: white; + border: 1px solid #bbbbbb; + &:focus { + border: 1px solid #666666; } } + &.title { + margin: 0.5em 0; + background-color: white; + border: 1px solid #bbbbbb; + &:focus { + border: 1px solid #666666; } } + &.checkbox { + position: relative; + top: 0.25em; } + &.radio { + position: relative; + top: 0.25em; } + &.button { + position: relative; + top: 0.25em; } } + textarea { + margin: 0.5em 0; } + select { + margin: 0.5em 0; } + button { + position: relative; + top: 0.25em; } } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.scss new file mode 100644 index 000000000..00a4760e9 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.scss @@ -0,0 +1,57 @@ +@import "colors"; + +@mixin blueprint-interaction { + .error { + @include error; } + .notice { + @include notice; } + .success { + @include success; } + .hide { + display: none; } + .highlight { + @include highlight; } + .added { + @include added; } + .removed { + @include removed; } } + +@mixin feedback-base { + padding: 0.8em; + margin-bottom: 1em; + border: 2px solid $feedback_border_color; } + +@mixin error { + @include feedback-base; + background: $error_bg_color; + color: $error_color; + border-color: $error_border_color; + a { + color: $error_color; } } + +@mixin notice { + @include feedback-base; + background: $notice_bg_color; + color: $notice_color; + border-color: $notice_border_color; + a { + color: $notice_color; } } + +@mixin success { + @include feedback-base; + background: $success_bg_color; + color: $success_color; + border-color: $success_border_color; + a { + color: $success_color; } } + +@mixin highlight { + background: $highlight_color; } + +@mixin added { + background: $added_bg_color; + color: $added_color; } + +@mixin removed { + background: $removed_bg_color; + color: $removed_color; } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_link-icons.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_link-icons.scss new file mode 100644 index 000000000..d81159dff --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_link-icons.scss @@ -0,0 +1,37 @@ +@mixin no-link-icon { + background: transparent none !important; + padding: 0 !important; + margin: 0 !important; +} + +@mixin link-icon-base { + padding: 2px 22px 2px 0; + margin: -2px 0; + background-repeat: no-repeat; + background-position: right center; +} + +@mixin link-icon($name, $include-base: true) { + @if $include-base { @include link-icon-base; } + background-image: image-url("link_icons/#{$name}"); } + +@mixin link-icons { + a[href^="http:"], + a[href^="mailto:"], + a[href^="http:"]:visited, + a[href$=".pdf"], + a[href$=".doc"], + a[href$=".xls"], + a[href$=".rss"], + a[href$=".rdf"], + a[href^="aim:"] { @include link-icon-base; } + a[href^="http:"] { @include link-icon("external.png", false); } + a[href^="mailto:"] { @include link-icon("email.png", false); } + a[href^="http:"]:visited { @include link-icon("visited.png", false); } + a[href$=".pdf"] { @include link-icon("pdf.png", false); } + a[href$=".doc"] { @include link-icon("doc.png", false); } + a[href$=".xls"] { @include link-icon("xls.png", false); } + a[href$=".rss"], + a[href$=".rdf"] { @include link-icon("feed.png", false); } + a[href^="aim:"] { @include link-icon("im.png", false); } +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.scss new file mode 100644 index 000000000..03bb02e87 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.scss @@ -0,0 +1,147 @@ +// -------------------------------------------------------------- +// SASS Gridification +// * Author: Geoff Garside +// A SASS adaptation of Blueprint CSS +// * Version: 0.7.1 (2008-02-25) +// * Website: http://code.google.com/p/blueprintcss/ +// Based on work by: +// * Chris Eppstein [eppsteins.net] +// * Lorin Tacket [lorintackett.com] +// * Olav Bjorkoy [bjorkoy.com] +// * Nathan Borror [playgroundblues.com] +// * Jeff Croft [jeffcroft.com] +// * Christian Metts [mintchaos.com] +// * Khoi Vinh [subtraction.com] +// Liquid grid work by: +// * Ben Listwon +// * David Bedingfield +// * Andrei Michael Herasimchuk +// Involution Studios, http://www.involutionstudios.com +// Read more about using a grid here: +// * subtraction.com/archives/2007/0318_oh_yeeaahh.php +// ----- +// By default, the grid is 80% of window width, with 24 columns. +// +// To make the grid fixed, simply change the .container width +// property to a pixel value. e.g., 960px. +// ----- +// To use: +// This module is a REPLACEMENT for the grid module. Simply import it: +// @import blueprint +// @import blueprint/liquid +// ------------------------------------------------------------------- + +@import "compass/utilities/general/clearfix"; +@import "compass/utilities/general/float"; + +// Main layout grid, override these constants to build your grid and container sizes. +// The width shown gives the right floored percentage values. +$blueprint_liquid_grid_columns: 24 !default; + +$blueprint_liquid_grid_width: 3.167% !default; + +$blueprint_liquid_grid_margin: 1.042% !default; + +// Do not edit below this line unless you really know what you're doing. +$blueprint_liquid_container_width: 80% !default; + +$blueprint_liquid_container_min_width: 950px !default; + +$blueprint_liquid_grid_push_pull: -($blueprint_liquid_grid_margin + $blueprint_liquid_grid_width) !default; + +@mixin blueprint-liquid-grid { + // A container should group all your columns + .container { + @include container; } + // Use these classes (or mixins) to set the width of a column. + @for $n from 1 to $blueprint_liquid_grid_columns + 1 { + .span-#{$n} { + @include span($n); } + div { + &.span-#{$n} { + @include column($n, $n == $blueprint_liquid_grid_columns); } } } + // The last column in a row needs this class (or mixin) or it will end up on the next row. + div.last { + @include last; } + // Add these to a column to append empty cols. + @for $n from 1 to $blueprint_liquid_grid_columns { + .append-#{$n} { + @include append($n); } } + // Add these to a column to prepend empty cols. + @for $n from 1 to $blueprint_liquid_grid_columns { + .prepend-#{$n} { + @include prepend($n); } } + // Use these classes on an element to push it into the + // next column, or to pull it into the previous column. + @for $n from 1 to $blueprint_liquid_grid_columns + 1 { + .pull-#{$n} { + @include pull($n); } } + @for $n from 1 to $blueprint_liquid_grid_columns + 1 { + .push-#{$n} { + @include push($n); } } } + +@mixin container { + min-width: $blueprint_liquid_container_min_width; + width: $blueprint_liquid_container_width; + margin: 0 auto; + @include clearfix; } + +@mixin span($n, $override: false) { + $width: $blueprint_liquid_grid_width * $n + $blueprint_liquid_grid_margin * ($n - 1); + @if $override { + width: $width !important; } + @else { + width: $width; } } + +@mixin last { + margin-right: 0; } + +@mixin column($n, $last: false) { + @include float-left; + overflow: hidden; + @include span($n); + @if $last { + @include last; } + @else { + margin-right: $blueprint_liquid_grid_margin; } } + +@mixin append($n) { + padding-right: ($blueprint_liquid_grid_width + $blueprint_liquid_grid_margin) * $n; } + +@mixin prepend($n) { + padding-left: ($blueprint_liquid_grid_width + $blueprint_liquid_grid_margin) * $n; } + +@mixin pull($n, $last: false) { + margin-left: $blueprint_liquid_grid_push_pull * $n; } + +@mixin push($n) { + @include float-right; + margin: { + top: 0; + left: $blueprint_liquid_grid_margin; + right: $blueprint_liquid_grid_push_pull * $n; + bottom: 0; }; } + +@mixin border { + border-right: 1px solid #eeeeee; } + +@mixin colborder { + padding-right: $blueprint_liquid_grid_margin * 2; + margin-right: $blueprint_liquid_grid_margin * 2; + @include border; } + +@mixin colruler { + background: #dddddd; + color: #dddddd; + clear: both; + width: 100%; + height: 0.083em; + margin: 0; + margin-left: $blueprint_liquid_grid_margin * 2; + margin-right: $blueprint_liquid_grid_margin * 2; + border: none; } + +@mixin colspacer { + @include colruler; + background: white; + color: white; } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_print.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_print.scss new file mode 100644 index 000000000..9dd020e72 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_print.scss @@ -0,0 +1,93 @@ +@import "typography"; +@import "compass/utilities/general/float"; + +// Usage examples: +// As a top-level mixin, apply to any page that includes the stylesheet: +//
    +// +blueprint-print
    +// 
    +// Scoped by a presentational class: +//
    +// body.blueprint
    +//  +blueprint-print(true)
    +// 
    +// Scoped by semantic selectors: +//
    +// body#page-1, body#page-2, body.a-special-page-type
    +//   +blueprint-print(true)
    +// 
    +// Deprecated: +// You can pass the body selector as the first argument when used as a top-level mixin +//
    +// +blueprint-print("body#page-1, body#page-2, body.a-special-page-type")
    +// 
    +@mixin blueprint-print($body_selector: body) { + @if $body_selector == true { + @include blueprint-print-body; + @include blueprint-print-defaults; } + @else { + #{$body_selector} { + @include blueprint-print-body; + @if $body_selector != "body" { + @warn "[DEPRECATED] To specify a the selector \"#{$body_selector}\" to +blueprint-print, pass true as the first argument and mix it into #{$body_selector}."; + @include blueprint-print-defaults; } } + @if $body_selector == "body" { + @include blueprint-print-defaults; } } } + +// This style is in blueprint, but I think it's annoying and it doesn't work in all browsers. +// Feel free to mix it into anchors where you want it. +@mixin blueprint-show-link-urls { + &:after { + content: " (" attr(href) ")"; + font-size: 90%; } } + +@mixin blueprint-print-body { + line-height: 1.5; + font-family: $blueprint_font_family; + color: black; + background: none; + font-size: 10pt; } + +@mixin blueprint-print-defaults { + .container { + background: none; } + hr { + background: #cccccc; + color: #cccccc; + width: 100%; + height: 2px; + margin: 2em 0; + padding: 0; + border: none; + &.space { + background: white; + color: white; } } + h1, h2, h3, h4, h5, h6 { + font-family: $blueprint_font_family; } + code { + font: { + size: 0.9em; + family: $blueprint_fixed_font_family; }; } + a { + img { + border: none; } + &:link, + &:visited { + background: transparent; + font-weight: 700; + text-decoration: underline; } } + p img.top { + margin-top: 0; } + blockquote { + margin: 1.5em; + padding: 1em; + font-style: italic; + font-size: 0.9em; } + .small { + font-size: 0.9em; } + .large { + font-size: 1.1em; } + .quiet { + color: #999999; } + .hide { + display: none; } } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_reset.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_reset.scss new file mode 100644 index 000000000..934a63ea8 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_reset.scss @@ -0,0 +1,3 @@ +@import "reset/utilities"; + +@include blueprint-global-reset; \ No newline at end of file diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.scss new file mode 100644 index 000000000..4cf281d60 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.scss @@ -0,0 +1,133 @@ +@import "grid"; +@import "compass/utilities/general/float"; + +// Main layout grid, override these constants to build your grid and container sizes. +$blueprint_grid_columns: 24 !default; + +$blueprint_grid_width: 30px !default; + +$blueprint_grid_margin: 10px !default; + +$blueprint_grid_outer_width: $blueprint_grid_width + $blueprint_grid_margin; + +$blueprint_container_size: $blueprint_grid_outer_width * $blueprint_grid_columns - $blueprint_grid_margin; + +// Columns +// Note: If you use this mixin without the class and want to support ie6 +// you must set text-align left on your container element in an IE stylesheet. +@mixin container { + width: $blueprint_container_size; + margin: 0 auto; + direction: rtl; + @include clearfix; } + +// The last column in a row needs this mixin or it will end up on the next row. +// TODO add this to span mixin when we have optional arguments +@mixin last { + margin-left: 0; } + +@mixin column-base($last: false) { + @include float-right; + @if $last { + @include last; } + @else { + margin-left: $blueprint_grid_margin; } + text-align: right; + * html & { + overflow-x: hidden; } } + +// Mixin to a column to append n empty cols. +@mixin append($n) { + padding-left: $blueprint_grid_outer_width * $n; } + +// Mixin to a column to prepend n empty cols. +@mixin prepend($n) { + padding-right: $blueprint_grid_outer_width * $n; } + +// mixin to a column to move it n columns to the left +@mixin pull($n, $last: false) { + position: relative; + @if $last { + margin-right: -$blueprint_grid_outer_width * $n + $blueprint_grid_margin; } + @else { + margin-right: -$blueprint_grid_outer_width * $n; } } + +// mixin to a column to push it n columns to the right +@mixin push($n) { + @include float-right; + position: relative; + margin: { + top: 0; + left: -$blueprint_grid_outer_width * $n; + bottom: 1.5em; + right: $blueprint_grid_outer_width * $n; }; } + +// Border on left hand side of a column. +@mixin border { + padding-left: $blueprint_grid_margin / 2 - 1; + margin-left: $blueprint_grid_margin / 2; + border-left: 1px solid #eeeeee; } + +// Border with more whitespace, spans one column. +@mixin colborder { + padding-left: ($blueprint_grid_width - 2 * $blueprint_grid_margin - 1) / 2; + margin-left: ($blueprint_grid_width - 2 * $blueprint_grid_margin) / 2; + border-left: 1px solid #eeeeee; } + +// Usage examples: +// As a top-level mixin, apply to any page that includes the stylesheet: +//
    +// +rtl-typography
    +// 
    +// +// Scoped by a presentational class: +//
    +// body.blueprint
    +//  +rtl-typography(true)
    +// 
    +// +// Scoped by semantic selectors: +//
    +// body#page-1, body#page-2, body.a-special-page-type
    +//   +rtl-typography(true)
    +// 
    +// +// **Deprecated**: +// You can pass the body selector as the first argument when used as a top-level mixin +//
    +// +rtl-typography("body#page-1, body#page-2, body.a-special-page-type")
    +// 
    +@mixin rtl-typography($body_selector: body) { + @if $body_selector == true { + html & { + font-family: Arial, sans-serif; } + @include rtl-typography-defaults; } + @else { + html #{$body_selector} { + font-family: Arial, sans-serif; + @if $body_selector != "body" { + @warn "[DEPRECATED] To specify a the selector \"#{$body_selector}\" to +rtl-typography, pass true as the first argument and mix it into #{$body_selector}."; + @include rtl-typography-defaults; } } + @if $body_selector == "body" { + body { + @include rtl-typography-defaults; } } } } + +@mixin rtl-typography-defaults { + h1, h2, h3, h4, h5, h6 { + font-family: Arial, sans-serif; } + pre, code, tt { + font-family: monospace; } + p { + img.right { + @include float-left; + margin: 1.5em 1.5em 1.5em 0; + padding: 0; } + img.left { + @include float-right; + margin: 1.5em 0 1.5em 1.5em; + padding: 0; } } + dd, ul, ol { + margin-left: 0; + margin-right: 1.5em; } + td, th { + text-align: right; } } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss new file mode 100644 index 000000000..57cf88754 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss @@ -0,0 +1,54 @@ +@import "grid"; +@import "form"; + +// The styles contained here are meant to provide for an attractive experience out of the box +// and are expected to be removed once custom visual design begins. + +// The +blueprint-scaffolding mixin must be mixed into the top level of your stylesheet. +// However, you can customize the body selector if you wish to control the scope +// of this mixin. Examples: +// Apply to any page including the stylesheet: +// +blueprint-scaffolding +// Scoped by a single presentational body class: +// +blueprint-scaffolding("body.blueprint") +// Semantically: +// +blueprint-scaffolding("body#page-1, body#page-2, body.a-special-page-type") +// Alternatively, you can use the +blueprint-scaffolding-body and +blueprint-scaffolding-defaults +// mixins to construct your own semantic style rules. + +@mixin blueprint-scaffolding($body_selector: body) { + @if $body_selector != body { + #{$body_selector} { + @include blueprint-scaffolding-defaults; + } + } @else { + @include blueprint-scaffolding-defaults; + } +} + +// The styles this mixin provides were deprecated in Blueprint 0.9 and is no longer part of the +// main scaffolding, but the mixin is still available if you want to use it. +@mixin blueprint-scaffolding-body { + margin: 1.5em 0; } + +// Mixin +box to create a padded box inside a column. +@mixin box { + padding: 1.5em; + margin-bottom: 1.5em; + background: #e5ecf9; } + +@mixin blueprint-scaffolding-defaults { + .box { + @include box; } + // Border on right hand side of a column. You can comment this out if you don't plan to use it. + div.border { + @include border; } + // Border with more whitespace, spans one column. + div.colborder { + @include colborder; } + hr { + @include colruler; } + hr.space { + @include colspacer; } + form.inline { + @include blueprint-inline-form; } } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_typography.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_typography.scss new file mode 100644 index 000000000..ec095fc86 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_typography.scss @@ -0,0 +1,104 @@ +@import "colors"; +@import "compass/utilities/links/link-colors"; +@import "compass/utilities/general/float"; + +$blueprint-font-family: "Helvetica Neue", Arial, Helvetica, sans-serif !default; + +$blueprint-fixed-font-family: "andale mono", "lucida console", monospace !default; + +$blueprint-font-size: 12px !default; + +// Usage examples: +// As a top-level mixin, apply to any page that includes the stylesheet: +//
    +// +blueprint-typography
    +// 
    +// +// Scoped by a presentational class: +//
    +// body.blueprint
    +//  +blueprint-typography(true)
    +// 
    +// +// Scoped by semantic selectors: +//
    +// body#page-1, body#page-2, body.a-special-page-type
    +//   +blueprint-typography(true)
    +// 
    +// +// **Deprecated**: +// You can pass the body selector as the first argument when used as a top-level mixin +//
    +// +blueprint-typography("body#page-1, body#page-2, body.a-special-page-type")
    +// 
    +@mixin blueprint-typography($body-selector: body) { + @if $body-selector == true { + @include blueprint-typography-body; + @include blueprint-typography-defaults; + } @else { + #{$body-selector} { + @include blueprint-typography-body; + @if $body-selector != body { + @warn "[DEPRECATED] To specify the selector \"#{$body-selector}\" to +blueprint-typography, pass true as the first argument and mix it into #{$body-selector}."; + @include blueprint-typography-defaults; + } + } + @if $body-selector == body { + @include blueprint-typography-defaults; + } + } +} + +@mixin normal-text { font-family: $blueprint-font-family; color: $font-color; } +@mixin fixed-width-text { font: 1em $blueprint-fixed-font-family; line-height: 1.5; } +@mixin header-text { font-weight: normal; color: $header-color; } +@mixin quiet { color: $quiet-color; } +@mixin loud { color: $loud-color; } + +@mixin blueprint-typography-body($font-size: $blueprint-font-size) { + line-height: 1.5; + @include normal-text; + font-size: 100% * $font-size / 16px; +} + +@mixin blueprint-typography-defaults { + #{headers(all)} { @include header-text; + img { margin: 0; } } + h1 { font-size: 3em; line-height: 1; margin-bottom: 0.50em; } + h2 { font-size: 2em; margin-bottom: 0.75em; } + h3 { font-size: 1.5em; line-height: 1; margin-bottom: 1.00em; } + h4 { font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; } + h5 { font-size: 1em; font-weight: bold; margin-bottom: 1.50em; } + h6 { font-size: 1em; font-weight: bold; } + p { margin: 0 0 1.5em; + img.left { @include float-left; margin: 1.5em 1.5em 1.5em 0; padding: 0; } + img.right { @include float-right; margin: 1.5em 0 1.5em 1.5em; padding: 0; } + } + a { text-decoration: underline; @include link-colors($link-color, $link-hover-color, $link-active-color, $link-visited-color, $link-focus-color); } + blockquote { margin: 1.5em; color: $alt_text_color; font-style: italic; } + strong { font-weight: bold; } + em { font-style: italic; } + dfn { font-style: italic; font-weight: bold; } + sup, sub { line-height: 0; } + abbr, acronym { border-bottom: 1px dotted #666666; } + address { margin: 0 0 1.5em; font-style: italic; } + del { color: $alt_text_color; } + pre { margin: 1.5em 0; white-space: pre; } + pre, code, tt { @include fixed-width-text; } + li ul, li ol { margin: 0; } + ul, ol { margin: 0 1.5em 1.5em 0; padding-left: 3.333em; } + ul { list-style-type: disc; } + ol { list-style-type: decimal; } + dl { margin: 0 0 1.5em 0; + dt { font-weight: bold; } } + dd { margin-left: 1.5em; } + table { margin-bottom: 1.4em; width: 100%; } + th { font-weight: bold; } + thead th { background: $blueprint-table-header-color; } + th, td, caption { padding: 4px 10px 4px 5px; } + tr.even td { background: $blueprint-table-stripe-color; } + tfoot { font-style: italic; } + caption { background: $blueprint_background_color; } + .quiet { @include quiet; } + .loud { @include loud; } +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.scss new file mode 100644 index 000000000..12b898709 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.scss @@ -0,0 +1,37 @@ +@import "compass/utilities/text/nowrap"; +@import "compass/utilities/general/clearfix"; + +// Most of these utility classes are not "semantic". If you use them, +// you are mixing your content and presentation. For shame! + +@mixin blueprint-utilities { + // Regular clearing apply to column that should drop below previous ones. + .clear { + clear: both; } + // turn off text wrapping for the element. + .nowrap { + @include nowrap; } + // Apply to an element that has floated children to make the bottom + // of the element fall _below_ the floated children. + .clearfix { + @include clearfix; } + .small { + font-size: 0.8em; + margin-bottom: 1.875em; + line-height: 1.875em; } + .large { + font-size: 1.2em; + line-height: 2.5em; + margin-bottom: 1.25em; } + .first { + margin-left: 0; + padding-left: 0; } + .last { + margin-right: 0; + padding-right: 0; } + .top { + margin-top: 0; + padding-top: 0; } + .bottom { + margin-bottom: 0; + padding-bottom: 0; } } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss new file mode 100644 index 000000000..620d68be4 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss @@ -0,0 +1,58 @@ +// Global reset rules. +// For more specific resets, use the reset mixins provided below +@mixin blueprint-global-reset { + html, body { + @include blueprint-reset; } + html { + font-size: 100.01%; } + @include blueprint-nested-reset; } + +// Reset all elements within some selector scope.To reset the selector itself, +// mixin the appropriate reset mixin for that element type as well. This could be +// useful if you want to style a part of your page in a dramatically different way. +@mixin blueprint-nested-reset { + div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, + pre, a, abbr, acronym, address, code, del, dfn, em, img, + dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { + @include blueprint-reset; } + blockquote, q { + @include blueprint-reset-quotation; } + th, td, caption { + @include blueprint-reset-table-cell; } + table { + @include blueprint-reset-table; } + a img { + border: none; } } + +@mixin blueprint-reset-box-model { + margin: 0; + padding: 0; + border: 0; } + +@mixin blueprint-reset { + @include blueprint-reset-box-model; + font: { + weight: inherit; + style: inherit; + size: 100%; + family: inherit; }; + vertical-align: baseline; } + +@mixin blueprint-reset-quotation { + @include blueprint-reset; + quotes: "" ""; + &:before, + &:after { + content: ""; } } + +@mixin blueprint-reset-table-cell { + @include blueprint-reset; + text-align: left; + font-weight: normal; + vertical-align: middle; } + +@mixin blueprint-reset-table { + @include blueprint-reset; + border-collapse: separate; + border-spacing: 0; + vertical-align: middle; } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/grid.png b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/grid.png new file mode 100644 index 000000000..129d4a29f Binary files /dev/null and b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/grid.png differ diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/ie.sass b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/ie.sass new file mode 100644 index 000000000..9423f8035 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/ie.sass @@ -0,0 +1,4 @@ +@import blueprint + +// Generate the blueprint IE-specific customizations: ++blueprint-ie diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/manifest.rb b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/manifest.rb new file mode 100644 index 000000000..8ab1251c3 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/manifest.rb @@ -0,0 +1,30 @@ +description "A basic blueprint install that mimics the actual blueprint css." + +stylesheet 'screen.sass', :media => 'screen, projection' +stylesheet 'partials/_base.sass' +stylesheet 'print.sass', :media => 'print' +stylesheet 'ie.sass', :media => 'screen, projection', :condition => "lt IE 8" + +image 'grid.png' + +help %Q{ +Please see the blueprint website for documentation on how blueprint works: + + http://blueprintcss.org/ + +Docs on the compass port of blueprint can be found on the wiki: + + http://wiki.github.com/chriseppstein/compass/blueprint-documentation +} + +welcome_message %Q{ +Please see the blueprint website for documentation on how blueprint works: + + http://blueprintcss.org/ + +Docs on the compass port of blueprint can be found on the wiki: + + http://wiki.github.com/chriseppstein/compass/blueprint-documentation + +To get started, edit the screen.sass file and read the comments and code there. +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/partials/_base.sass b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/partials/_base.sass new file mode 100644 index 000000000..cb437bf81 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/partials/_base.sass @@ -0,0 +1,10 @@ +// Here is where you can define your constants for your application and to configure the blueprint framework. +// Feel free to delete these if you want keep the defaults: + +$blueprint-grid-columns : 24 +$blueprint-grid-width : 30px +$blueprint-grid-margin : 10px + +// If you change your grid column dimensions +// you can make a new grid background image from the command line like this: +// compass grid-img 30+10x16 diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/print.sass b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/print.sass new file mode 100644 index 000000000..e92c4631b --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/print.sass @@ -0,0 +1,4 @@ +@import blueprint + +// Generate the blueprint print styles: ++blueprint-print diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/screen.sass b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/screen.sass new file mode 100644 index 000000000..aa724869f --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/screen.sass @@ -0,0 +1,12 @@ +// This import applies a global reset to any page that imports this stylesheet. +@import blueprint/reset +// To configure blueprint, edit the partials/_base.sass file. +@import partials/base +// Import all the default blueprint modules so that we can access their mixins. +@import blueprint +// Import the non-default scaffolding module. +@import blueprint/scaffolding + +// Generate the blueprint framework according to your configuration: ++blueprint ++blueprint-scaffolding diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons.sass b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons.sass new file mode 100644 index 000000000..b03736a39 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons.sass @@ -0,0 +1,49 @@ +@import compass/utilities/general/float +@import blueprint/buttons + +// + Use the following HTML code to place the buttons on your site: + + + + + Change Password + + + + Cancel + + +a.button + // you can pass "left" or "right" to +anchor-button to float it in that direction + // or you can pass no argument to leave it inline-block (cross browser safe!) within + // the flow of your page. + +anchor-button(left) + // All the button color mixins take 4 optional arguments: + // font color, background color, border color, border highlight color + // the first three default to constants set in blueprint/buttons.sass + // the last one defaults to a shade lighter than the border color. + +button-colors + +button-hover-colors + +button-active-colors + +button + // The +button-button mixin is just like the +anchor-button mixin, but for