"""
open/dulcinea/lib/ui/toggle_div.qpy
"""
from qp.fill.html import href
from qp.pub.common import get_publisher
def expand_all_href:xml(text=None):
href('javascript:;', ' %s' % (
get_publisher().get_plusbox_image_url(), text),
'click to expand all collapsed elements',
css_class="plusboxall", id="plusboxall",
onmousedown="expand_all()")
def collapse_all_href:xml(text=None):
href('javascript:;', ' %s' % (
get_publisher().get_minusbox_image_url(), text),
'click to collapse all expanded elements',
css_class="minusboxall", id="minusboxall",
onmousedown="collapse_all()")
def expandable_div:xml(div_id, body, see_hover='click to see details', hide_hover='click to hide details'):
plusbox_id = 'plusbox_' + div_id
minusbox_id = 'minusbox_' + div_id
href('javascript:;',
'' % get_publisher().get_plusbox_image_url(),
see_hover,
id=plusbox_id, css_class="plusbox",
onmousedown="toggle_div('%s', '%s', '%s');" % (
div_id, plusbox_id, minusbox_id))
'
' % div_id
href('javascript:;',
'
' % get_publisher().get_minusbox_image_url(),
hide_hover,
id=minusbox_id, css_class="minusbox",
onmousedown="toggle_div('%s', '%s', '%s');" % (
div_id, plusbox_id, minusbox_id))
body
'
'
def collapsible_div:xml(div_id, body, see_hover='click to see details', hide_hover='click to hide details'):
plusbox_id = 'plusbox_' + div_id
minusbox_id = 'minusbox_' + div_id
'\n'
href('javascript:;',
'' % get_publisher().get_plusbox_image_url(),
see_hover, css_class="plusbox",
id=plusbox_id,
onmousedown="toggle_div('%s', '%s', '%s');" % (
div_id, plusbox_id, minusbox_id))
'\n' % div_id
href('javascript:;',
'
' % get_publisher().get_minusbox_image_url(),
hide_hover,
id=minusbox_id, css_class="minusbox",
onmousedown="toggle_div('%s', '%s', '%s');" % (
div_id, plusbox_id, minusbox_id))
body
'\n
'
def toggle_div_javascript:xml():
"""
function toggle_div(div_id, plusbox_id, minusbox_id) {
if(document.getElementById(div_id).style.display == 'none') {
document.getElementById(div_id).style.display = 'block';
document.getElementById(plusbox_id).style.display = 'none';
document.getElementById(minusbox_id).style.display = 'block';
} else {
document.getElementById(div_id).style.display = 'none';
document.getElementById(plusbox_id).style.display = 'block';
document.getElementById(minusbox_id).style.display = 'none';
}
}
function expand_div(div_id) {
var plusbox_id = 'plusbox_' + div_id;
var minusbox_id = 'minusbox_' + div_id;
document.getElementById(div_id).style.display = 'block';
document.getElementById(plusbox_id).style.display = 'none';
document.getElementById(minusbox_id).style.display = 'block';
}
function collapse_div(div_id) {
var plusbox_id = 'plusbox_' + div_id;
var minusbox_id = 'minusbox_' + div_id;
document.getElementById(div_id).style.display = 'none';
document.getElementById(plusbox_id).style.display = 'block';
document.getElementById(minusbox_id).style.display = 'none';
}
function collapse_all() {
var divElements = document.getElementsByTagName("DIV");
for (var i=0; i < divElements.length; i++) {
var divElement = divElements[i];
if (divElement.className.substring(0, 8) == "minusbox") {
collapse_div(divElement.id);
}
}
}
function expand_all() {
var divElements = document.getElementsByTagName("DIV");
for (var i=0; i < divElements.length; i++) {
var divElement = divElements[i];
if (divElement.className.substring(0, 8) == "minusbox") {
expand_div(divElement.id);
}
}
}
function scroll_to_fragment() {
var fragment = window.location.hash;
if(fragment != null && fragment.length > 1) {
var element = document.getElementsByName(fragment.substring(1))[0];
var y_position = 0;
while(element != null) {
y_position += element.offsetTop;
element = element.offsetParent;
}
y_position = parseInt(y_position, 10);
if(y_position > 0)
window.scrollTo(0, y_position);
}
}
function toggle_all_divs() {
if (document.getElementById("plusboxall")) {
document.getElementById("plusboxall").style.display = 'block';
}
if (document.getElementById("minusboxall")) {
document.getElementById("minusboxall").style.display = 'block';
}
var collapseElements = document.getElementsByClassName("minusbox collapse");
for (var i=0; i < collapseElements.length; i++) {
var collapseElement = collapseElements[i];
collapse_div(collapseElement.id);
}
var expandElements = document.getElementsByClassName("minusbox expand");
for (var i=0; i < expandElements.length; i++) {
var expandElement = expandElements[i];
expand_div(expandElement.id);
}
scroll_to_fragment();
}
/* Simulate for DOM3 browsers and IE */
if (window.addEventListener)
window.addEventListener("load", toggle_all_divs, false);
else if (window.attachEvent)
window.attachEvent("onload", toggle_all_divs);
else if (document.getElementById)
window.onload=toggle_all_divs;
"""
def format_toggle_div_css:str():
"""
a.plusbox,
a.minusbox,
a.plusboxall,
a.minusboxall {
font-size: larger;
text-decoration: none;
color: white;
display: none;
}
a.minusbox,
a.plusboxall,
a.minusboxall {
float: left;
}
a.plusboxall img,
a.minusboxall img {
border-style: none;
margin: 0;
padding: 2px;
}
a.plusbox img,
a.minusbox img {
border-style: none;
margin: 0;
padding: 0;
}
div.minusbox {
margin: 0;
padding: 0;
}
@media print {
div.minusbox {
display: block;
}
a.plusbox, a.minusbox {
display: none;
}
}
"""