Author: jmorliaguet Date: Wed Dec 21 21:43:45 2005 New Revision: 2072 Modified: cpsskins/branches/jmo-perspectives/browser/skin/popup_macros.pt cpsskins/branches/jmo-perspectives/ui/authoring/authoring.js cpsskins/branches/jmo-perspectives/ui/default/filters/style/style_editor.js cpsskins/branches/jmo-perspectives/ui/default/filters/style/style_editor.pt cpsskins/branches/jmo-perspectives/ui/framework/utils.js Log:
- added a javascript Util object for the functions in utils.js Modified: cpsskins/branches/jmo-perspectives/browser/skin/popup_macros.pt ============================================================================== --- cpsskins/branches/jmo-perspectives/browser/skin/popup_macros.pt (original) +++ cpsskins/branches/jmo-perspectives/browser/skin/popup_macros.pt Wed Dec 21 21:43:45 2005 @@ -9,8 +9,6 @@ <title metal:define-slot="title">CPSSkins for Zope3</title> <link rel="Stylesheet" type="text/css" href="/++skin++cpsskins/@@/++resource++editing.css" /> - <script type="text/javascript" - src="/++skin++cpsskins/@@/++resource++utils.js"></script> <metal:block define-slot="style" /> <metal:block define-slot="script" /> <metal:block define-slot="head" /> Modified: cpsskins/branches/jmo-perspectives/ui/authoring/authoring.js ============================================================================== --- cpsskins/branches/jmo-perspectives/ui/authoring/authoring.js (original) +++ cpsskins/branches/jmo-perspectives/ui/authoring/authoring.js Wed Dec 21 21:43:45 2005 @@ -28,7 +28,7 @@ this.node = node; this.bg = node.style.background; this.container = node.parentNode; - this.order = getElementOrder(node); + this.order = Util.getElementOrder(node); this.xpos = null; this.ypos = null; this.can_move = true; @@ -115,7 +115,7 @@ var new_id = request.responseText; var rendered = render_element(id=new_id); var container = current_elem.parentNode; - container.insertBefore(rendered, getNextElement(current_elem)); + container.insertBefore(rendered, Util.getNextElement(current_elem)); // set up the new nodes pd_setupPage(); } @@ -243,7 +243,7 @@ var speed = vertical_speed(e); if (Math.abs(speed) < 1) return; if (speed > 0) { - var target = getNextElement(el); + var target = Util.getNextElement(el); } else { var target = el; } @@ -258,10 +258,10 @@ } function save_move(elem) { - var parent = getParentElement(elem); + var parent = Util.getParentElement(elem); var src_id = elem.getAttribute("id"); var dest_id = parent.getAttribute("id"); - var order = getElementOrder(elem); + var order = Util.getElementOrder(elem); current_elem = elem; current_container = parent; model.move({'src_id': src_id, 'dest_id': dest_id, 'order': order}); @@ -275,15 +275,15 @@ if (!Element.hasClassName(moving, 'draggable')) return; var target = Event.element(e); if (!Element.hasClassName(target, 'container')) return; - if (!isNodeEmpty(target)) return; + if (!Util.isNodeEmpty(target)) return; target.appendChild(moving); current_elem = moving; } function add_element(container, el, type_name) { - var container_id = getTargetElement(container).getAttribute("id"); + var container_id = Util.getTargetElement(container).getAttribute("id"); if (el) { - var order = getElementOrder(el); + var order = Util.getElementOrder(el); } else { var order = 0; } @@ -330,7 +330,7 @@ setCursor("default"); if (!moved) return; if (!current_elem) return; - if ((moved.order == getElementOrder(current_elem)) + if ((moved.order == Util.getElementOrder(current_elem)) && (moved.container == current_elem.parentNode)) return; save_move(current_elem); moved = null; @@ -360,11 +360,11 @@ Event.observe(mo, 'mouseup', function(e) { if (factory) { var type_name = factory.node.getAttribute("type_name"); - if (isNodeEmpty(mo)) { + if (Util.isNodeEmpty(mo)) { var el = null; } else { var target = Event.element(e); - var el = getTargetElement(target); + var el = Util.getTargetElement(target); } add_element(mo, el, type_name); } Modified: cpsskins/branches/jmo-perspectives/ui/default/filters/style/style_editor.js ============================================================================== --- cpsskins/branches/jmo-perspectives/ui/default/filters/style/style_editor.js (original) +++ cpsskins/branches/jmo-perspectives/ui/default/filters/style/style_editor.js Wed Dec 21 21:43:45 2005 @@ -49,7 +49,7 @@ if (!label) { label = 'unknown label'; } - replaceHTML(tooltip_box, label); + Util.replaceHTML(tooltip_box, label); tooltip_box.style.left = '' + Event.pointerX(e) + "px"; tooltip_box.style.top = '' + Event.pointerY(e) + "px"; Element.show(tooltip_box); @@ -64,7 +64,7 @@ // ignore inactive elements if (elem.getAttribute("inactive")) return; // Get the element selector - var selector = getSelectorInContext(elem, context=widget_area); + var selector = Util.getSelectorInContext(elem, context=widget_area); if (selector == this.selector) return; this.selector = selector; // Set the current selector style @@ -107,7 +107,7 @@ style += "#previewArea " + widget_tag + " " + sel + "{" + attrs + "}"; } // XXX this does not work with IE - replaceHTML($('style'), style); + Util.replaceHTML($('style'), style); }, getSelectorStyle: function() { @@ -249,7 +249,7 @@ /* Debug */ function write_message(msg) { - if (message_box) replaceHTML(message_box, msg); + if (message_box) Util.replaceHTML(message_box, msg); } function clear_message() { Modified: cpsskins/branches/jmo-perspectives/ui/default/filters/style/style_editor.pt ============================================================================== --- cpsskins/branches/jmo-perspectives/ui/default/filters/style/style_editor.pt (original) +++ cpsskins/branches/jmo-perspectives/ui/default/filters/style/style_editor.pt Wed Dec 21 21:43:45 2005 @@ -10,6 +10,8 @@ <script type="text/javascript" src="/++skin++cpsskins/@@/++resource++prototype.js"></script> <script type="text/javascript" + src="/++skin++cpsskins/@@/++resource++utils.js"></script> + <script type="text/javascript" src="/++skin++cpsskins/@@/++resource++json.js"></script> <script type="text/javascript" src="/++skin++cpsskins/@@/++resource++style_editor.js"></script> Modified: cpsskins/branches/jmo-perspectives/ui/framework/utils.js ============================================================================== --- cpsskins/branches/jmo-perspectives/ui/framework/utils.js (original) +++ cpsskins/branches/jmo-perspectives/ui/framework/utils.js Wed Dec 21 21:43:45 2005 @@ -13,135 +13,133 @@ return false; } +if (!window.Util) var Util = new Object(); -/* DOM ELEMENTS */ +Object.extend(Util, { -// Replace the element's html -function replaceHTML(elem, html) { - if (elem.nodeName == "TEXTAREA" || elem.nodeName == "INPUT") { - elem.value = html; - } else { - elem.innerHTML = html; - } -} - -// Return the element's selector relative to a context element. -// e.g. "div.box ul li" -function getSelectorInContext(elem, context) { - var i, node, tag, name, selector; - node = elem; - - // If no context is passed, use the document itself. - if (!context) context = document; - - var selectors = new Array() - while (node) { - if (node == context) break; - tag = node.tagName; - if (!tag) break; - tag = tag.toLowerCase(); - name = node.className; - selector = name ? tag + '.' + name : tag; - - // ignore tags that have the "ignore" attribute set - if (!node.getAttribute("ignore")) selectors.push(selector); - node = node.parentNode; - } - // reverse the array - selectors.reverse(); - return selectors.join(" "); -} - -function isElement(elem) { - return (elem.nodeType == 1 && - elem.getAttribute("id")); -} - -function getElementOrder(elem) { - var order=0; - var nodes = elem.parentNode.childNodes; - for (var i=0;i<nodes.length;i++) { - var node = nodes[i]; - if (node == elem) return order; - if (isElement(node)) order += 1; - } - return order; -} - -function shiftElement(elem, direction) { - var container = elem.parentNode; - var order = getElementOrder(elem); - if (direction == "down") { - var new_node = getNextElement(elem); - if (!new_node) return null; - var old_node = elem; - var new_order = order +1; - } else { - if (order == 0) return null; - var new_node = elem; - var old_node = getPreviousElement(elem); - var new_order = order -1; - } - container.insertBefore(new_node, old_node); - return new_order; -} - -function getNextElement(elem) { - var node = elem; - while (node) { - node = node.nextSibling; - if (!node) return null; - if (isElement(node)) return node; - } - return null; -} - -function getPreviousElement(elem) { - var node = elem; - while (node) { - node = node.previousSibling; - if (!node) return null; - if (isElement(node)) return node; - } - return null; -} - -function getParentElement(elem) { - var node = elem; - while (node) { - node = node.parentNode; - if (!node) return null; - if (isElement(node)) return node; - } - return null; -} - -function getTargetElement(node) { - if (isElement(node)) return node; - return getParentElement(node); -} - -function isNodeEmpty(node) { - var is_empty = true; - var nodes = node.childNodes; - for (var i=0;i<nodes.length;i++) { - if (isElement(nodes[i])) is_empty = false; - } - return is_empty; -} - -function getChildById(node, id) { - if (node.getAttribute) - if (node.getAttribute("id") == id) - return node; - var i, c; - for (i=0;i<node.childNodes.length;i++) { - c = getChildById(node.childNodes[i], id); - if (c != null) - return c; - } - return null; -} + replaceHTML: function(element, html) { + if (element.nodeName == "TEXTAREA" || element.nodeName == "INPUT") { + element.value = html; + } else { + element.innerHTML = html; + } + }, + + getSelectorInContext: function(element, context) { + var i, node, tag, name, selector; + node = element; + + // If no context is passed, use the document itself. + if (!context) context = document; + + var selectors = new Array() + while (node) { + if (node == context) break; + tag = node.tagName; + if (!tag) break; + tag = tag.toLowerCase(); + name = node.className; + selector = name ? tag + '.' + name : tag; + + // ignore tags that have the "ignore" attribute set + if (!node.getAttribute("ignore")) selectors.push(selector); + node = node.parentNode; + } + // reverse the array + selectors.reverse(); + return selectors.join(" "); + }, + + isElement: function(node) { + return (node.nodeType == 1 && node.getAttribute("id")); + }, + + getElementOrder: function(element) { + var order=0; + var nodes = element.parentNode.childNodes; + for (var i=0;i<nodes.length;i++) { + var node = nodes[i]; + if (node == element) return order; + if (this.isElement(node)) order += 1; + } + return order; + }, + + shiftElement: function(element, direction) { + var container = element.parentNode; + var order = this.getElementOrder(element); + if (direction == "down") { + var new_node = this.getNextElement(element); + if (!new_node) return null; + var old_node = element; + var new_order = order +1; + } else { + if (order == 0) return null; + var new_node = element; + var old_node = this.getPreviousElement(element); + var new_order = order -1; + } + container.insertBefore(new_node, old_node); + return new_order; + }, + + getNextElement: function(element) { + var node = element; + while (node) { + node = node.nextSibling; + if (!node) return null; + if (this.isElement(node)) return node; + } + return null; + }, + + getPreviousElement: function(element) { + var node = element; + while (node) { + node = node.previousSibling; + if (!node) return null; + if (this.isElement(node)) return node; + } + return null; + }, + + getParentElement: function(element) { + var node = element; + while (node) { + node = node.parentNode; + if (!node) return null; + if (this.isElement(node)) return node; + } + return null; + }, + + getTargetElement: function(node) { + if (this.isElement(node)) return node; + return this.getParentElement(node); + }, + + isNodeEmpty: function(node) { + var is_empty = true; + var nodes = node.childNodes; + for (var i=0;i<nodes.length;i++) { + if (this.isElement(nodes[i])) is_empty = false; + } + return is_empty; + }, + + getChildById: function(node, id) { + if (node.getAttribute) + if (node.getAttribute("id") == id) + return node; + var i, c; + for (i=0;i<node.childNodes.length;i++) { + c = this.getChildById(node.childNodes[i], id); + if (c != null) + return c; + } + return null; + }, +}); function trim(text) { return text.replace(/^\s*|\s*$/g,""); -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins