""" 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:;', '+all %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:;', '-all %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; } } """