Revision 7ee5fab8
Von Sven Schöling vor mehr als 10 Jahren hinzugefügt
SL/Form.pm | ||
---|---|---|
# standard css for all
|
||
# this should gradually move to the layouts that need it
|
||
$layout->use_stylesheet("$_.css") for qw(
|
||
main menu list_accounts jquery.autocomplete
|
||
main menu common list_accounts jquery.autocomplete
|
||
jquery.multiselect2side
|
||
ui-lightness/jquery-ui
|
||
jquery-ui.custom
|
bin/mozilla/rp.pl | ||
---|---|---|
|
||
$form->{title} = $locale->text('BWA');
|
||
|
||
$::request->layout->add_stylesheets('bwa.css');
|
||
$form->header;
|
||
print $form->parse_html_template('rp/bwa');
|
||
|
css/README.stylesheets | ||
---|---|---|
2012-03-02 - Stylesheet normalization
|
||
Some notes about stylesheets:
|
||
|
||
After this, the stylesheets follow these conventions:
|
||
* NOT every directory in css/ is considered a style to be chosen. The available
|
||
stylesheets are hardcoded in at least 3 places:
|
||
- SL/Auth.pm:read_user
|
||
- SL/Controller/Admin.pm:init_stylesheets
|
||
- bin/mozilla/am.pl:config
|
||
yes it sucks. change it, if you like.
|
||
|
||
* Every directory in css/ is considered a style to be chosen.
|
||
* lx-office-erp is used as the fallback style if no style was found or the
|
||
style chosen was invalid.
|
||
* Missing stylesheets for the other styles have been
|
||
linked from lx-office-erp, so that they will used like before.
|
||
* If you edit a file, make sure it's not a symlink.
|
||
* The previous named stylesheets are now main.css in their respective directories.
|
||
* menuv3 and menuv4 are now distict so that it's possible to include both
|
||
without overriding each other.
|
||
* All relative image links needed to get bumped an additional ../
|
||
* If you add another style, be sure to test tabs, calendars, all menus,
|
||
autocompletion, charts, and multiselect.
|
||
* If a stylesheet is requests from controller code, it is searched in this order:
|
||
- css/<stylesheet_of_current_user>/<path>
|
||
- css/<path>
|
||
- <path>
|
||
|
||
so common libraries can be put higher here, to be included by any stylesheet
|
||
|
||
* 'kivitendo' is used as the fallback style if no style was found or the style
|
||
chosen was invalid.
|
||
|
||
* Pay attention to the position of relative image urls. Most should not be
|
||
included in css anyway but should use the generated icon maps. For the rest,
|
||
a couple of ../ may be needed to get the right path.
|
||
|
||
* If you edit another styles, these are things that are known to get broken.
|
||
Be sure to test them thoroughly:
|
||
- tabs
|
||
- calendars
|
||
- all menus
|
||
- autocompletion (parts/customers)
|
||
- charts of accounts
|
||
- multiselect
|
||
- ckeeditor
|
||
- jquery-ui widgets (i hate those things)
|
css/background_jobs.css | ||
---|---|---|
/* Jobverwaltung */
|
||
.background_job_list tbody pre,
|
||
.background_job_details tbody pre {
|
||
margin: 0px;
|
||
}
|
||
|
||
.background_job_details tbody th {
|
||
text-align: right;
|
||
vertical-align: top;
|
||
}
|
||
|
||
.background_job_details tbody td {
|
||
vertical-align: top;
|
||
}
|
css/bwa.css | ||
---|---|---|
/* Allgemeine Schriftdefinition */
|
||
th,td {
|
||
font-family: Arial, Verdana, Helvetica, Sans-serif;
|
||
font-size:small;
|
||
}
|
||
|
||
@page {
|
||
size: landscape;
|
||
margin: 0.5cm;
|
||
}
|
||
|
||
/* Definition Tabellenueberschrift */
|
||
|
||
.left { text-align:left; }
|
||
.center { text-align:center; }
|
||
.right { text-align:right; }
|
||
|
||
tr.headline { border:0; }
|
||
tr.headline td { border:0; }
|
||
h3 { font-size:120%; }
|
||
h3 { font-size:100%; }
|
||
|
||
/* Tabellenkopf */
|
||
th {
|
||
font-weight: bold;
|
||
border-bottom: solid thin black;
|
||
padding:0 10px;
|
||
text-align:right;
|
||
}
|
||
|
||
th.left { border-left: solid thin black; }
|
||
th.right { border-right: solid thin black; }
|
||
|
||
.querkopf th.right { text-align:center; }
|
||
.querkopf th {
|
||
border-top: solid thin black;
|
||
border-bottom:0;
|
||
}
|
||
|
||
/* Tabelleninhalt */
|
||
td {
|
||
text-align:right;
|
||
padding:0 0.5em;
|
||
}
|
||
td.left { border-left: solid thin black; }
|
||
td.right { border-right: solid thin black; }
|
||
|
||
|
||
/* jede zweite Zeile grau hinterlegen */
|
||
tr.grey {
|
||
background:#f0f0f0;
|
||
}
|
||
|
||
/* letzte Zeile in der Tabelle */
|
||
#last td{ border-bottom: solid thin black; }
|
||
|
||
/* Zwischensumme/-ueberschriften */
|
||
tr.subtotal td { font-weight: bold; }
|
||
|
||
/* Fusszeile unter der Tabelle */
|
||
td.footer {
|
||
text-align:right;
|
||
font-size:smaller;
|
||
}
|
css/common.css | ||
---|---|---|
|
||
/* class for numeric columns in tables */
|
||
.numeric { text-align: right }
|
||
|
||
/* various oneshot decoration for legacy purpose. dont use */
|
||
.small-text { font-size: 70% }
|
||
.bold { font-weight: bold }
|
||
|
||
.float-left { float: left }
|
||
.float-right { float: right }
|
||
|
||
/* quirk to force certain constructs to block context */
|
||
.block-context { overflow: hidden }
|
||
|
||
/* position */
|
||
.position-relative { position: relative }
|
||
.position-absolute { position: absolute }
|
||
|
||
|
||
/* media stuff */
|
||
@media screen { .noscreen { display: none } }
|
||
@media print { .noprint { display: none } }
|
||
@media handheld { .nomobile { display: none } }
|
||
|
||
body { behavior:url("csshover.htc") }
|
||
|
||
/* class to fix container around floats */
|
||
.clearfix:after {
|
||
clear:both;
|
||
content:".";
|
||
display:block;
|
||
font-size:0;
|
||
height:0;
|
||
visibility:hidden;
|
||
}
|
||
|
||
/* CTI */
|
||
a.cti_call_action {
|
||
display: inline-block;
|
||
padding-left: 18px;
|
||
height: 16px;
|
||
position: relative;
|
||
top: 2px;
|
||
vertical-align: center;
|
||
background-image: url(../../image/icons/16x16/phone.png);
|
||
background-repeat: no-repeat;
|
||
}
|
||
|
||
/* the cvars table in the 2. row */
|
||
.row2-cvars-table tr { vertical-align: top }
|
||
.row2-cvars-table th { text-align: right; padding-left: 15px; padding-right: 0 }
|
||
.row2-cvars-table td, .row2-cvars-table th { padding-top: 10px }
|
css/csshover.htc | ||
---|---|---|
<attach event="ondocumentready" handler="parseStylesheets" />
|
||
<script>
|
||
/**
|
||
* Whatever:hover - V2.02.060206 - hover, active & focus
|
||
* ------------------------------------------------------------
|
||
* (c) 2005 - Peter Nederlof
|
||
* Peterned - http://www.xs4all.nl/~peterned/
|
||
* License - http://creativecommons.org/licenses/LGPL/2.1/
|
||
*
|
||
* Whatever:hover is free software; you can redistribute it and/or
|
||
* modify it under the terms of the GNU Lesser General Public
|
||
* License as published by the Free Software Foundation; either
|
||
* version 2.1 of the License, or (at your option) any later version.
|
||
*
|
||
* Whatever:hover is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
* Lesser General Public License for more details.
|
||
*
|
||
* Credits and thanks to:
|
||
* Arnoud Berendsen, Martin Reurings, Robert Hanson
|
||
*
|
||
* howto: body { behavior:url("csshover.htc"); }
|
||
* ------------------------------------------------------------
|
||
*/
|
||
|
||
var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,
|
||
currentSheet, doc = window.document, hoverEvents = [], activators = {
|
||
onhover:{on:'onmouseover', off:'onmouseout'},
|
||
onactive:{on:'onmousedown', off:'onmouseup'},
|
||
onunknown:{on:'onfocus', off:'onblur'}
|
||
}
|
||
|
||
function parseStylesheets() {
|
||
if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
|
||
window.attachEvent('onunload', unhookHoverEvents);
|
||
var sheets = doc.styleSheets, l = sheets.length;
|
||
for(var i=0; i<l; i++)
|
||
parseStylesheet(sheets[i]);
|
||
}
|
||
function parseStylesheet(sheet) {
|
||
if(sheet.imports) {
|
||
try {
|
||
var imports = sheet.imports, l = imports.length;
|
||
for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
|
||
} catch(securityException){}
|
||
}
|
||
|
||
try {
|
||
var rules = (currentSheet = sheet).rules, l = rules.length;
|
||
for(var j=0; j<l; j++) parseCSSRule(rules[j]);
|
||
} catch(securityException){}
|
||
}
|
||
|
||
function parseCSSRule(rule) {
|
||
var select = rule.selectorText, style = rule.style.cssText;
|
||
if(!csshoverReg.test(select) || !style) return;
|
||
|
||
var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
|
||
var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
|
||
var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];
|
||
var affected = select.replace(/:(hover|active|unknown).*$/, '');
|
||
var elements = getElementsBySelect(affected);
|
||
if(elements.length == 0) return;
|
||
|
||
currentSheet.addRule(newSelect, style);
|
||
for(var i=0; i<elements.length; i++)
|
||
new HoverElement(elements[i], className, activators[pseudo]);
|
||
}
|
||
|
||
function HoverElement(node, className, events) {
|
||
if(!node.hovers) node.hovers = {};
|
||
if(node.hovers[className]) return;
|
||
node.hovers[className] = true;
|
||
hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
|
||
hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
|
||
}
|
||
function hookHoverEvent(node, type, handler) {
|
||
node.attachEvent(type, handler);
|
||
hoverEvents[hoverEvents.length] = {
|
||
node:node, type:type, handler:handler
|
||
};
|
||
}
|
||
|
||
function unhookHoverEvents() {
|
||
for(var e,i=0; i<hoverEvents.length; i++) {
|
||
e = hoverEvents[i];
|
||
e.node.detachEvent(e.type, e.handler);
|
||
}
|
||
}
|
||
|
||
function getElementsBySelect(rule) {
|
||
var parts, nodes = [doc];
|
||
parts = rule.split(' ');
|
||
for(var i=0; i<parts.length; i++) {
|
||
nodes = getSelectedNodes(parts[i], nodes);
|
||
} return nodes;
|
||
}
|
||
function getSelectedNodes(select, elements) {
|
||
var result, node, nodes = [];
|
||
var identify = (/\#([a-z0-9_-]+)/i).exec(select);
|
||
if(identify) {
|
||
var element = doc.getElementById(identify[1]);
|
||
return element? [element]:nodes;
|
||
}
|
||
|
||
var classname = (/\.([a-z0-9_-]+)/i).exec(select);
|
||
var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
|
||
var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
|
||
for(var i=0; i<elements.length; i++) {
|
||
result = tagName? elements[i].all.tags(tagName):elements[i].all;
|
||
for(var j=0; j<result.length; j++) {
|
||
node = result[j];
|
||
if(classReg && !classReg.test(node.className)) continue;
|
||
nodes[nodes.length] = node;
|
||
}
|
||
}
|
||
|
||
return nodes;
|
||
}
|
||
</script>
|
css/jquery.autocomplete.css | ||
---|---|---|
.ac_results {
|
||
padding: 0px;
|
||
border: 1px solid black;
|
||
background-color: white;
|
||
overflow: hidden;
|
||
z-index: 99999;
|
||
}
|
||
|
||
.ac_results ul {
|
||
width: 100%;
|
||
list-style-position: outside;
|
||
list-style: none;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.ac_results li {
|
||
margin: 0px;
|
||
padding: 2px 5px;
|
||
cursor: default;
|
||
display: block;
|
||
/*
|
||
if width will be 100% horizontal scrollbar will apear
|
||
when scroll mode will be used
|
||
*/
|
||
/*width: 100%;*/
|
||
font: menu;
|
||
font-size: 12px;
|
||
/*
|
||
it is very important, if line-height not setted or setted
|
||
in relative units scroll will be broken in firefox
|
||
*/
|
||
line-height: 16px;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.ac_loading {
|
||
background: white url('indicator.gif') right center no-repeat;
|
||
}
|
||
|
||
.ac_odd {
|
||
background-color: #eee;
|
||
}
|
||
|
||
.ac_over {
|
||
background-color: #0A246A;
|
||
color: white;
|
||
}
|
css/jquery.multiselect2side.css | ||
---|---|---|
/* multiselect2side plugin */
|
||
.ms2side__div {
|
||
clear: left;
|
||
width: 100%;
|
||
padding: 1px;
|
||
float: left;
|
||
background : url('') repeat-x; /* HACK FOR CHROME */
|
||
}
|
||
|
||
.ms2side__select {
|
||
float: left;
|
||
}
|
||
|
||
.ms2side__header {
|
||
color: blue;
|
||
background-color: #EEEEFF;
|
||
}
|
||
|
||
.ms2side__options, .ms2side__updown {
|
||
float: left;
|
||
font-size: 10pt;
|
||
margin: 0;
|
||
padding: 0 8px;
|
||
width: 40px;
|
||
color: black;
|
||
text-align: center;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.ms2side__updown {
|
||
font-size: 9pt;
|
||
}
|
||
|
||
.ms2side__options p, .ms2side__updown p {
|
||
margin: 2px 0;
|
||
padding: 0;
|
||
cursor: pointer;
|
||
border: 1px solid black;
|
||
}
|
||
|
||
.ms2side__options p.ms2side_hover, .ms2side__updown p.ms2side_hover {
|
||
background-color: #F0F0FF;
|
||
border-color: #0000FF;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.ms2side__options p.ms2side__hide, .ms2side__updown p.ms2side__hide {
|
||
cursor: default;
|
||
color: grey;
|
||
border: 1px solid grey;
|
||
background-color: #F0F0F0;
|
||
}
|
||
|
||
.ms2side__div select {
|
||
width: 400px;
|
||
float: left;
|
||
}
|
css/kivitendo/background_jobs.css | ||
---|---|---|
../lx-office-erp/background_jobs.css
|
css/kivitendo/bwa.css | ||
---|---|---|
/* Allgemeine Schriftdefinition */
|
||
th,td {
|
||
font-family: Arial, Verdana, Helvetica, Sans-serif;
|
||
font-size:small;
|
||
}
|
||
|
||
@page {
|
||
size: landscape;
|
||
margin: 0.5cm;
|
||
}
|
||
|
||
/* Definition Tabellenueberschrift */
|
||
|
||
.left { text-align:left; }
|
||
.center { text-align:center; }
|
||
.right { text-align:right; }
|
||
|
||
tr.headline { border:0; }
|
||
tr.headline td { border:0; }
|
||
h3 { font-size:120%; }
|
||
h3 { font-size:100%; }
|
||
|
||
/* Tabellenkopf */
|
||
th {
|
||
font-weight: bold;
|
||
border-bottom: solid thin black;
|
||
padding:0 10px;
|
||
text-align:right;
|
||
}
|
||
|
||
th.left { border-left: solid thin black; }
|
||
th.right { border-right: solid thin black; }
|
||
|
||
.querkopf th.right { text-align:center; }
|
||
.querkopf th {
|
||
border-top: solid thin black;
|
||
border-bottom:0;
|
||
}
|
||
|
||
/* Tabelleninhalt */
|
||
td {
|
||
text-align:right;
|
||
padding:0 0.5em;
|
||
}
|
||
td.left { border-left: solid thin black; }
|
||
td.right { border-right: solid thin black; }
|
||
|
||
|
||
/* jede zweite Zeile grau hinterlegen */
|
||
tr.grey {
|
||
background:#f0f0f0;
|
||
}
|
||
|
||
/* letzte Zeile in der Tabelle */
|
||
#last td{ border-bottom: solid thin black; }
|
||
|
||
/* Zwischensumme/-ueberschriften */
|
||
tr.subtotal td { font-weight: bold; }
|
||
|
||
/* Fusszeile unter der Tabelle */
|
||
td.footer {
|
||
text-align:right;
|
||
font-size:smaller;
|
||
}
|
css/kivitendo/csshover.htc | ||
---|---|---|
<attach event="ondocumentready" handler="parseStylesheets" />
|
||
<script>
|
||
/**
|
||
* Whatever:hover - V2.02.060206 - hover, active & focus
|
||
* ------------------------------------------------------------
|
||
* (c) 2005 - Peter Nederlof
|
||
* Peterned - http://www.xs4all.nl/~peterned/
|
||
* License - http://creativecommons.org/licenses/LGPL/2.1/
|
||
*
|
||
* Whatever:hover is free software; you can redistribute it and/or
|
||
* modify it under the terms of the GNU Lesser General Public
|
||
* License as published by the Free Software Foundation; either
|
||
* version 2.1 of the License, or (at your option) any later version.
|
||
*
|
||
* Whatever:hover is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
* Lesser General Public License for more details.
|
||
*
|
||
* Credits and thanks to:
|
||
* Arnoud Berendsen, Martin Reurings, Robert Hanson
|
||
*
|
||
* howto: body { behavior:url("csshover.htc"); }
|
||
* ------------------------------------------------------------
|
||
*/
|
||
|
||
var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,
|
||
currentSheet, doc = window.document, hoverEvents = [], activators = {
|
||
onhover:{on:'onmouseover', off:'onmouseout'},
|
||
onactive:{on:'onmousedown', off:'onmouseup'},
|
||
onunknown:{on:'onfocus', off:'onblur'}
|
||
}
|
||
|
||
function parseStylesheets() {
|
||
if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
|
||
window.attachEvent('onunload', unhookHoverEvents);
|
||
var sheets = doc.styleSheets, l = sheets.length;
|
||
for(var i=0; i<l; i++)
|
||
parseStylesheet(sheets[i]);
|
||
}
|
||
function parseStylesheet(sheet) {
|
||
if(sheet.imports) {
|
||
try {
|
||
var imports = sheet.imports, l = imports.length;
|
||
for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
|
||
} catch(securityException){}
|
||
}
|
||
|
||
try {
|
||
var rules = (currentSheet = sheet).rules, l = rules.length;
|
||
for(var j=0; j<l; j++) parseCSSRule(rules[j]);
|
||
} catch(securityException){}
|
||
}
|
||
|
||
function parseCSSRule(rule) {
|
||
var select = rule.selectorText, style = rule.style.cssText;
|
||
if(!csshoverReg.test(select) || !style) return;
|
||
|
||
var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
|
||
var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
|
||
var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];
|
||
var affected = select.replace(/:(hover|active|unknown).*$/, '');
|
||
var elements = getElementsBySelect(affected);
|
||
if(elements.length == 0) return;
|
||
|
||
currentSheet.addRule(newSelect, style);
|
||
for(var i=0; i<elements.length; i++)
|
||
new HoverElement(elements[i], className, activators[pseudo]);
|
||
}
|
||
|
||
function HoverElement(node, className, events) {
|
||
if(!node.hovers) node.hovers = {};
|
||
if(node.hovers[className]) return;
|
||
node.hovers[className] = true;
|
||
hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
|
||
hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
|
||
}
|
||
function hookHoverEvent(node, type, handler) {
|
||
node.attachEvent(type, handler);
|
||
hoverEvents[hoverEvents.length] = {
|
||
node:node, type:type, handler:handler
|
||
};
|
||
}
|
||
|
||
function unhookHoverEvents() {
|
||
for(var e,i=0; i<hoverEvents.length; i++) {
|
||
e = hoverEvents[i];
|
||
e.node.detachEvent(e.type, e.handler);
|
||
}
|
||
}
|
||
|
||
function getElementsBySelect(rule) {
|
||
var parts, nodes = [doc];
|
||
parts = rule.split(' ');
|
||
for(var i=0; i<parts.length; i++) {
|
||
nodes = getSelectedNodes(parts[i], nodes);
|
||
} return nodes;
|
||
}
|
||
function getSelectedNodes(select, elements) {
|
||
var result, node, nodes = [];
|
||
var identify = (/\#([a-z0-9_-]+)/i).exec(select);
|
||
if(identify) {
|
||
var element = doc.getElementById(identify[1]);
|
||
return element? [element]:nodes;
|
||
}
|
||
|
||
var classname = (/\.([a-z0-9_-]+)/i).exec(select);
|
||
var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
|
||
var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
|
||
for(var i=0; i<elements.length; i++) {
|
||
result = tagName? elements[i].all.tags(tagName):elements[i].all;
|
||
for(var j=0; j<result.length; j++) {
|
||
node = result[j];
|
||
if(classReg && !classReg.test(node.className)) continue;
|
||
nodes[nodes.length] = node;
|
||
}
|
||
}
|
||
|
||
return nodes;
|
||
}
|
||
</script>
|
css/kivitendo/jquery.autocomplete.css | ||
---|---|---|
../lx-office-erp/jquery.autocomplete.css
|
css/kivitendo/jquery.multiselect2side.css | ||
---|---|---|
../lx-office-erp/jquery.multiselect2side.css
|
css/kivitendo/main.css | ||
---|---|---|
color: black;
|
||
font-weight: bolder;
|
||
}
|
||
/* media stuff */
|
||
@media screen {
|
||
.noscreen {
|
||
/* items with this class won't display */
|
||
display: none;
|
||
}
|
||
}
|
||
@media print {
|
||
.noprint {
|
||
/* items with this class won't print */
|
||
display: none;
|
||
}
|
||
}
|
||
.filecontent {
|
||
border: 1px solid blue;
|
||
padding-left: 2px;
|
||
... | ... | |
.unbalanced_ledger {
|
||
background-color: #ffa0a0;
|
||
}
|
||
.clearfix:after {
|
||
clear: both;
|
||
content: ".";
|
||
display: block;
|
||
height: 0;
|
||
visibility: hidden;
|
||
}
|
||
.flash_message_error {
|
||
background-color: #FFD6D6;
|
||
border: 1px solid #AE0014;
|
||
... | ... | |
margin-right: 6px;
|
||
}
|
||
|
||
.small-text {
|
||
font-size: 0.75em;
|
||
}
|
||
|
||
.float-left {
|
||
float: left;
|
||
}
|
||
.float-right {
|
||
float: right;
|
||
}
|
||
|
||
.block-context {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.position-relative {
|
||
position: relative;
|
||
}
|
||
|
||
.position-absolute {
|
||
position: absolute;
|
||
}
|
||
|
||
.part_picker {
|
||
padding-right: 16px;
|
||
}
|
||
|
||
.customer-vendor-picker-undefined,
|
||
.partpicker-undefined {
|
||
color: red;
|
||
... | ... | |
span.toggle_selected {
|
||
font-weight: bold;
|
||
}
|
||
|
||
/* CTI */
|
||
a.cti_call_action {
|
||
display: inline-block;
|
||
padding-left: 18px;
|
||
height: 16px;
|
||
position: relative;
|
||
top: 2px;
|
||
vertical-align: center;
|
||
background-image: url(../../image/icons/16x16/phone.png);
|
||
background-repeat: no-repeat;
|
||
}
|
||
|
||
/* the cvars table in the 2. row */
|
||
.row2-cvars-table tr {vertical-align: top;}
|
||
.row2-cvars-table th {text-align: right; padding-left: 15px; padding-right: 0;}
|
||
.row2-cvars-table td, .row2-cvars-table th {padding-top: 10px;}
|
css/lx-office-erp/background_jobs.css | ||
---|---|---|
/* Jobverwaltung */
|
||
.background_job_list tbody pre,
|
||
.background_job_details tbody pre {
|
||
margin: 0px;
|
||
}
|
||
|
||
.background_job_details tbody th {
|
||
text-align: right;
|
||
vertical-align: top;
|
||
}
|
||
|
||
.background_job_details tbody td {
|
||
vertical-align: top;
|
||
}
|
css/lx-office-erp/csshover.htc | ||
---|---|---|
<attach event="ondocumentready" handler="parseStylesheets" />
|
||
<script>
|
||
/**
|
||
* Whatever:hover - V2.02.060206 - hover, active & focus
|
||
* ------------------------------------------------------------
|
||
* (c) 2005 - Peter Nederlof
|
||
* Peterned - http://www.xs4all.nl/~peterned/
|
||
* License - http://creativecommons.org/licenses/LGPL/2.1/
|
||
*
|
||
* Whatever:hover is free software; you can redistribute it and/or
|
||
* modify it under the terms of the GNU Lesser General Public
|
||
* License as published by the Free Software Foundation; either
|
||
* version 2.1 of the License, or (at your option) any later version.
|
||
*
|
||
* Whatever:hover is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
* Lesser General Public License for more details.
|
||
*
|
||
* Credits and thanks to:
|
||
* Arnoud Berendsen, Martin Reurings, Robert Hanson
|
||
*
|
||
* howto: body { behavior:url("csshover.htc"); }
|
||
* ------------------------------------------------------------
|
||
*/
|
||
|
||
var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,
|
||
currentSheet, doc = window.document, hoverEvents = [], activators = {
|
||
onhover:{on:'onmouseover', off:'onmouseout'},
|
||
onactive:{on:'onmousedown', off:'onmouseup'},
|
||
onunknown:{on:'onfocus', off:'onblur'}
|
||
}
|
||
|
||
function parseStylesheets() {
|
||
if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
|
||
window.attachEvent('onunload', unhookHoverEvents);
|
||
var sheets = doc.styleSheets, l = sheets.length;
|
||
for(var i=0; i<l; i++)
|
||
parseStylesheet(sheets[i]);
|
||
}
|
||
function parseStylesheet(sheet) {
|
||
if(sheet.imports) {
|
||
try {
|
||
var imports = sheet.imports, l = imports.length;
|
||
for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
|
||
} catch(securityException){}
|
||
}
|
||
|
||
try {
|
||
var rules = (currentSheet = sheet).rules, l = rules.length;
|
||
for(var j=0; j<l; j++) parseCSSRule(rules[j]);
|
||
} catch(securityException){}
|
||
}
|
||
|
||
function parseCSSRule(rule) {
|
||
var select = rule.selectorText, style = rule.style.cssText;
|
||
if(!csshoverReg.test(select) || !style) return;
|
||
|
||
var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
|
||
var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
|
||
var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];
|
||
var affected = select.replace(/:(hover|active|unknown).*$/, '');
|
||
var elements = getElementsBySelect(affected);
|
||
if(elements.length == 0) return;
|
||
|
||
currentSheet.addRule(newSelect, style);
|
||
for(var i=0; i<elements.length; i++)
|
||
new HoverElement(elements[i], className, activators[pseudo]);
|
||
}
|
||
|
||
function HoverElement(node, className, events) {
|
||
if(!node.hovers) node.hovers = {};
|
||
if(node.hovers[className]) return;
|
||
node.hovers[className] = true;
|
||
hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
|
||
hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
|
||
}
|
||
function hookHoverEvent(node, type, handler) {
|
||
node.attachEvent(type, handler);
|
||
hoverEvents[hoverEvents.length] = {
|
||
node:node, type:type, handler:handler
|
||
};
|
||
}
|
||
|
||
function unhookHoverEvents() {
|
||
for(var e,i=0; i<hoverEvents.length; i++) {
|
||
e = hoverEvents[i];
|
||
e.node.detachEvent(e.type, e.handler);
|
||
}
|
||
}
|
||
|
||
function getElementsBySelect(rule) {
|
||
var parts, nodes = [doc];
|
||
parts = rule.split(' ');
|
||
for(var i=0; i<parts.length; i++) {
|
||
nodes = getSelectedNodes(parts[i], nodes);
|
||
} return nodes;
|
||
}
|
||
function getSelectedNodes(select, elements) {
|
||
var result, node, nodes = [];
|
||
var identify = (/\#([a-z0-9_-]+)/i).exec(select);
|
||
if(identify) {
|
||
var element = doc.getElementById(identify[1]);
|
||
return element? [element]:nodes;
|
||
}
|
||
|
||
var classname = (/\.([a-z0-9_-]+)/i).exec(select);
|
||
var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
|
||
var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
|
||
for(var i=0; i<elements.length; i++) {
|
||
result = tagName? elements[i].all.tags(tagName):elements[i].all;
|
||
for(var j=0; j<result.length; j++) {
|
||
node = result[j];
|
||
if(classReg && !classReg.test(node.className)) continue;
|
||
nodes[nodes.length] = node;
|
||
}
|
||
}
|
||
|
||
return nodes;
|
||
}
|
||
</script>
|
css/lx-office-erp/jquery.autocomplete.css | ||
---|---|---|
.ac_results {
|
||
padding: 0px;
|
||
border: 1px solid black;
|
||
background-color: white;
|
||
overflow: hidden;
|
||
z-index: 99999;
|
||
}
|
||
|
||
.ac_results ul {
|
||
width: 100%;
|
||
list-style-position: outside;
|
||
list-style: none;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.ac_results li {
|
||
margin: 0px;
|
||
padding: 2px 5px;
|
||
cursor: default;
|
||
display: block;
|
||
/*
|
||
if width will be 100% horizontal scrollbar will apear
|
||
when scroll mode will be used
|
||
*/
|
||
/*width: 100%;*/
|
||
font: menu;
|
||
font-size: 12px;
|
||
/*
|
||
it is very important, if line-height not setted or setted
|
||
in relative units scroll will be broken in firefox
|
||
*/
|
||
line-height: 16px;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.ac_loading {
|
||
background: white url('indicator.gif') right center no-repeat;
|
||
}
|
||
|
||
.ac_odd {
|
||
background-color: #eee;
|
||
}
|
||
|
||
.ac_over {
|
||
background-color: #0A246A;
|
||
color: white;
|
||
}
|
css/lx-office-erp/jquery.multiselect2side.css | ||
---|---|---|
/* multiselect2side plugin */
|
||
.ms2side__div {
|
||
clear: left;
|
||
width: 100%;
|
||
padding: 1px;
|
||
float: left;
|
||
background : url('') repeat-x; /* HACK FOR CHROME */
|
||
}
|
||
|
||
.ms2side__select {
|
||
float: left;
|
||
}
|
||
|
||
.ms2side__header {
|
||
color: blue;
|
||
background-color: #EEEEFF;
|
||
}
|
||
|
||
.ms2side__options, .ms2side__updown {
|
||
float: left;
|
||
font-size: 10pt;
|
||
margin: 0;
|
||
padding: 0 8px;
|
||
width: 40px;
|
||
color: black;
|
||
text-align: center;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.ms2side__updown {
|
||
font-size: 9pt;
|
||
}
|
||
|
||
.ms2side__options p, .ms2side__updown p {
|
||
margin: 2px 0;
|
||
padding: 0;
|
||
cursor: pointer;
|
||
border: 1px solid black;
|
||
}
|
||
|
||
.ms2side__options p.ms2side_hover, .ms2side__updown p.ms2side_hover {
|
||
background-color: #F0F0FF;
|
||
border-color: #0000FF;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.ms2side__options p.ms2side__hide, .ms2side__updown p.ms2side__hide {
|
||
cursor: default;
|
||
color: grey;
|
||
border: 1px solid grey;
|
||
background-color: #F0F0F0;
|
||
}
|
||
|
||
.ms2side__div select {
|
||
width: 400px;
|
||
float: left;
|
||
}
|
css/lx-office-erp/main.css | ||
---|---|---|
color: green;
|
||
}
|
||
|
||
td.numeric { /* class for numeric columns in tables */
|
||
text-align: right
|
||
}
|
||
|
||
h2.confirm {
|
||
color: blue;
|
||
font-size: 14pt;
|
||
... | ... | |
font-weight: bolder;
|
||
}
|
||
|
||
/* media stuff */
|
||
|
||
@media screen {
|
||
.noscreen { /* items with this class won't display */
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
@media print {
|
||
.noprint { /* items with this class won't print */
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
.filecontent {
|
||
border: 1px solid blue;
|
||
... | ... | |
background-color: #ffa0a0;
|
||
}
|
||
|
||
.clearfix:after {
|
||
clear:both;
|
||
content:".";
|
||
display:block;
|
||
font-size:0;
|
||
height:0;
|
||
visibility:hidden;
|
||
}
|
||
|
||
.flash_message_error {
|
||
background-color:#FFD6D6;
|
||
border: 1px solid #AE0014;
|
||
... | ... | |
margin-right: 6px;
|
||
}
|
||
|
||
.small-text {
|
||
font-size: 0.75em;
|
||
}
|
||
|
||
.float-left {
|
||
float: left;
|
||
}
|
||
.float-right {
|
||
float: right;
|
||
}
|
||
|
||
.block-context {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.position-relative {
|
||
position: relative;
|
||
}
|
||
|
||
.position-absolute {
|
||
position: absolute;
|
||
}
|
||
|
||
.part_picker {
|
||
padding-right: 16px;
|
||
}
|
||
... | ... | |
span.toggle_selected {
|
||
font-weight: bold;
|
||
}
|
||
|
||
/* CTI */
|
||
a.cti_call_action {
|
||
display: inline-block;
|
||
padding-left: 18px;
|
||
height: 16px;
|
||
position: relative;
|
||
top: 2px;
|
||
vertical-align: center;
|
||
background-image: url(../../image/icons/16x16/phone.png);
|
||
background-repeat: no-repeat;
|
||
}
|
||
|
||
/* the cvars table in the 2. row */
|
||
.row2-cvars-table tr {vertical-align: top;}
|
||
.row2-cvars-table th {text-align: right; padding-left: 15px; padding-right: 0;}
|
||
.row2-cvars-table td, .row2-cvars-table th {padding-top: 10px;}
|
css/lx-office-erp/menu.css | ||
---|---|---|
margin:0px;
|
||
}
|
||
|
||
body {
|
||
behavior:url("csshover.htc");
|
||
}
|
||
|
||
#menuv3 {
|
||
width:99.8%;
|
||
float:left;
|
templates/webpages/rp/bwa.html | ||
---|---|---|
[%- USE HTML %]
|
||
[%- USE LxERP %]
|
||
|
||
<link rel="stylesheet" type="text/css" href="css/kivitendo/bwa.css">
|
||
|
||
<table border=0 cellpadding=0 cellspacing=0>
|
||
<tr class="headline">
|
||
<td class="left">[% company %]</td>
|
Auch abrufbar als: Unified diff
Stylesheets: Aufräumaktion
- gemeinsame stylesheets aus den kivitendo/lx-office-erp Verzeichnissen
genommen
- README aktualisiert
- rp/bwa nicht mehr hartcodiert in kivitendo laden