Revision: 11
http://picfinity.svn.sourceforge.net/picfinity/?rev=11&view=rev
Author: espadav8
Date: 2007-07-18 20:16:05 -0700 (Wed, 18 Jul 2007)
Log Message:
-----------
Update getLayoutNode. Still no Safari support. IE6 partly works but still badly broken.
Modified Paths:
--------------
.themes/ajax/ajax.js
Modified: .themes/ajax/ajax.js
===================================================================
--- .themes/ajax/ajax.js 2007-07-19 03:13:05 UTC (rev 10)
+++ .themes/ajax/ajax.js 2007-07-19 03:16:05 UTC (rev 11)
@@ -6,7 +6,7 @@
{
if (document.implementation && document.implementation.createDocument)
{
- xmlDoc = document.implementation.createDocument("", "", null);
+ xmlDoc = document.implementation.createDocument("", "layout", null);
}
else if (window.ActiveXObject)
{
@@ -17,9 +17,72 @@
alert('Your browser can\'t handle this script');
return;
}
+
xmlDoc.load("gallery.xml");
}
+function getLayoutNode(element)
+{
+
+ // this is the best way, but nothing supports this (yet)
+ if ((xmlDoc.getElementById) && (xmlDoc.getElementById(element.getAttribute("id")) != null))
+ {
+ return xmlDoc.getElementById(element.getAttribute("id"));
+ }
+
+ // this is the next best way, but only Firefox and Opera support this at the moment
+ else if (document.createTreeWalker)
+ {
+ var nodes = document.createTreeWalker(xmlDoc.documentElement, NodeFilter.SHOW_ELEMENT, null, false);
+
+ while ((node = nodes.nextNode()) != null)
+ {
+ if (node.getAttribute("id") == element.getAttribute("id"))
+ {
+ return node;
+ }
+ else
+ {
+ continue;
+ }
+ }
+ }
+
+ // this is possibly the worse way, and it's still not supported by Safari
+ else
+ {
+ if (xmlDoc.documentElement.getAttribute("id") == element.getAttribute("id"))
+ {
+ return xmlDoc.documentElement;
+ }
+ else
+ {
+ // this causes a problem with Safari
+ // xmlDocFolders.length == 0
+ var xmlDocFolders = xmlDoc.getElementsByTagName("folder");
+
+ for (var i = 0; i < xmlDocFolders.length; i++)
+ {
+ if (xmlDocFolders[i].getAttribute("id") == element.getAttribute("id"))
+ {
+ return xmlDocFolders[i];
+ }
+ }
+
+ var xmlDocImages = xmlDoc.getElementsByTagName("image");
+
+ for (var i = 0; i < xmlDocImages.length; i++)
+ {
+ if (xmlDocImages[i].getAttribute("id") == element.getAttribute("id"))
+ {
+ return xmlDocImages[i];
+ }
+ }
+ }
+ }
+ return null;
+}
+
function addEvent(elm, evType, fn, useCapture)
{
if (elm.addEventListener) {
@@ -74,29 +137,8 @@
}
}
-function getLayoutNode(element)
-{
- if (document.createTreeWalker) {
- var nodes = document.createTreeWalker(xmlDoc.documentElement, NodeFilter.SHOW_ELEMENT, null, false);
-
- while ((node = nodes.nextNode()) != null)
- {
- if (node.getAttribute("id") == element.getAttribute("id"))
- {
- return node;
- }
- else
- {
- continue;
- }
- }
- }
-
- return null;
-}
-
function openFolder(element)
-{
+{
var nodePath = getNodePath(getLayoutNode(element), '');
var breadcrumbDiv;
@@ -444,7 +486,6 @@
function selectLayoutNodeFromPath(path, node)
{
node = (node == undefined) ? xmlDoc.documentElement : node;
-
if(path == "./")
{
@@ -456,7 +497,9 @@
var currentPath = path.split('/')[0];
- if (document.createTreeWalker) {
+ // FIXME: doesn't work with IE or Safari
+ if (document.createTreeWalker)
+ {
var nodes = document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT, null, false);
while ((selectedNode = nodes.nextNode()) != null)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|