Changeset 512

Show
Ignore:
Timestamp:
09/07/06 08:25:40
Author:
piv
Message:

modify csshover.htc script for faster work, added configlet

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • qPloneDropDownMenu/trunk/Extensions/Install.py

    r511 r512  
    1818    'appId':PROJECT_NAME, 
    1919    'permission':VIEW_PERMISSION, 
    20     'imageUrl':'qplonedropdownmenu.gif' },) 
     20    'imageUrl':'qplonedropdownmenu.gif'}, 
     21   {'id':'csshover', 
     22    'name':'CSS Hover', 
     23    'action':'string:${portal_url}/prefs_csshover_edit_form', 
     24    'condition':'', 
     25    'category':'Products', 
     26    'visible':1, 
     27    'appId':'csshover', 
     28    'permission':VIEW_PERMISSION},) 
    2129 
    2230def registerCSS(self, out): 
     
    8795    ap = getattr(portal_props, PROPERTY_SHEET) 
    8896    safeEditProperty(ap, 'menu', out, 'text') 
    89    
     97 
    9098def setupSkin(self, out, skinFolder): 
    9199 
  • qPloneDropDownMenu/trunk/HISTORY.txt

    r511 r512  
     10.1.10 
     2 
     3  * fixed kupu related bug (during editing with kupu in zoomed mode) 
     4 
    150.1.9 
    26 
  • qPloneDropDownMenu/trunk/__init__.py

    r511 r512  
     1from AccessControl import allow_module 
    12from Products.CMFCore import utils 
    23from Products.CMFCore.DirectoryView import registerDirectory 
     
    45from Products.qPloneDropDownMenu.DropDownMenuTool import DropDownMenuTool 
    56from Products.qPloneDropDownMenu.config import PROJECT_NAME, SKINS_DIR, GLOBALS, VIEW_PERMISSION 
     7 
     8allow_module('Products.qPloneDropDownMenu.utils') 
    69 
    710registerDirectory(SKINS_DIR, GLOBALS) 
  • qPloneDropDownMenu/trunk/skins/qPloneDropDownMenu/csshover.htc.dtml

    r511 r512  
    1414 *    --------------------------------------------- 
    1515 */ 
    16  
    1716var currentSheet, doc = window.document; 
    1817var csshover_nodes = getElementsByClassName("csshover", doc); 
    19 var csshover_rules = []
    20 var IE5 = (document.getElementsByTagName('*').length == 0) ? true : false
    21 var DEBUG = false, styles = "", parseCSSRulecounter=0
     18var csshover_rules = [], hoverStyleSheets = "", addRules = true
     19var IE5 = (doc.getElementsByTagName('*').length == 0) ? true : false, configlet = doc.getElementById('csshovering')
     20var DEBUG = false, styles = "", parseCSSRulecounter = 0, timer, timerTable = "", d=true
    2221 
    2322function parseStylesheets() { 
    2423    var sheets = doc.styleSheets, l = sheets.length; 
    25     for(var i=0; i<l; i++) 
     24    for(var i=0; i<l; i++){ 
    2625        parseStylesheet(sheets[i]); 
    27     if(DEBUG) alert(styles) 
    28 
     26    }; 
     27    if (configlet) {configlet.innerText = hoverStyleSheets;}; 
     28    if(DEBUG) { 
     29      alert(styles); 
     30      alert(timerTable); 
     31    }; 
     32}; 
    2933 
    3034function parseStylesheet(sheet) { 
     
    3640        for(var i=0; i<l; i++) 
    3741            parseStylesheet(sheet.imports[i]); 
    38     } 
     42    }; 
    3943    rules = (currentSheet = sheet).rules, l = rules.length; 
    40     for(var j=0; j<l; j++){ parseCSSRule(rules[j]);}; 
    41 } 
     44    for(var j=0; j<l; j++){parseCSSRule(rules[j]);}; 
     45}; 
    4246 
    4347function parseCSSRule(rule) { 
    44     if(DEBUG) if((parseCSSRulecounter++)%15 == 0) window.status += '.'; 
     48    if(DEBUG) { 
     49        if((parseCSSRulecounter++)%15 == 0) window.status += '.'; 
     50        startTimer(); 
     51    }; 
    4552    var select = rule.selectorText, style = rule.style.cssText; 
     53    if (addRules && (/\.cssHoverCSSExists/i).test(select)) {addRules = false;}; 
     54    if(!(/\.csshover/i).test(select)) return; 
    4655    if(style.replace(/ /, "") == "") return; 
    47     if(!(/\.csshover/i).test(select)) return; 
    4856    if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):hover/i).test(select)) return; 
    4957 
    5058    var newSelect = select.replace(/(\.([a-z0-9_-]+):hover)|(:hover)/g, '.$2onHover'); 
    51     currentSheet.addRule(newSelect, style); 
     59    if (addRules) {currentSheet.addRule(newSelect, style);}; 
     60    if (configlet) {hoverStyleSheets += newSelect + ' \{\n  ' + style.replace('; ', '\;\n  ') + ';\n\}\n';}; 
    5261 
    5362    var hasClass = (/(\.([a-z0-9_-]+):hover)/g).exec(select); 
     
    5564    var affected = select.replace(/:hover.*$/g, ''); 
    5665    affected = affected.replace(/^.*([ ]|^)(([^ ]*)\.csshover)/i, '$2'); 
    57  
     66    if (DEBUG) {timerTable += stopTimer() + '\n';}; 
    5867    if(!csshover_rules[className + ',' + affected]) { 
     68        if (DEBUG) {startTimer();}; 
    5969        var elements = getElementsBySelect(affected); 
    60         if(DEBUG) window.status += " "+elements.length; 
    61         if(DEBUG) styles += "" + elements.length + ": " + affected + '\n'; 
     70        if(DEBUG) { 
     71            window.status += " "+elements.length; 
     72            styles += "" + elements.length + ": " + affected + '\n'; 
     73        }; 
    6274        for(var i=0; i<elements.length; i++) 
    6375            new HoverElement(elements[i], className); 
    6476        csshover_rules[className + ',' + affected] = true; 
    65     } 
    66 } 
     77    }; 
     78}; 
    6779 
    6880function HoverElement(node, className) { 
     
    7587        function() { node.className = 
    7688            node.className.replace((new RegExp('\\s+'+className)),''); }); 
    77 } 
     89}; 
    7890 
    7991function getElementsBySelect(rule) { 
     
    8294    for(var i=0; i<parts.length; i++) { 
    8395        nodes = getSelectedNodes(parts[i], nodes, i==0); 
    84     } 
     96    }; 
    8597    return nodes; 
    86 } 
     98}; 
    8799 
    88100function getSelectedNodes(select, elements, includeRoot) { 
    89101    var element, result, node, nodes = []; 
    90102    var classname = (/\.([a-z0-9_-]+)/i).exec(select); 
    91     if(classname) classname_re = new RegExp('\\b' + classname[1] + '\\b')
     103    if(classname) {classname_re = new RegExp('\\b' + classname[1] + '\\b');}
    92104    var identify = (/\#([a-z0-9_-]+)/i).exec(select); 
    93105    var tagName = (/^[a-z0-9]+/i).exec(select.toUpperCase()) || '*', 
     
    106118            if((identify && node.id != identify[1]) || (classname && !(classname_re.exec(node.className))) || arrayHasElement(nodes, node)) continue; 
    107119            nodes[nodes.length] = node; 
    108         } 
    109     } 
     120        }; 
     121    }; 
    110122    return nodes; 
    111 } 
     123}; 
    112124 
    113125function arrayHasElement(a, el) { 
     
    115127    for(var i=0; i<l; i++) if(a[i] == el) return true; 
    116128    return false; 
    117 } 
     129}; 
    118130 
    119131function getElementsByClassName(className, parentElement) { 
    120132    var result = new Array(), 
    121         list = (parentElement || doc.body).all //getElementsByTagName('*'); 
    122     for(var i = 0; i < list.length; i++) { 
    123         if(list[i].className.match(new RegExp('(^|\\s)' + className + '(\\s|$)'))) result[result.length] = list[i]
    124     } 
    125     return result 
     133        list = (parentElement || doc.body).getElementsByTagName('*'); 
     134    if(list.length == 0) list = (parentElement || doc.body).all; 
     135    var class_re = new RegExp('(^|\\s)' + className + '(\\s|$)')
     136    for(var i = 0; i < list.length; i++) if(list[i].className.match(class_re)) result[result.length] = list[i]; 
     137    return result; 
    126138}; 
    127139 
     140function startTimer() {timer = new Date().getTime();}; 
     141function stopTimer(message) {return (new Date().getTime()) - timer;}; 
     142 
    128143</script> 
  • qPloneDropDownMenu/trunk/skins/qPloneDropDownMenu/drop_down.css.dtml

    r511 r512  
    8181 
    8282#portal-globalnav li.invisibleHeightKeeper { 
    83         visible: none
     83        visibility: hidden
    8484        float: none; 
    8585} 
     
    9494 
    9595#portal-globalnav .csshover ul li:hover ul a { 
    96         background-color: &dtml-backgroundColor; 
     96        background-color: &dtml-backgroundColor;; 
    9797} 
    9898 
     
    172172 
    173173#portal-globalnav .csshover ul li:hover ul li a { 
    174         color: &dtml-globalFontColor !important; 
     174        color: &dtml-globalFontColor; !important; 
    175175        background-color: &dtml-backgroundColor; !important; 
    176176        margin:0; 
     
    184184} 
    185185 
     186.kupu-fulleditor-zoomed #portal-globalnav { 
     187        display: none; 
     188} 
     189 
     190/*Configlet styles************************************************************/ 
     191 
     192.ieVisible {display:none;} 
     193 
     194* html .ieHidden {display: none;} 
     195 
     196* html .ieVisible {display: block;} 
     197 
     198 
    186199/* </dtml-with> (do not remove this either :) */ 
  • qPloneDropDownMenu/trunk/skins/qPloneDropDownMenu/prefs_dropdownmenu_edit_form.cpt

    r511 r512  
    3838          action="."  
    3939          method="post"  
    40           tal:attributes="action string:${here/getId}/${template/getId}" > 
     40          tal:attributes="action string:${here/absolute_url}/${template/getId}" > 
    4141 
    4242     <div class="formControls" align="right" 
  • qPloneDropDownMenu/trunk/version.txt

    r511 r512  
    1 0.1.9 
     10.1.11