picfinity-commit Mailing List for Picfinity (Page 2)
Status: Beta
Brought to you by:
espadav8
You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(15) |
Aug
(44) |
Sep
(12) |
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <esp...@us...> - 2007-08-18 20:34:16
|
Revision: 47 http://picfinity.svn.sourceforge.net/picfinity/?rev=47&view=rev Author: espadav8 Date: 2007-08-18 13:34:19 -0700 (Sat, 18 Aug 2007) Log Message: ----------- Move the files around for the new theme Added Paths: ----------- trunk/.themes/db/db.js trunk/.themes/db/db.xsl trunk/.themes/db/getcomments.php Removed Paths: ------------- trunk/.themes/db/ajax.css.bak trunk/.themes/db/ajax.js trunk/.themes/db/ajax.xsl Deleted: trunk/.themes/db/ajax.css.bak =================================================================== --- trunk/.themes/db/ajax.css.bak 2007-08-18 20:31:22 UTC (rev 46) +++ trunk/.themes/db/ajax.css.bak 2007-08-18 20:34:19 UTC (rev 47) @@ -1,117 +0,0 @@ -* -{ - padding: 0; - margin: 0; -} - -html -{ - background: #1a1a1a url('background.gif') repeat-x; -} - -h1 -{ - margin: 10px 0; - text-align: center; - color: #d0d0d0; -} - -#albums -{ - position: relative; - margin: 0 20px; -} - -.name -{ - color: #f0f0f0; - font-weight: bold; -} - - -.folder, -.thumbnail -{ - width: 150px; - height: 150px; - display: block; - float: left; - margin: 5px; - border: 1px solid #ccc; - position: relative; - background: #484848; -} - -.icon -{ - position:relative; - bottom: 125px; - left: 15px; -} - -.folder span.image:hover, -.thumbnail span.image:hover -{ - background: #d0ffd0; -} - -.empty span.image:hover -{ - background: #ffd0d0; -} - -.folder span.name, -.thumbnail span.name -{ - display: block; - text-align: center; - border-top: 1px solid #ccc; - padding: 3px 0; - position: absolute; - bottom: 0; - height: 15px; - overflow: hidden; - width: 150px; -} - -.folder span.image, -.thumbnail span.image -{ - display: block; - text-align: center; - vertical-align: middle; - padding: 14px 25px; - height: 100px; - width: 100px; -} - -div.stack -{ - margin-top: 25px; - padding: 5px; - float: left; - clear: left; -} - -div.stack .folder -{ - background: #484848; - width: 35px; - margin: 0 -1px 0 0; - overflow: hidden; -} - - -div.stack .folder:hover, -div.stack .folder image:hover -{ - width: 150px; - color: #000; -} - -div#selectedalbum -{ - clear: both; - display: block; - float: left; -} \ No newline at end of file Deleted: trunk/.themes/db/ajax.js =================================================================== --- trunk/.themes/db/ajax.js 2007-08-18 20:31:22 UTC (rev 46) +++ trunk/.themes/db/ajax.js 2007-08-18 20:34:19 UTC (rev 47) @@ -1,673 +0,0 @@ -addEvent(window, 'load', importLayout, false); -addEvent(window, 'load', IE6navhover, false); - -var xmlDoc; - -function IE6navhover() -{ - if ((window.attachEvent) && (document.getElementById("breadcrumbtrail") != null)) - { - var sfEls = document.getElementById("breadcrumbtrail").getElementsByTagName("LI"); - for (var i=0; i<sfEls.length; i++) - { - sfEls[i].onmouseover = function() - { - this.className += " over"; - } - sfEls[i].onmouseout = function() - { - this.className = this.className.replace(new RegExp(" over\\b"), ""); - } - } - } -} - -function importLayout() -{ - if (window.XMLHttpRequest) - { - var xmlHttp = new XMLHttpRequest(); - xmlHttp.onreadystatechange = function() { - if (xmlHttp.readyState == 4) - { - xmlDoc = xmlHttp.responseXML; - } - } - xmlHttp.open("GET", "gallery.xml", true); - xmlHttp.send(null) - } - else if (document.implementation && document.implementation.createDocument) - { - xmlDoc = document.implementation.createDocument("", "layout", null); - xmlDoc.load("gallery.xml"); - } - else if (window.ActiveXObject) - { - xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); - xmlDoc.validateOnParse = false; - xmlDoc.resolveExternals = false; - xmlDoc.load("gallery.xml"); - } - else - { - alert('Your browser can\'t handle this script'); - return; - } -} - -function reloadPage() -{ - openFolder(xmlDoc.documentElement.getAttribute("id")); -} - -function getLayoutNode(elementID) -{ - // check for the documentElement first - if (xmlDoc.documentElement.getAttribute("id") == elementID) - { - return xmlDoc.documentElement; - } - // this is the best way, but nothing supports this (yet) - else if ((xmlDoc.getElementById) && (xmlDoc.getElementById(elementID) != null)) - { - return xmlDoc.getElementById(elementID); - } - - // 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") == elementID) - { - return node; - } - else - { - continue; - } - } - } - - // this is possibly the worse way, and it's still not supported by Safari - 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") == elementID) - { - return xmlDocFolders[i]; - } - } - - var xmlDocImages = xmlDoc.getElementsByTagName("image"); - - for (var i = 0; i < xmlDocImages.length; i++) - { - if (xmlDocImages[i].getAttribute("id") == elementID) - { - return xmlDocImages[i]; - } - } - } - return null; -} - -function addEvent(elm, evType, fn, useCapture) -{ - if (elm.addEventListener) { - elm.addEventListener(evType, fn, useCapture); - return true; - } - else if (elm.attachEvent) { - var r = elm.attachEvent('on' + evType, fn); - return r; - } - else { - elm['on' + evType] = fn; - } -} - -function getElementsByClassName(className, tag, elm) -{ - var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)"); - var tag = tag || "*"; - var elm = elm || document; - var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag); - var returnElements = []; - var current; - var length = elements.length; - for(var i=0; i<length; i++){ - current = elements[i]; - if(testClass.test(current.className)){ - returnElements.push(current); - } - } - if (returnElements.length > 0) - return returnElements; - else - return null; -} - -function getChildNodesByTagName(element, tagName) -{ - var result = Array(); - - if(!element.hasChildNodes()) { - return result; - } - - for(var i = 0; i < element.childNodes.length; i++) - { - // this hack is for Konqueror (and possibly Safari) - // for some reason the <image> tags are replaced - // with <img> tags - if ((element.childNodes[i].nodeName == tagName) || - (tagName == "image" && element.childNodes[i].nodeName == "img")) - { - result.push(element.childNodes[i]); - } - } - return result; -} - -function getNodePath(element, nodePath) -{ - nodePath = (nodePath == undefined) ? '' : nodePath; - - if (element == xmlDoc.documentElement) - { - return '.' + nodePath; - } - else - { - nodePath = element.parentNode.getAttribute("name") + '/' + nodePath; - return getNodePath(element.parentNode, nodePath); - } -} - -function openFolder(elementID) -{ - var layoutNode = getLayoutNode(elementID); - var nodePath = getNodePath(layoutNode); - - var breadcrumbDiv = createBreadcrumbTrail(layoutNode); - - var newAlbumsDiv = document.createElement("div"); - newAlbumsDiv.setAttribute("id", "albums"); - - var backButton = document.createElement("div") - backButton.setAttribute("id", "backbutton"); - - var selectedDiv = document.createElement("div"); - selectedDiv.setAttribute("id", "selectedalbum"); - - var selectedAlbumFolders = getChildNodesByTagName(layoutNode, "folder"); - var selectedAlbumImages = getChildNodesByTagName(layoutNode, "image"); - - for (var j = 0; j < selectedAlbumFolders.length; j++) - { - var subFolderContainer = createSubFolderContainer(selectedAlbumFolders[j]); - selectedDiv.appendChild(subFolderContainer); - } - - for (var j = 0; j < selectedAlbumImages.length; j++) - { - var thumbnailContainer = createImageThumbnailContainer(selectedAlbumImages[j]); - selectedDiv.appendChild(thumbnailContainer); - } - - newAlbumsDiv.appendChild(selectedDiv); - - document.getElementById("albums").parentNode.replaceChild(newAlbumsDiv, document.getElementById("albums")); - - IE6navhover() - return false; -} - -function checkFolderContents(element) -{ - if (element.hasChildNodes() == false) - { - return ".themes/ajax/empty.png"; - } - else - { - var nodePath = getNodePath(getLayoutNode(element.getAttribute("id"))); - var imageChildNodes = getChildNodesByTagName(element, "image"); - - if (imageChildNodes.length > 0) - { - var imagePath = '.thumbs/' - + nodePath - + element.getAttribute("name") - + '/' - + imageChildNodes[0].getAttribute("file"); - return imagePath; - } - else - { - return ".themes/ajax/folder.png"; - } - } -} - -function createImageThumbnailContainer(imageNode, optClass) -{ - var imageNodeID = imageNode.getAttribute("id"); - var nodePath = getNodePath(getLayoutNode(imageNodeID)); - - var classes = (optClass == undefined) ? "thumbnail" : "thumbnail " + optClass; - - var albumImageDiv = document.createElement("div"); - albumImageDiv.className = classes; - albumImageDiv.setAttribute("id", imageNodeID); - - var imageAnchor = document.createElement("a"); - imageAnchor.setAttribute("href", "index.php?id=" + imageNodeID); - imageAnchor.onclick = function() { showImage(imageNodeID); return false; }; - - var imageSpan = document.createElement("span"); - imageSpan.className = "image"; - - var albumImage = document.createElement("img"); - var imageThumbPath = '.thumbs/' + nodePath + '/' + imageNode.getAttribute("file"); - albumImage.setAttribute("src", imageThumbPath); - imageAnchor.appendChild(albumImage); - - var imageNameSpan = document.createElement("span"); - imageNameSpan.className = "name"; - imageNameSpan.appendChild(document.createTextNode(imageNode.getAttribute("file"))); - - imageSpan.appendChild(imageAnchor) - albumImageDiv.appendChild(imageSpan); - albumImageDiv.appendChild(imageNameSpan); - - return albumImageDiv; -} - -function createSubFolderContainer(folderNode) -{ - var folderID = folderNode.getAttribute("id"); - var nodePath = getNodePath(getLayoutNode(folderID)); - - // create the main folder div - var subFolder = document.createElement("div"); - subFolder.className = "folder"; - subFolder.setAttribute("id", folderID); - - var folderAnchor = document.createElement("a"); - folderAnchor.setAttribute("href", "index.php?id=" + folderID); - - // this should allow it to work in IE but makes it harder to follow - // in things like FireBug since you can't see the onclick for the divs - folderAnchor.onclick = function() { openFolder(folderID); return false; }; - - // create a span for the image - var folderImageSpan = document.createElement("span"); - folderImageSpan.className = "image"; - - // create the image - var folderImage = document.createElement("img"); - var imagePath = checkFolderContents(folderNode); - folderImage.setAttribute("src", imagePath); - folderAnchor.appendChild(folderImage); - folderImageSpan.appendChild(folderAnchor); - - // create a span for the folder icon - var iconSpan = document.createElement("span"); - iconSpan.className = "icon"; - - // create the icon image - var iconImage = document.createElement("img"); - iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); - iconSpan.appendChild(iconImage); - - // create a span for the text - var textSpan = document.createElement("span"); - textSpan.className = "name"; - - // create the text - var textContents = folderNode.getAttribute("name"); - var noImages = getChildNodesByTagName(folderNode, "image").length; - var noFolders = getChildNodesByTagName(folderNode, "folder").length; - - if ((noImages || noFolders) > 0) - { - textContents += " ("; - if (noImages > 0) textContents += noImages; - if (noFolders > 0) textContents += "+" + noFolders; - textContents += ")"; - } - - var textNode = document.createTextNode(textContents); - textSpan.appendChild(textNode); - - // appened them all in order - subFolder.appendChild(folderImageSpan); - subFolder.appendChild(iconSpan); - subFolder.appendChild(textSpan); - - return subFolder; -} - -function createExpandedImage(imageNode) -{ - var nodePath = getNodePath(getLayoutNode(imageNode.getAttribute("id"))); - - var expandedImageDiv = document.createElement("div"); - expandedImageDiv.setAttribute("id", "expandedimage"); - - var linkToDiv = document.createElement("div"); - linkToDiv.setAttribute("id", "linktospan"); - linkToDiv.style.display = "none"; - - var linkToAnchor = document.createElement("a"); - linkToAnchor.setAttribute("href", "index.php?id=" + imageNode.getAttribute("id")) - linkToAnchor.appendChild(document.createTextNode("Link to this image")); - linkToDiv.appendChild(linkToAnchor); - - var loadingDiv = document.createElement("div"); - loadingDiv.setAttribute("id", "loadingspan"); - loadingDiv.style.display = "block"; - loadingDiv.appendChild(document.createTextNode("Loading image")); - - var imageAnchor = document.createElement("a"); - imageAnchor.onclick = function() { closeImage(); return false }; - imageAnchor.href = "#"; - - var imageDiv = document.createElement("div"); - imageDiv.setAttribute("id", "expandedimagespan"); - imageDiv.style.display = "none"; - - var albumImage = document.createElement("img"); - var imageThumbPath = nodePath + '/' + imageNode.getAttribute("file"); - albumImage.setAttribute("src", imageThumbPath); - imageAnchor.appendChild(albumImage); - imageDiv.appendChild(imageAnchor); - - var imageNameDiv = document.createElement("div"); - imageNameDiv.className = "name"; - imageNameDiv.appendChild(document.createTextNode(imageNode.getAttribute("file"))); - - expandedImageDiv.appendChild(linkToDiv); - expandedImageDiv.appendChild(loadingDiv); - expandedImageDiv.appendChild(imageDiv); - expandedImageDiv.appendChild(imageNameDiv); - - var expandedImage = new Image(); - expandedImage.onload = function() - { - loadingDiv.style.display = "none"; - imageDiv.style.display = ""; - linkToDiv.style.display = ""; - }; - expandedImage.src = imageThumbPath; - - return expandedImageDiv; -} - -function createBreadcrumbTrail(element) -{ - var breadcrumbTrailDiv = document.createElement("div"); - breadcrumbTrailDiv.setAttribute("id", "breadcrumbtrail"); - - var nodePath = getNodePath(element) + element.getAttribute("name"); - - var paths = nodePath.split('/'); - var currentPath = ''; - - for (var i = 0; i < paths.length - 1; i++) - { - currentPath += paths[i] + '/'; - - var breadcrumbMenu = createBreadcrumbMenu(currentPath, paths[i + 1]); - breadcrumbTrailDiv.appendChild(breadcrumbMenu); - } - - if (document.getElementById("breadcrumbtrail")) - { - document.getElementById("albums").parentNode.replaceChild(breadcrumbTrailDiv, document.getElementById("breadcrumbtrail")); - } - else - { - document.getElementById("albums").parentNode.insertBefore(breadcrumbTrailDiv, document.getElementById("albums")); - } -} - -function createBreadcrumbMenu(path, currentFolder) -{ - var breadcrumbEntry = document.createElement("ul"); - breadcrumbEntry.className = "trailentry"; - - var menuLi = document.createElement("li"); - menuLi.className = "currentfolder"; - - var dropMenu = document.createElement("ul"); - menuLi.appendChild(dropMenu); - - var layoutNode = selectLayoutNodeFromPath(path); - - for (var i = 0; i < layoutNode.childNodes.length; i++) - { - var node = layoutNode.childNodes[i]; - - // these will all be hidden until the :hover - if (node.nodeName == "folder") - { - var dropMenuItem = createBreadcrumbItem(node, currentFolder); - dropMenu.appendChild(dropMenuItem); - } - - // this is for the current folder - if ((node.nodeName == "folder") && (node.getAttribute("name") == currentFolder)) - { - var dropMenuAnchor = document.createElement("a"); - dropMenuAnchor.href = "index.php?id=" + dropMenuItem.getAttribute("id"); - - var nameSpan = document.createElement("span"); - nameSpan.className = "name"; - nameSpan.appendChild(document.createTextNode(node.getAttribute("name"))); - - // create a span for the folder icon - var iconSpan = document.createElement("span"); - iconSpan.className = "icon"; - - // create the icon image - var iconImage = document.createElement("img"); - iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); - iconSpan.appendChild(iconImage); - - dropMenuAnchor.appendChild(nameSpan); - dropMenuAnchor.appendChild(nameSpan); - - menuLi.insertBefore(dropMenuAnchor, menuLi.firstChild); - - breadcrumbEntry.appendChild(menuLi); - } - } - - return breadcrumbEntry; -} - -function createBreadcrumbItem(node, currentFolder) -{ - var dropMenuItem = document.createElement("li"); - dropMenuItem.setAttribute("id", node.getAttribute("id")); - - var dropMenuAnchor = document.createElement("a"); - dropMenuAnchor.href = "index.php?id=" + dropMenuItem.getAttribute("id"); - dropMenuAnchor.onclick = function() { openFolder(dropMenuItem.getAttribute("id")); return false; }; - - if (node.hasChildNodes()) - { - // create a span for the folder icon - var iconSpan = document.createElement("span"); - iconSpan.className = "icon"; - - // create the icon image - var iconImage = document.createElement("img"); - iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); - iconSpan.appendChild(iconImage); - - dropMenuAnchor.appendChild(iconSpan); - } - else - { - dropMenuItem.setAttribute("class", "empty"); - - // create a span for the folder icon - var iconSpan = document.createElement("span"); - iconSpan.className = "icon"; - - // create the icon image - var iconImage = document.createElement("img"); - iconImage.setAttribute("src", ".themes/ajax/emptyicon.png"); - iconSpan.appendChild(iconImage); - dropMenuItem.appendChild(iconSpan); - } - - // we do this so we can show the user the currently selected folder in the drop down - if (node.getAttribute("name") == currentFolder) - { - dropMenuItem.className = "menuentry selected"; - } - else - { - dropMenuItem.className = "menuentry"; - } - - var nameSpan = document.createElement("span"); - nameSpan.className = "name"; - nameSpan.appendChild(document.createTextNode(node.getAttribute("name"))); - dropMenuAnchor.appendChild(nameSpan); - - dropMenuItem.appendChild(dropMenuAnchor); - return dropMenuItem; -} - -function selectLayoutNodeFromPath(path, node) -{ - node = (node == undefined) ? xmlDoc.documentElement : node; - - if(path == "./") - { - return xmlDoc.documentElement; - } - else if (path != '') - { - path = (path.indexOf("./") == 0) ? path.substring(2) : path; - var currentPath = path.split('/')[0]; - var nodes = getChildNodesByTagName(node, "folder"); - - for (var i = 0; i < nodes.length; i++) - { - if ((nodes[i].getAttribute("name") == currentPath)) - { - return selectLayoutNodeFromPath(path.replace(currentPath + '/', ''), nodes[i]); - } - else - { - continue; - } - } - } - else - { - return node; - } -} - -function showImage(imageID) -{ - var siblingNodes = getChildNodesByTagName(getLayoutNode(imageID).parentNode, "image"); - - for (var i = 0; i < siblingNodes.length; i++) - { - if (siblingNodes[i].getAttribute("id") == imageID) - { - var expandedImage = createExpandedImage(siblingNodes[i]); - - if (document.getElementById("expandedimage")) - { - document.getElementById("expandedimage").parentNode.replaceChild(expandedImage, document.getElementById("expandedimage")); - } - else - { - document.getElementById("selectedalbum").parentNode.insertBefore(expandedImage, document.getElementById("selectedalbum")); - } - } - } - - var lastSelectedImage = getElementsByClassName("selected", "div", document); - - if (lastSelectedImage) - { - lastSelectedImage[0].className = "thumbnail"; - } - - document.getElementById(imageID).className += " selected"; -} - -function closeImage() -{ - document.getElementById("expandedimage").parentNode.removeChild(document.getElementById("expandedimage")); - - var lastSelectedImage = getElementsByClassName("selected", "div", document); - - if (lastSelectedImage) - lastSelectedImage[0].className = "thumbnail"; -} - - - - - -function getCookie(name) { - var start = document.cookie.indexOf( name + "=" ); - var len = start + name.length + 1; - - if ((!start) && (name != document.cookie.substring(0, name.length))) - { - return null; - } - - if (start == -1) return null; - - var end = document.cookie.indexOf(';', len); - - if (end == -1) end = document.cookie.length; - - return unescape(document.cookie.substring(len, end)); -} - -function setCookie(name, value, expires, path, domain, secure) { - var today = new Date(); - today.setTime(today.getTime()); - - if (expires) { - expires = expires * 1000 * 60 * 60 * 24; - } - - var expires_date = new Date(today.getTime() + (expires)); - - document.cookie = name + '=' + escape(value) + - ((expires) ? ';expires='+expires_date.toGMTString() : '') + //expires.toGMTString() - ((path) ? ';path=' + path : '') + - ((domain) ? ';domain=' + domain : '') + - ((secure) ? ';secure' : ''); -} - -function deleteCookie(name, path, domain) { - if (getCookie(name)) - document.cookie = name + '=' + - ((path) ? ';path=' + path : '') + - ((domain) ? ';domain=' + domain : '') + - ';expires=Thu, 01-Jan-1970 00:00:01 GMT'; -} \ No newline at end of file Deleted: trunk/.themes/db/ajax.xsl =================================================================== --- trunk/.themes/db/ajax.xsl 2007-08-18 20:31:22 UTC (rev 46) +++ trunk/.themes/db/ajax.xsl 2007-08-18 20:34:19 UTC (rev 47) @@ -1,338 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> - <xsl:output - method="xml" - omit-xml-declaration="yes" - indent="yes" - doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" - doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" - /> - - <xsl:param name="title" /> - <xsl:param name="post_id" /> - <xsl:param name="themename">ajax</xsl:param> - - <xsl:template match="/"> - <html> - <head> - <title><xsl:value-of select="$title" /></title> - - <link href=".themes/ajax/ajax.css" rel="stylesheet" type="text/css"> - <xsl:attribute name="href"><xsl:value-of select="concat('.themes/', $themename, '/', $themename, '.css')" /></xsl:attribute> - </link> - <script type="text/javascript"> - <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/', $themename, '.js')" /></xsl:attribute> - </script> - </head> - - <body> - <h1> - <a href="index.php" onclick="reloadPage();return false;"> - <xsl:value-of select="$title" /> - </a> - </h1> - - <xsl:choose> - <xsl:when test="$post_id = 0"> - <xsl:apply-templates select="layout" /> - </xsl:when> - <xsl:otherwise> - <xsl:apply-templates select="layout" mode="post"/> - </xsl:otherwise> - </xsl:choose> - </body> - </html> - </xsl:template> - - <xsl:template match="layout"> - <xsl:apply-templates select="themes" /> - - <div id="breadcrumbtrail"></div> - - <div id="albums"> - <xsl:apply-templates select="folder" /> - <xsl:apply-templates select="image" /> - </div> - </xsl:template> - - <xsl:template match="themes"> - <div id="themes"> - <form id="themeform" action="index.php" method="post"> - <fieldset> - <select name="theme" onchange="submit();"> - <option value="">Please choose a theme</option> - <xsl:apply-templates select="theme" /> - </select> - <button type="submit">Go</button> - </fieldset> - </form> - </div> - </xsl:template> - - <xsl:template match="theme"> - <option> - <xsl:if test="@name = $themename"> - <xsl:attribute name="selected">selected</xsl:attribute> - </xsl:if> - <xsl:attribute name="value"><xsl:value-of select="@name" /></xsl:attribute> - <xsl:value-of select="@name" /> - </option> - </xsl:template> - - <xsl:template match="folder"> - <div> - <xsl:choose> - <xsl:when test="count(folder) = 0 and count(image) = 0"> - <xsl:attribute name="class">folder empty</xsl:attribute> - </xsl:when> - <xsl:otherwise> - <xsl:attribute name="class">folder</xsl:attribute> - </xsl:otherwise> - </xsl:choose> - <span class="image"> - <a> - <xsl:if test="count(folder) > 0 or count(image) > 0"> - <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> - <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> - </xsl:if> - - <xsl:choose> - <xsl:when test="count(image) > 0"> - <xsl:variable name="path"> - <xsl:call-template name="replaceCharsInString"> - <xsl:with-param name="stringIn"> - <xsl:text>.thumbs/</xsl:text><xsl:apply-templates select="ancestor::folder" mode="getpath" /><xsl:value-of select="concat(@name, '/', image[1]/@file)" /> - </xsl:with-param> - <xsl:with-param name="charsIn" select="' '"/> - <xsl:with-param name="charsOut" select="'%20'"/> - </xsl:call-template> - </xsl:variable> - <img alt="Sample Image"> - <xsl:attribute name="src"><xsl:value-of select="$path" /></xsl:attribute> - <xsl:attribute name="alt"><xsl:value-of select="image[1]/@file" /></xsl:attribute> - </img> - </xsl:when> - <xsl:when test="count(folder) > 0"> - <img alt="Image Folder"> - <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/folder.png')" /></xsl:attribute> - </img> - </xsl:when> - <xsl:otherwise> - <img alt="Empty Folder"> - <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/empty.png')" /></xsl:attribute> - </img> - </xsl:otherwise> - </xsl:choose> - </a> - </span> - <xsl:if test="count(folder) > 0 or count(image) > 0"> - <span class="icon"> - <img alt="Folder Icon"> - <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/foldericon.png')" /></xsl:attribute> - </img> - </span> - </xsl:if> - <span class="name"> - <xsl:value-of select="@name" /> - <xsl:choose> - <xsl:when test="(count(folder) > 0) and (count(image) > 0)"> - <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>(<xsl:value-of select="count(image)" />+<xsl:value-of select="count(folder)" />) - </xsl:when> - <xsl:when test="count(folder) > 0"> - <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>(+<xsl:value-of select="count(folder)" />) - </xsl:when> - <xsl:when test="count(image) > 0"> - <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>(<xsl:value-of select="count(image)" />) - </xsl:when> - </xsl:choose> - </span> - </div> - </xsl:template> - - <xsl:template match="image"> - <xsl:param name="selectedID">0</xsl:param> - <xsl:variable name="path"> - <xsl:call-template name="replaceCharsInString"> - <xsl:with-param name="stringIn"> - <xsl:text>.thumbs/</xsl:text><xsl:apply-templates select="ancestor::folder" mode="getpath" /><xsl:value-of select="@file" /> - </xsl:with-param> - <xsl:with-param name="charsIn" select="' '"/> - <xsl:with-param name="charsOut" select="'%20'"/> - </xsl:call-template> - </xsl:variable> - - <div class="thumbnail"> - <xsl:attribute name="id"><xsl:value-of select="@id" /></xsl:attribute> - <xsl:if test="@id = $selectedID"> - <xsl:attribute name="class">thumbnail selected</xsl:attribute> - </xsl:if> - <span class="image"> - <a> - <xsl:attribute name="onclick">showImage('<xsl:value-of select="@id" />'); return false;</xsl:attribute> - <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> - <img> - <xsl:attribute name="alt"><xsl:value-of select="@file" /></xsl:attribute> - <xsl:attribute name="src"><xsl:value-of select="$path" /></xsl:attribute> - </img> - </a> - </span> - <span class="name"><xsl:value-of select="@file" /></span> - </div> - </xsl:template> - - - <xsl:template match="layout" mode="post"> - <xsl:variable name="folder"> - <xsl:choose> - <xsl:when test="count(//folder[@id = $post_id]) = 1">1</xsl:when> - <xsl:when test="@id = $post_id">2</xsl:when> - <xsl:otherwise>0</xsl:otherwise> - </xsl:choose> - </xsl:variable> - - - <xsl:apply-templates select="themes" /> - - <xsl:choose> - <!-- the passed in ID is an image --> - <xsl:when test="$folder = 0"> - <xsl:apply-templates select="//image[@id = $post_id]" mode="post" /> - </xsl:when> - - <!-- the passed in ID is an folder --> - <xsl:when test="$folder = 1"> - <xsl:apply-templates select="//folder[@id = $post_id]" mode="post" /> - </xsl:when> - </xsl:choose> - </xsl:template> - - <xsl:template match="folder" mode="post"> - <div id="breadcrumbtrail"> - <xsl:apply-templates select="self::*" mode="breadcrumbtrail" /> - </div> - <div id="albums"> - <div id="selectedalbum"> - <xsl:apply-templates select="folder"/> - <xsl:apply-templates select="image"/> - </div> - </div> - </xsl:template> - - <xsl:template match="folder" mode="breadcrumbtrail"> - <xsl:if test="parent::folder"> - <xsl:apply-templates select="parent::folder" mode="breadcrumbtrail" /> - </xsl:if> - - <xsl:variable name="currentName"><xsl:value-of select="@name" /></xsl:variable> - - <ul class="trailentry"> - <li class="currentfolder"> - <a> - <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> - <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> - <span class="icon"> - <img alt="Folder Icon"> - <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/foldericon.png')" /></xsl:attribute> - </img> - </span> - <span class="name"><xsl:value-of select="@name" /></span> - </a> - <ul> - <xsl:for-each select="parent::*/folder"> - <li> - <xsl:choose> - <xsl:when test="$currentName = @name"> - <xsl:attribute name="class">menuentry selected</xsl:attribute> - </xsl:when> - <xsl:otherwise> - <xsl:attribute name="class">menuentry</xsl:attribute> - </xsl:otherwise> - </xsl:choose> - <a> - <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> - <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> - <span class="icon"> - <img src=".themes/ajax/foldericon.png" alt="Folder Icon" /> - </span> - <span class="name"><xsl:value-of select="@name" /></span> - </a> - </li> - </xsl:for-each> - </ul> - </li> - </ul> - </xsl:template> - - <xsl:template match="image" mode="post"> - <xsl:variable name="path"> - <xsl:call-template name="replaceCharsInString"> - <xsl:with-param name="stringIn"> - <xsl:text>./</xsl:text><xsl:apply-templates select="ancestor::folder" mode="getpath" /><xsl:value-of select="@file" /> - </xsl:with-param> - <xsl:with-param name="charsIn" select="' '"/> - <xsl:with-param name="charsOut" select="'%20'"/> - </xsl:call-template> - </xsl:variable> - - <div id="breadcrumbtrail"> - <xsl:apply-templates select="parent::folder" mode="breadcrumbtrail" /> - </div> - - <div id="albums"> - <div id="expandedimage"> - <div id="linktospan"> - <a> - <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> - <xsl:text>Link to this image</xsl:text> -<!-- - <img alt="Link to this image"> - <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/link.png')" /></xsl:attribute> - </img> ---> - </a> - </div> - <div id="expandedimagespan"> - <a href="#" onclick="closeImage(); return false;"> - <img> - <xsl:attribute name="src"><xsl:value-of select="$path" /></xsl:attribute> - <xsl:attribute name="alt"><xsl:value-of select="@file" /></xsl:attribute> - </img> - </a> - </div> - <div class="name"><xsl:value-of select="@file" /></div> - </div> - - <div id="selectedalbum"> - <xsl:apply-templates select="parent::*/folder" /> - <xsl:apply-templates select="parent::*/image"> - <xsl:with-param name="selectedID" select="@id" /> - </xsl:apply-templates> - </div> - - </div> - </xsl:template> - - <xsl:template match="folder" mode="getpath"> - <xsl:value-of select="concat(@name, '/')" /> - </xsl:template> - - <xsl:template name="replaceCharsInString"> - <xsl:param name="stringIn"/> - <xsl:param name="charsIn"/> - <xsl:param name="charsOut"/> - <xsl:choose> - <xsl:when test="contains($stringIn,$charsIn)"> - <xsl:value-of select="concat(substring-before($stringIn,$charsIn),$charsOut)"/> - <xsl:call-template name="replaceCharsInString"> - <xsl:with-param name="stringIn" select="substring-after($stringIn,$charsIn)"/> - <xsl:with-param name="charsIn" select="$charsIn"/> - <xsl:with-param name="charsOut" select="$charsOut"/> - </xsl:call-template> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$stringIn"/> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - -</xsl:stylesheet> Copied: trunk/.themes/db/db.js (from rev 45, trunk/.themes/db/ajax.js) =================================================================== --- trunk/.themes/db/db.js (rev 0) +++ trunk/.themes/db/db.js 2007-08-18 20:34:19 UTC (rev 47) @@ -0,0 +1,669 @@ +addEvent(window, 'load', importLayout, false); +addEvent(window, 'load', IE6navhover, false); + +var xmlDoc; + +function IE6navhover() +{ + if ((window.attachEvent) && (document.getElementById("breadcrumbtrail") != null)) + { + var sfEls = document.getElementById("breadcrumbtrail").getElementsByTagName("LI"); + for (var i=0; i<sfEls.length; i++) + { + sfEls[i].onmouseover = function() + { + this.className += " over"; + } + sfEls[i].onmouseout = function() + { + this.className = this.className.replace(new RegExp(" over\\b"), ""); + } + } + } +} + +function importLayout() +{ + if (window.XMLHttpRequest) + { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.onreadystatechange = function() { + if (xmlHttp.readyState == 4) + { + xmlDoc = xmlHttp.responseXML; + } + } + xmlHttp.open("GET", "gallery.xml", true); + xmlHttp.send(null) + } + else if (document.implementation && document.implementation.createDocument) + { + xmlDoc = document.implementation.createDocument("", "layout", null); + xmlDoc.load("gallery.xml"); + } + else if (window.ActiveXObject) + { + xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + xmlDoc.validateOnParse = false; + xmlDoc.resolveExternals = false; + xmlDoc.load("gallery.xml"); + } + else + { + alert('Your browser can\'t handle this script'); + return; + } +} + +function reloadPage() +{ + openFolder(xmlDoc.documentElement.getAttribute("id")); +} + +function getLayoutNode(elementID) +{ + // check for the documentElement first + if (xmlDoc.documentElement.getAttribute("id") == elementID) + { + return xmlDoc.documentElement; + } + // this is the best way, but nothing supports this (yet) + else if ((xmlDoc.getElementById) && (xmlDoc.getElementById(elementID) != null)) + { + return xmlDoc.getElementById(elementID); + } + + // 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") == elementID) + { + return node; + } + else + { + continue; + } + } + } + + // this is possibly the worse way, and it's still not supported by Safari + 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") == elementID) + { + return xmlDocFolders[i]; + } + } + + var xmlDocImages = xmlDoc.getElementsByTagName("image"); + + for (var i = 0; i < xmlDocImages.length; i++) + { + if (xmlDocImages[i].getAttribute("id") == elementID) + { + return xmlDocImages[i]; + } + } + } + return null; +} + +function addEvent(elm, evType, fn, useCapture) +{ + if (elm.addEventListener) { + elm.addEventListener(evType, fn, useCapture); + return true; + } + else if (elm.attachEvent) { + var r = elm.attachEvent('on' + evType, fn); + return r; + } + else { + elm['on' + evType] = fn; + } +} + +function getElementsByClassName(className, tag, elm) +{ + var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)"); + var tag = tag || "*"; + var elm = elm || document; + var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag); + var returnElements = []; + var current; + var length = elements.length; + for(var i=0; i<length; i++){ + current = elements[i]; + if(testClass.test(current.className)){ + returnElements.push(current); + } + } + if (returnElements.length > 0) + return returnElements; + else + return null; +} + +function getChildNodesByTagName(element, tagName) +{ + var result = Array(); + + if(!element.hasChildNodes()) { + return result; + } + + for(var i = 0; i < element.childNodes.length; i++) + { + // this hack is for Konqueror (and possibly Safari) + // for some reason the <image> tags are replaced + // with <img> tags + if ((element.childNodes[i].nodeName == tagName) || + (tagName == "image" && element.childNodes[i].nodeName == "img")) + { + result.push(element.childNodes[i]); + } + } + return result; +} + +function getNodePath(element, nodePath) +{ + nodePath = (nodePath == undefined) ? '' : nodePath; + + if (element == xmlDoc.documentElement) + { + return '.' + nodePath; + } + else + { + nodePath = element.parentNode.getAttribute("name") + '/' + nodePath; + return getNodePath(element.parentNode, nodePath); + } +} + +function openFolder(elementID) +{ + var layoutNode = getLayoutNode(elementID); + var nodePath = getNodePath(layoutNode); + + var breadcrumbDiv = createBreadcrumbTrail(layoutNode); + + var newAlbumsDiv = document.createElement("div"); + newAlbumsDiv.setAttribute("id", "albums"); + + var backButton = document.createElement("div") + backButton.setAttribute("id", "backbutton"); + + var selectedDiv = document.createElement("div"); + selectedDiv.setAttribute("id", "selectedalbum"); + + var selectedAlbumFolders = getChildNodesByTagName(layoutNode, "folder"); + var selectedAlbumImages = getChildNodesByTagName(layoutNode, "image"); + + for (var j = 0; j < selectedAlbumFolders.length; j++) + { + var subFolderContainer = createSubFolderContainer(selectedAlbumFolders[j]); + selectedDiv.appendChild(subFolderContainer); + } + + for (var j = 0; j < selectedAlbumImages.length; j++) + { + var thumbnailContainer = createImageThumbnailContainer(selectedAlbumImages[j]); + selectedDiv.appendChild(thumbnailContainer); + } + + newAlbumsDiv.appendChild(selectedDiv); + + document.getElementById("albums").parentNode.replaceChild(newAlbumsDiv, document.getElementById("albums")); + + IE6navhover() + return false; +} + +function checkFolderContents(element) +{ + if (element.hasChildNodes() == false) + { + return ".themes/ajax/empty.png"; + } + else + { + var nodePath = getNodePath(getLayoutNode(element.getAttribute("id"))); + var imageChildNodes = getChildNodesByTagName(element, "image"); + + if (imageChildNodes.length > 0) + { + var imagePath = '.thumbs/' + + nodePath + + element.getAttribute("name") + + '/' + + imageChildNodes[0].getAttribute("file"); + return imagePath; + } + else + { + return ".themes/ajax/folder.png"; + } + } +} + +function createImageThumbnailContainer(imageNode, optClass) +{ + var imageNodeID = imageNode.getAttribute("id"); + var nodePath = getNodePath(getLayoutNode(imageNodeID)); + + var classes = (optClass == undefined) ? "thumbnail" : "thumbnail " + optClass; + + var albumImageDiv = document.createElement("div"); + albumImageDiv.className = classes; + albumImageDiv.setAttribute("id", imageNodeID); + + var imageAnchor = document.createElement("a"); + imageAnchor.setAttribute("href", "index.php?id=" + imageNodeID); + imageAnchor.onclick = function() { showImage(imageNodeID); return false; }; + + var imageSpan = document.createElement("span"); + imageSpan.className = "image"; + + var albumImage = document.createElement("img"); + var imageThumbPath = '.thumbs/' + nodePath + '/' + imageNode.getAttribute("file"); + albumImage.setAttribute("src", imageThumbPath); + imageAnchor.appendChild(albumImage); + + var imageNameSpan = document.createElement("span"); + imageNameSpan.className = "name"; + imageNameSpan.appendChild(document.createTextNode(imageNode.getAttribute("file"))); + + imageSpan.appendChild(imageAnchor) + albumImageDiv.appendChild(imageSpan); + albumImageDiv.appendChild(imageNameSpan); + + return albumImageDiv; +} + +function createSubFolderContainer(folderNode) +{ + var folderID = folderNode.getAttribute("id"); + var nodePath = getNodePath(getLayoutNode(folderID)); + + // create the main folder div + var subFolder = document.createElement("div"); + subFolder.className = "folder"; + subFolder.setAttribute("id", folderID); + + var folderAnchor = document.createElement("a"); + folderAnchor.setAttribute("href", "index.php?id=" + folderID); + + // this should allow it to work in IE but makes it harder to follow + // in things like FireBug since you can't see the onclick for the divs + folderAnchor.onclick = function() { openFolder(folderID); return false; }; + + // create a span for the image + var folderImageSpan = document.createElement("span"); + folderImageSpan.className = "image"; + + // create the image + var folderImage = document.createElement("img"); + var imagePath = checkFolderContents(folderNode); + folderImage.setAttribute("src", imagePath); + folderAnchor.appendChild(folderImage); + folderImageSpan.appendChild(folderAnchor); + + // create a span for the folder icon + var iconSpan = document.createElement("span"); + iconSpan.className = "icon"; + + // create the icon image + var iconImage = document.createElement("img"); + iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); + iconSpan.appendChild(iconImage); + + // create a span for the text + var textSpan = document.createElement("span"); + textSpan.className = "name"; + + // create the text + var textContents = folderNode.getAttribute("name"); + var noImages = getChildNodesByTagName(folderNode, "image").length; + var noFolders = getChildNodesByTagName(folderNode, "folder").length; + + if ((noImages || noFolders) > 0) + { + textContents += " ("; + if (noImages > 0) textContents += noImages; + if (noFolders > 0) textContents += "+" + noFolders; + textContents += ")"; + } + + var textNode = document.createTextNode(textContents); + textSpan.appendChild(textNode); + + // appened them all in order + subFolder.appendChild(folderImageSpan); + subFolder.appendChild(iconSpan); + subFolder.appendChild(textSpan); + + return subFolder; +} + +function createExpandedImage(imageNode) +{ + var nodePath = getNodePath(getLayoutNode(imageNode.getAttribute("id"))); + + var expandedImageDiv = document.createElement("div"); + expandedImageDiv.setAttribute("id", "expandedimage"); + + var linkToDiv = document.createElement("div"); + linkToDiv.setAttribute("id", "linktospan"); + linkToDiv.style.display = "none"; + + var linkToAnchor = document.createElement("a"); + linkToAnchor.setAttribute("href", "index.php?id=" + imageNode.getAttribute("id")) + linkToAnchor.appendChild(document.createTextNode("Link to this image")); + linkToDiv.appendChild(linkToAnchor); + + var loadingDiv = document.createElement("div"); + loadingDiv.setAttribute("id", "loadingspan"); + loadingDiv.style.display = "block"; + loadingDiv.appendChild(document.createTextNode("Loading image")); + + var imageAnchor = document.createElement("a"); + imageAnchor.onclick = function() { closeImage(); return false }; + imageAnchor.href = "#"; + + var imageDiv = document.createElement("div"); + imageDiv.setAttribute("id", "expandedimagespan"); + imageDiv.style.display = "none"; + + var albumImage = document.createElement("img"); + var imageThumbPath = nodePath + '/' + imageNode.getAttribute("file"); + albumImage.setAttribute("src", imageThumbPath); + imageAnchor.appendChild(albumImage); + imageDiv.appendChild(imageAnchor); + + var imageNameDiv = document.createElement("div"); + imageNameDiv.className = "name"; + imageNameDiv.appendChild(document.createTextNode(imageNode.getAttribute("file"))); + + expandedImageDiv.appendChild(linkToDiv); + expandedImageDiv.appendChild(loadingDiv); + expandedImageDiv.appendChild(imageDiv); + expandedImageDiv.appendChild(imageNameDiv); + + var expandedImage = new Image(); + expandedImage.onload = function() + { + loadingDiv.style.display = "none"; + imageDiv.style.display = ""; + linkToDiv.style.display = ""; + }; + expandedImage.src = imageThumbPath; + + return expandedImageDiv; +} + +function createBreadcrumbTrail(element) +{ + var breadcrumbTrailDiv = document.createElement("div"); + breadcrumbTrailDiv.setAttribute("id", "breadcrumbtrail"); + + var nodePath = getNodePath(element) + element.getAttribute("name"); + + var paths = nodePath.split('/'); + var currentPath = ''; + + for (var i = 0; i < paths.length - 1; i++) + { + currentPath += paths[i] + '/'; + + var breadcrumbMenu = createBreadcrumbMenu(currentPath, paths[i + 1]); + breadcrumbTrailDiv.appendChild(breadcrumbMenu); + } + + if (document.getElementById("breadcrumbtrail")) + { + document.getElementById("albums").parentNode.replaceChild(breadcrumbTrailDiv, document.getElementById("breadcrumbtrail")); + } + else + { + document.getElementById("albums").parentNode.insertBefore(breadcrumbTrailDiv, document.getElementById("albums")); + } +} + +function createBreadcrumbMenu(path, currentFolder) +{ + var breadcrumbEntry = document.createElement("ul"); + breadcrumbEntry.className = "trailentry"; + + var menuLi = document.createElement("li"); + menuLi.className = "currentfolder"; + + var dropMenu = document.createElement("ul"); + menuLi.appendChild(dropMenu); + + var layoutNode = selectLayoutNodeFromPath(path); + + for (var i = 0; i < layoutNode.childNodes.length; i++) + { + var node = layoutNode.childNodes[i]; + + // these will all be hidden until the :hover + if (node.nodeName == "folder") + { + var dropMenuItem = createBreadcrumbItem(node, currentFolder); + dropMenu.appendChild(dropMenuItem); + } + + // this is for the current folder + if ((node.nodeName == "folder") && (node.getAttribute("name") == currentFolder)) + { + var dropMenuAnchor = document.createElement("a"); + dropMenuAnchor.href = "index.php?id=" + dropMenuItem.getAttribute("id"); + + var nameSpan = document.createElement("span"); + nameSpan.className = "name"; + nameSpan.appendChild(document.createTextNode(node.getAttribute("name"))); + + // create a span for the folder icon + var iconSpan = document.createElement("span"); + iconSpan.className = "icon"; + + // create the icon image + var iconImage = document.createElement("img"); + iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); + iconSpan.appendChild(iconImage); + + dropMenuAnchor.appendChild(nameSpan); + dropMenuAnchor.appendChild(nameSpan); + + menuLi.insertBefore(dropMenuAnchor, menuLi.firstChild); + + breadcrumbEntry.appendChild(menuLi); + } + } + + return breadcrumbEntry; +} + +function createBreadcrumbItem(node, currentFolder) +{ + var dropMenuItem = document.createElement("li"); + dropMenuItem.setAttribute("id", node.getAttribute("id")); + + var dropMenuAnchor = document.createElement("a"); + dropMenuAnchor.href = "index.php?id=" + dropMenuItem.getAttribute("id"); + dropMenuAnchor.onclick = function() { openFolder(dropMenuItem.getAttribute("id")); return false; }; + + if (node.hasChildNodes()) + { + // create a span for the folder icon + var iconSpan = document.createElement("span"); + iconSpan.className = "icon"; + + // create the icon image + var iconImage = document.createElement("img"); + iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); + iconSpan.appendChild(iconImage); + + dropMenuAnchor.appendChild(iconSpan); + } + else + { + dropMenuItem.setAttribute("class", "empty"); + + // create a span for the folder icon + var iconSpan = document.createElement("span"); + iconSpan.className = "icon"; + + // create the icon image + var iconImage = document.createElement("img"); + iconImage.setAttribute("src", ".themes/ajax/emptyicon.png"); + iconSpan.appendChild(iconImage); + dropMenuItem.appendChild(iconSpan); + } + + // we do this so we can show the user the currently selected folder in the drop down + if (node.getAttribute("name") == currentFolder) + { + dropMenuItem.className = "menuentry selected"; + } + else + { + dropMenuItem.className = "menuentry"; + } + + var nameSpan = document.createElement("span"); + nameSpan.className = "name"; + nameSpan.appendChild(document.createTextNode(node.getAttribute("name"))); + dropMenuAnchor.appendChild(nameSpan); + + dropMenuItem.appendChild(dropMenuAnchor); + return dropMenuItem; +} + +function selectLayoutNodeFromPath(path, node) +{ + node = (node == undefined) ? xmlDoc.documentElement : node; + + if(path == "./") + { + return xmlDoc.documentElement; + } + else if (path != '') + { + path = (path.indexOf("./") == 0) ? path.substring(2) : path; + var currentPath = path.split('/')[0]; + var nodes = getChildNodesByTagName(node, "folder"); + + for (var i = 0; i < nodes.length; i++) + { + if ((nodes[i].getAttribute("name") == currentPath)) + { + return selectLayoutNodeFromPath(path.replace(currentPath + '/', ''), nodes[i]); + } + else + { + continue; + } + } + } + else + { + return node; + } +} + +function showImage(imageID) +{ + var siblingNodes = getChildNodesByTagName(getLayoutNode(imageID).parentNode, "image"); + + var expandedImage = createExpandedImage(getLayoutNode(imageID)); + + // var imageComments = createComments(siblingNodes[i]); + + if (document.getElementById("expandedimage")) + { + document.getElementById("expandedimage").parentNode.replaceChild(expandedImage, document.getElementById("expandedimage")); + } + else + { + document.getElementById("selectedalbum").parentNode.insertBefore(expandedImage, document.getElementById("selectedalbum")); + } + + var lastSelectedImage = getElementsByClassName("selected", "div", document); + + if (lastSelectedImage) + { + lastSelectedImage[0].className = "thumbnail"; + } + + document.getElementById(imageID).className += " selected"; +} + +function closeImage() +{ + document.getElementById("expandedimage").parentNode.removeChild(document.getElementById("expandedimage")); + + var lastSelectedImage = getElementsByClassName("selected", "div", document); + + if (lastSelectedImage) + lastSelectedImage[0].className = "thumbnail"; +} + + + + + +function getCookie(name) { + var start = document.cookie.indexOf( name + "=" ); + var len = start + name.length + 1; + + if ((!start) && (name != document.cookie.substring(0, name.length))) + { + return null; + } + + if (start == -1) return null; + + var end = document.cookie.indexOf(';', len); + + if (end == -1) end = document.cookie.length; + + return unescape(document.cookie.substring(len, end)); +} + +function setCookie(name, value, expires, path, domain, secure) { + var today = new Date(); + today.setTime(today.getTime()); + + if (expires) { + expires = expires * 1000 * 60 * 60 * 24; + } + + var expires_date = new Date(today.getTime() + (expires)); + + document.cookie = name + '=' + escape(value) + + ((expires) ? ';expires='+expires_date.toGMTString() : '') + //expires.toGMTString() + ((path) ? ';path=' + path : '') + + ((domain) ? ';domain=' + domain : '') + + ((secure) ? ';secure' : ''); +} + +function deleteCookie(name, path, domain) { + if (getCookie(name)) + document.cookie = name + '=' + + ((path) ? ';path=' + path : '') + + ((domain) ? ';domain=' + domain : '') + + ';expires=Thu, 01-Jan-1970 00:00:01 GMT'; +} \ No newline at end of file Copied: trunk/.themes/db/db.xsl (from rev 45, trunk/.themes/db/ajax.xsl) =================================================================== --- trunk/.themes/db/db.xsl (rev 0) +++ trunk/.themes/db/db.xsl 2007-08-18 20:34:19 UTC (rev 47) @@ -0,0 +1,338 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + <xsl:output + method="xml" + omit-xml-declaration="yes" + indent="yes" + doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" + doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" + /> + + <xsl:param name="title" /> + <xsl:param name="post_id" /> + <xsl:param name="themename">db</xsl:param> + + <xsl:template match="/"> + <html> + <head> + <title><xsl:value-of select="$title" /></title> + + <link rel="stylesheet" type="text/css"> + <xsl:attribute name="href"><xsl:value-of select="concat('.themes/', $themename, '/', $themename, '.css')" /></xsl:attribute> + </link> + <script type="text/javascript"> + <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/', $themename, '.js')" /></xsl:attribute> + </script> + </head> + + <body> + <h1> + <a href="index.php" onclick="reloadPage();return false;"> + <xsl:value-of select="$title" /> + </a> + </h1> + + <xsl:choose> + <xsl:when test="$post_id = 0"> + <xsl:apply-templates select="layout" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="layout" mode="post"/> + </xsl:otherwise> + </xsl:choose> + </body> + </html> + </xsl:template> + + <xsl:template match="layout"> + <xsl:apply-templates select="themes" /> + + <div id="breadcrumbtrail"></div> + + <div id="albums"> + <xsl:apply-templates select="folder" /> + <xsl:apply-templates select="image" /> + </div> + </xsl:template> + + <xsl:template match="themes"> + <div id="themes"> + <form id="themeform" action="index.php" method="post"> + <fieldset> + <select name="theme" onchange="submit();"> + <option value="">Please choose a theme</option> + <xsl:apply-templates select="theme" /> + </select> + <button type="submit">Go</button> + </fieldset> + </form> + </div> + </xsl:template> + + <xsl:template match="theme"> + <option> + <xsl:if test="@name = $themename"> + <xsl:attribute name="selected">selected</xsl:attribute> + </xsl:if> + <xsl:attribute name="value"><xsl:value-of select="@name" /></xsl:attribute> + <xsl:value-of select="@name" /> + </option> + </xsl:template> + + <xsl:template match="folder"> + <div> + <xsl:choose> + <xsl:when test="count(folder) = 0 and count(image) = 0"> + <xsl:attribute name="class">folder empty</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="class">folder</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <span class="image"> + <a> + <xsl:if test="count(folder) > 0 or count(image) > 0"> + <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> + <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> + </xsl:if> + + <xsl:choose> + <xsl:when test="count(image) > 0"> + <xsl:variable name="path"> + <xsl:call-template name="replaceCharsInString"> + <xsl:with-param name="stringIn"> + <xsl:text>.thumbs/</xsl:text><xsl:apply-templates select="ancestor::folder" mode="getpath" /><xsl:value-of select="concat(@name, '/', image[1]/@file)" /> + </xsl:with-param> + <xsl:with-param name="charsIn" select="' '"/> + <xsl:with-param name="charsOut" select="'%20'"/> + </xsl:call-template> + </xsl:variable> + <img alt="Sample Image"> + <xsl:attribute name="src"><xsl:value-of select="$path" /></xsl:attribute> + <xsl:attribute name="alt"><xsl:value-of select="image[1]/@file" /></xsl:attribute> + </img> + </xsl:when> + <xsl:when test="count(folder) > 0"> + <img alt="Image Folder"> + <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/folder.png')" /></xsl:attribute> + </img> + </xsl:when> + <xsl:otherwise> + <img alt="Empty Folder"> + <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/empty.png')" /></xsl:attribute> + </img> + </xsl:otherwise> + </xsl:choose> + </a> + </span> + <xsl:if test="count(folder) > 0 or count(image) > 0"> + <span class="icon"> + <img alt="Folder Icon"> + <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/foldericon.png')" /></xsl:attribute> + </img> + </span> + </xsl:if> + <span class="name"> + <xsl:value-of select="@name" /> + <xsl:choose> + <xsl:when test="(count(folder) > 0) and (count(image) > 0)"> + <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>(<xsl:value-of select="count(image)" />+<xsl:value-of select="count(folder)" />) + </xsl:when> + <xsl:when test="count(folder) > 0"> + <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>(+<xsl:value-of select="count(folder)" />) + </xsl:when> + <xsl:when test="count(image) > 0"> + <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>(<xsl:value-of select="count(image)" />) + </xsl:when> + </xsl:choose> + </span> + </div> + </xsl:template> + + <xsl:template match="image"> + <xsl:param name="selectedID">0</xsl:param> + <xsl:variable name="path"> + <xsl:call-template name="replaceCharsInString"> + <xsl:with-param name="stringIn"> + <xsl:text>.thumbs/</xsl:text><xsl:apply-templates select="ancestor::folder" mode="getpath" /><xsl:value-of select="@file" /> + </xsl:with-param> + <xsl:with-param name="charsIn" select="' '"/> + <xsl:with-param name="charsOut" select="'%20'"/> + </xsl:call-template> + </xsl:variable> + + <div class="thumbnail"> + <xsl:attribute name="id"><xsl:value-of select="@id" /></xsl:attribute> + <xsl:if test="@id = $selectedID"> + <xsl:attribute name="class">thumbnail selected</xsl:attribute> + </xsl:if> + <span class="image"> + <a> + <xsl:attribute name="onclick">showImage('<xsl:value-of select="@id" />'); return false;</xsl:attribute> + <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> + <img> + <xsl:attribute name="alt"><xsl:value-of select="@file" /></xsl:attribute> + <xsl:attribute name="src"><xsl:value-of select="$path" /></xsl:attribute> + </img> + </a> + </span> + <span class="name"><xsl:value-of select="@file" /></span> + </div> + </xsl:template> + + + <xsl:template match="layout" mode="post"> + <xsl:variable name="folder"> + <xsl:choose> + <xsl:when test="count(//folder[@id = $post_id]) = 1">1</xsl:when> + <xsl:when test="@id = $post_id">2</xsl:when> + <xsl:otherwise>0</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + + <xsl:apply-templates select="themes" /> + + <xsl:choose> + <!-- the passed in ID is an image --> + <xsl:when test="$folder = 0"> + <xsl:apply-templates select="//image[@id = $post_id]" mode="post" /> + </xsl:when> + + <!-- the passed in ID is an folder --> + <xsl:when test="$folder = 1"> + <xsl:apply-templates select="//folder[@id = $post_id]" mode="post" /> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template match="folder" mode="post"> + <div id="breadcrumbtrail"> + <xsl:apply-templates select="self::*" mode="breadcrumbtrail" /> + </div> + <div id="albums"> + <div id="selectedalbum"> + <xsl:apply-templates select="folder"/> + <xsl:apply-templates select="image"/> + </div> + </div> + </xsl:template> + + <xsl:template match="folder" mode="breadcrumbtrail"> + <xsl:if test="parent::folder"> + <xsl:apply-templates select="parent::folder" mode="breadcrumbtrail" /> + </xsl:if> + + <xsl:variable name="currentName"><xsl:value-of select="@name" ... [truncated message content] |
From: <esp...@us...> - 2007-08-18 20:31:36
|
Revision: 46 http://picfinity.svn.sourceforge.net/picfinity/?rev=46&view=rev Author: espadav8 Date: 2007-08-18 13:31:22 -0700 (Sat, 18 Aug 2007) Log Message: ----------- Remove some completely unneeded code from the createExpandedImage function Modified Paths: -------------- trunk/.themes/ajax/ajax.js Modified: trunk/.themes/ajax/ajax.js =================================================================== --- trunk/.themes/ajax/ajax.js 2007-08-18 18:55:16 UTC (rev 45) +++ trunk/.themes/ajax/ajax.js 2007-08-18 20:31:22 UTC (rev 46) @@ -72,12 +72,12 @@ { return xmlDoc.getElementById(elementID); } - + // 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") == elementID) @@ -90,14 +90,14 @@ } } } - + // this is possibly the worse way, and it's still not supported by Safari 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") == elementID) @@ -105,9 +105,9 @@ return xmlDocFolders[i]; } } - + var xmlDocImages = xmlDoc.getElementsByTagName("image"); - + for (var i = 0; i < xmlDocImages.length; i++) { if (xmlDocImages[i].getAttribute("id") == elementID) @@ -180,7 +180,7 @@ function getNodePath(element, nodePath) { nodePath = (nodePath == undefined) ? '' : nodePath; - + if (element == xmlDoc.documentElement) { return '.' + nodePath; @@ -196,27 +196,27 @@ { var layoutNode = getLayoutNode(elementID); var nodePath = getNodePath(layoutNode); - + var breadcrumbDiv = createBreadcrumbTrail(layoutNode); - + var newAlbumsDiv = document.createElement("div"); newAlbumsDiv.setAttribute("id", "albums"); - + var backButton = document.createElement("div") backButton.setAttribute("id", "backbutton"); - + var selectedDiv = document.createElement("div"); selectedDiv.setAttribute("id", "selectedalbum"); - + var selectedAlbumFolders = getChildNodesByTagName(layoutNode, "folder"); var selectedAlbumImages = getChildNodesByTagName(layoutNode, "image"); - + for (var j = 0; j < selectedAlbumFolders.length; j++) { var subFolderContainer = createSubFolderContainer(selectedAlbumFolders[j]); selectedDiv.appendChild(subFolderContainer); } - + for (var j = 0; j < selectedAlbumImages.length; j++) { var thumbnailContainer = createImageThumbnailContainer(selectedAlbumImages[j]); @@ -224,9 +224,9 @@ } newAlbumsDiv.appendChild(selectedDiv); - + document.getElementById("albums").parentNode.replaceChild(newAlbumsDiv, document.getElementById("albums")); - + IE6navhover() return false; } @@ -241,7 +241,7 @@ { var nodePath = getNodePath(getLayoutNode(element.getAttribute("id"))); var imageChildNodes = getChildNodesByTagName(element, "image"); - + if (imageChildNodes.length > 0) { var imagePath = '.thumbs/' @@ -262,33 +262,33 @@ { var imageNodeID = imageNode.getAttribute("id"); var nodePath = getNodePath(getLayoutNode(imageNodeID)); - + var classes = (optClass == undefined) ? "thumbnail" : "thumbnail " + optClass; - + var albumImageDiv = document.createElement("div"); albumImageDiv.className = classes; albumImageDiv.setAttribute("id", imageNodeID); - + var imageAnchor = document.createElement("a"); imageAnchor.setAttribute("href", "index.php?id=" + imageNodeID); imageAnchor.onclick = function() { showImage(imageNodeID); return false; }; - + var imageSpan = document.createElement("span"); imageSpan.className = "image"; - + var albumImage = document.createElement("img"); var imageThumbPath = '.thumbs/' + nodePath + '/' + imageNode.getAttribute("file"); albumImage.setAttribute("src", imageThumbPath); imageAnchor.appendChild(albumImage); - + var imageNameSpan = document.createElement("span"); imageNameSpan.className = "name"; imageNameSpan.appendChild(document.createTextNode(imageNode.getAttribute("file"))); - + imageSpan.appendChild(imageAnchor) albumImageDiv.appendChild(imageSpan); albumImageDiv.appendChild(imageNameSpan); - + return albumImageDiv; } @@ -296,48 +296,48 @@ { var folderID = folderNode.getAttribute("id"); var nodePath = getNodePath(getLayoutNode(folderID)); - + // create the main folder div var subFolder = document.createElement("div"); subFolder.className = "folder"; subFolder.setAttribute("id", folderID); - + var folderAnchor = document.createElement("a"); folderAnchor.setAttribute("href", "index.php?id=" + folderID); - + // this should allow it to work in IE but makes it harder to follow // in things like FireBug since you can't see the onclick for the divs folderAnchor.onclick = function() { openFolder(folderID); return false; }; - + // create a span for the image var folderImageSpan = document.createElement("span"); folderImageSpan.className = "image"; - + // create the image var folderImage = document.createElement("img"); - var imagePath = checkFolderContents(folderNode); + var imagePath = checkFolderContents(folderNode); folderImage.setAttribute("src", imagePath); folderAnchor.appendChild(folderImage); folderImageSpan.appendChild(folderAnchor); - + // create a span for the folder icon var iconSpan = document.createElement("span"); iconSpan.className = "icon"; - + // create the icon image - var iconImage = document.createElement("img"); + var iconImage = document.createElement("img"); iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); iconSpan.appendChild(iconImage); - + // create a span for the text var textSpan = document.createElement("span"); textSpan.className = "name"; - + // create the text var textContents = folderNode.getAttribute("name"); var noImages = getChildNodesByTagName(folderNode, "image").length; var noFolders = getChildNodesByTagName(folderNode, "folder").length; - + if ((noImages || noFolders) > 0) { textContents += " ("; @@ -348,59 +348,59 @@ var textNode = document.createTextNode(textContents); textSpan.appendChild(textNode); - + // appened them all in order subFolder.appendChild(folderImageSpan); subFolder.appendChild(iconSpan); subFolder.appendChild(textSpan); - + return subFolder; } function createExpandedImage(imageNode) { var nodePath = getNodePath(getLayoutNode(imageNode.getAttribute("id"))); - + var expandedImageDiv = document.createElement("div"); expandedImageDiv.setAttribute("id", "expandedimage"); - + var linkToDiv = document.createElement("div"); linkToDiv.setAttribute("id", "linktospan"); linkToDiv.style.display = "none"; - + var linkToAnchor = document.createElement("a"); linkToAnchor.setAttribute("href", "index.php?id=" + imageNode.getAttribute("id")) linkToAnchor.appendChild(document.createTextNode("Link to this image")); linkToDiv.appendChild(linkToAnchor); - + var loadingDiv = document.createElement("div"); loadingDiv.setAttribute("id", "loadingspan"); loadingDiv.style.display = "block"; loadingDiv.appendChild(document.createTextNode("Loading image")); - + var imageAnchor = document.createElement("a"); imageAnchor.onclick = function() { closeImage(); return false }; imageAnchor.href = "#"; - + var imageDiv = document.createElement("div"); imageDiv.setAttribute("id", "expandedimagespan"); imageDiv.style.display = "none"; - + var albumImage = document.createElement("img"); var imageThumbPath = nodePath + '/' + imageNode.getAttribute("file"); albumImage.setAttribute("src", imageThumbPath); imageAnchor.appendChild(albumImage); imageDiv.appendChild(imageAnchor); - + var imageNameDiv = document.createElement("div"); imageNameDiv.className = "name"; imageNameDiv.appendChild(document.createTextNode(imageNode.getAttribute("file"))); - + expandedImageDiv.appendChild(linkToDiv); expandedImageDiv.appendChild(loadingDiv); expandedImageDiv.appendChild(imageDiv); expandedImageDiv.appendChild(imageNameDiv); - + var expandedImage = new Image(); expandedImage.onload = function() { @@ -409,7 +409,7 @@ linkToDiv.style.display = ""; }; expandedImage.src = imageThumbPath; - + return expandedImageDiv; } @@ -417,20 +417,20 @@ { var breadcrumbTrailDiv = document.createElement("div"); breadcrumbTrailDiv.setAttribute("id", "breadcrumbtrail"); - + var nodePath = getNodePath(element) + element.getAttribute("name"); - + var paths = nodePath.split('/'); var currentPath = ''; - + for (var i = 0; i < paths.length - 1; i++) { currentPath += paths[i] + '/'; - + var breadcrumbMenu = createBreadcrumbMenu(currentPath, paths[i + 1]); breadcrumbTrailDiv.appendChild(breadcrumbMenu); } - + if (document.getElementById("breadcrumbtrail")) { document.getElementById("albums").parentNode.replaceChild(breadcrumbTrailDiv, document.getElementById("breadcrumbtrail")); @@ -445,54 +445,54 @@ { var breadcrumbEntry = document.createElement("ul"); breadcrumbEntry.className = "trailentry"; - + var menuLi = document.createElement("li"); menuLi.className = "currentfolder"; - + var dropMenu = document.createElement("ul"); menuLi.appendChild(dropMenu); - + var layoutNode = selectLayoutNodeFromPath(path); - + for (var i = 0; i < layoutNode.childNodes.length; i++) { var node = layoutNode.childNodes[i]; - + // these will all be hidden until the :hover if (node.nodeName == "folder") { var dropMenuItem = createBreadcrumbItem(node, currentFolder); dropMenu.appendChild(dropMenuItem); } - + // this is for the current folder if ((node.nodeName == "folder") && (node.getAttribute("name") == currentFolder)) { var dropMenuAnchor = document.createElement("a"); dropMenuAnchor.href = "index.php?id=" + dropMenuItem.getAttribute("id"); - + var nameSpan = document.createElement("span"); nameSpan.className = "name"; nameSpan.appendChild(document.createTextNode(node.getAttribute("name"))); - + // create a span for the folder icon var iconSpan = document.createElement("span"); iconSpan.className = "icon"; - + // create the icon image - var iconImage = document.createElement("img"); + var iconImage = document.createElement("img"); iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); iconSpan.appendChild(iconImage); - + dropMenuAnchor.appendChild(nameSpan); dropMenuAnchor.appendChild(nameSpan); menuLi.insertBefore(dropMenuAnchor, menuLi.firstChild); - + breadcrumbEntry.appendChild(menuLi); } } - + return breadcrumbEntry; } @@ -500,39 +500,39 @@ { var dropMenuItem = document.createElement("li"); dropMenuItem.setAttribute("id", node.getAttribute("id")); - + var dropMenuAnchor = document.createElement("a"); dropMenuAnchor.href = "index.php?id=" + dropMenuItem.getAttribute("id"); dropMenuAnchor.onclick = function() { openFolder(dropMenuItem.getAttribute("id")); return false; }; - + if (node.hasChildNodes()) { // create a span for the folder icon var iconSpan = document.createElement("span"); iconSpan.className = "icon"; - + // create the icon image - var iconImage = document.createElement("img"); + var iconImage = document.createElement("img"); iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); iconSpan.appendChild(iconImage); - + dropMenuAnchor.appendChild(iconSpan); } else { dropMenuItem.setAttribute("class", "empty"); - + // create a span for the folder icon var iconSpan = document.createElement("span"); iconSpan.className = "icon"; - + // create the icon image - var iconImage = document.createElement("img"); + var iconImage = document.createElement("img"); iconImage.setAttribute("src", ".themes/ajax/emptyicon.png"); iconSpan.appendChild(iconImage); dropMenuItem.appendChild(iconSpan); } - + // we do this so we can show the user the currently selected folder in the drop down if (node.getAttribute("name") == currentFolder) { @@ -542,12 +542,12 @@ { dropMenuItem.className = "menuentry"; } - + var nameSpan = document.createElement("span"); nameSpan.className = "name"; nameSpan.appendChild(document.createTextNode(node.getAttribute("name"))); dropMenuAnchor.appendChild(nameSpan); - + dropMenuItem.appendChild(dropMenuAnchor); return dropMenuItem; } @@ -555,7 +555,7 @@ function selectLayoutNodeFromPath(path, node) { node = (node == undefined) ? xmlDoc.documentElement : node; - + if(path == "./") { return xmlDoc.documentElement; @@ -565,7 +565,7 @@ path = (path.indexOf("./") == 0) ? path.substring(2) : path; var currentPath = path.split('/')[0]; var nodes = getChildNodesByTagName(node, "folder"); - + for (var i = 0; i < nodes.length; i++) { if ((nodes[i].getAttribute("name") == currentPath)) @@ -586,41 +586,33 @@ function showImage(imageID) { - var siblingNodes = getChildNodesByTagName(getLayoutNode(imageID).parentNode, "image"); - - for (var i = 0; i < siblingNodes.length; i++) + var expandedImage = createExpandedImage(getLayoutNode(imageID)); + + if (document.getElementById("expandedimage")) { - if (siblingNodes[i].getAttribute("id") == imageID) - { - var expandedImage = createExpandedImage(siblingNodes[i]); - - if (document.getElementById("expandedimage")) - { - document.getElementById("expandedimage").parentNode.replaceChild(expandedImage, document.getElementById("expandedimage")); - } - else - { - document.getElementById("selectedalbum").parentNode.insertBefore(expandedImage, document.getElementById("selectedalbum")); - } - } + document.getElementById("expandedimage").parentNode.replaceChild(expandedImage, document.getElementById("expandedimage")); } - + else + { + document.getElementById("selectedalbum").parentNode.insertBefore(expandedImage, document.getElementById("selectedalbum")); + } + var lastSelectedImage = getElementsByClassName("selected", "div", document); - + if (lastSelectedImage) { lastSelectedImage[0].className = "thumbnail"; } - + document.getElementById(imageID).className += " selected"; } function closeImage() { document.getElementById("expandedimage").parentNode.removeChild(document.getElementById("expandedimage")); - + var lastSelectedImage = getElementsByClassName("selected", "div", document); - + if (lastSelectedImage) lastSelectedImage[0].className = "thumbnail"; } @@ -632,31 +624,31 @@ function getCookie(name) { var start = document.cookie.indexOf( name + "=" ); var len = start + name.length + 1; - + if ((!start) && (name != document.cookie.substring(0, name.length))) { return null; } - + if (start == -1) return null; - + var end = document.cookie.indexOf(';', len); - + if (end == -1) end = document.cookie.length; - + return unescape(document.cookie.substring(len, end)); } function setCookie(name, value, expires, path, domain, secure) { var today = new Date(); today.setTime(today.getTime()); - + if (expires) { expires = expires * 1000 * 60 * 60 * 24; } - + var expires_date = new Date(today.getTime() + (expires)); - + document.cookie = name + '=' + escape(value) + ((expires) ? ';expires='+expires_date.toGMTString() : '') + //expires.toGMTString() ((path) ? ';path=' + path : '') + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-18 18:55:14
|
Revision: 45 http://picfinity.svn.sourceforge.net/picfinity/?rev=45&view=rev Author: espadav8 Date: 2007-08-18 11:55:16 -0700 (Sat, 18 Aug 2007) Log Message: ----------- Copy the ajax theme to db (and remove the background image from it) Import an empty gallery.xml file Added Paths: ----------- trunk/.themes/db/ trunk/gallery.xml Removed Paths: ------------- trunk/.themes/db/background.gif Copied: trunk/.themes/db (from rev 43, trunk/.themes/ajax) Deleted: trunk/.themes/db/background.gif =================================================================== (Binary files differ) Added: trunk/gallery.xml =================================================================== --- trunk/gallery.xml (rev 0) +++ trunk/gallery.xml 2007-08-18 18:55:16 UTC (rev 45) @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<!DOCTYPE layout PUBLIC "-//picfinity//Gallery Layout//EN" "http://www.espadav8.co.uk/gallery/gallery.dtd"> +<layout id="id5058f1af8388633f609cadb75a75dc9d" name=""> +</layout> Property changes on: trunk/gallery.xml ___________________________________________________________________ Name: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-18 16:07:11
|
Revision: 44 http://picfinity.svn.sourceforge.net/picfinity/?rev=44&view=rev Author: espadav8 Date: 2007-08-18 09:07:11 -0700 (Sat, 18 Aug 2007) Log Message: ----------- Switch the test around for the .themes folder (saves calling is_dir many times) Modified Paths: -------------- trunk/index.php Modified: trunk/index.php =================================================================== --- trunk/index.php 2007-08-16 12:58:09 UTC (rev 43) +++ trunk/index.php 2007-08-18 16:07:11 UTC (rev 44) @@ -123,8 +123,8 @@ while (list(,$folder_entry) = each($folder_contents)) { // if it's a folder and the path of it is ./.themes then create the list of themes - if ((is_dir($folder . '/' . $folder_entry)) && - (($folder . '/' . $folder_entry) == "./.themes") && + if ((($folder . '/' . $folder_entry) == "./.themes") && + (is_dir('./themes')) && $enable_themes) { if ($use_pear) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-16 12:58:07
|
Revision: 43 http://picfinity.svn.sourceforge.net/picfinity/?rev=43&view=rev Author: espadav8 Date: 2007-08-16 05:58:09 -0700 (Thu, 16 Aug 2007) Log Message: ----------- Tag v0.04 Added Paths: ----------- tags/0.04/ Copied: tags/0.04 (from rev 42, trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-16 12:57:27
|
Revision: 42 http://picfinity.svn.sourceforge.net/picfinity/?rev=42&view=rev Author: espadav8 Date: 2007-08-16 05:57:30 -0700 (Thu, 16 Aug 2007) Log Message: ----------- Update the XSL to produce a suckerfish dropdown Clean parts of the CSS and ann the new styles for the suckerfish Add some JS for IE6 dropdown Create the dropdown correctly in the JS Create the expanded image correctly in the JS Modified Paths: -------------- trunk/.themes/ajax/ajax.css trunk/.themes/ajax/ajax.js trunk/.themes/ajax/ajax.xsl Modified: trunk/.themes/ajax/ajax.css =================================================================== --- trunk/.themes/ajax/ajax.css 2007-08-15 21:26:41 UTC (rev 41) +++ trunk/.themes/ajax/ajax.css 2007-08-16 12:57:30 UTC (rev 42) @@ -5,6 +5,11 @@ border: 0; } +a +{ + text-decoration: none; +} + img { display: block; @@ -30,12 +35,13 @@ #themes { position: absolute; - top: 20px; - right: 20px; + top: 10px; + right: 10px; } #selectedalbum { + margin-top: 5px; clear: both; float: left; } @@ -58,7 +64,7 @@ width: 150px; display: block; float: left; - margin: 5px 5px 0 0; + margin: 0 5px 5px 0; border: 1px solid #ccc; position: relative; } @@ -91,13 +97,8 @@ /* --- expanded image --- */ -#linktospan -{ - position: relative; -} #linktospan a { - text-decoration: none; padding: 4px 0; } @@ -113,6 +114,8 @@ { border: 1px solid #ccc; float: left; + clear: both; + margin-top: 5px; } #expandedimagespan @@ -131,103 +134,88 @@ /* --- hover actions --- */ a:hover, -#breadcrumbtrail ul li:hover +#breadcrumbtrail ul li a:hover { cursor: pointer; } -/* --- breadcrumb --- */ +/*** BACKGROUND ***/ -#breadcrumbtrail +html, +.selected a, +#linktospan a:hover, +#breadcrumbtrail ul li a:hover, +#breadcrumbtrail ul li ul li.selected { - display: block; - margin: 0 0 10px 0; - height: 24px; + background-color: #303030; } -#breadcrumbtrail ul -{ - color: #fff; - font-weight: bold; - list-style: none; - display: block; - float: left; - width: 150px; - margin: 0 5px 0 0; - border: 1px solid #ccc; -} - +.folder, +.thumbnail, +#expandedimage, #breadcrumbtrail ul li { - height: 18px; - padding: 3px 0 3px 5px; - width: 145px; + background-color: #505050; } -#breadcrumbtrail ul li ul +#linktospan a, +.image a:hover, +#breadcrumbtrail ul li ul li a:hover { - display: none; - margin: 21px 0 -1px -6px; - position: fixed; - z-index: 10; + background-color: #707070; } -#breadcrumbtrail ul li ul li -{ - clear: left; -} -#breadcrumbtrail ul li .name +#loadingspan { - float: left; - border: none; - text-align: left; - padding: 3px 0 3px 5px; + background-color: #cc0022; } -#breadcrumbtrail ul li .icon + +/*** BREADCRUMB TRAIL ***/ + +#breadcrumbtrail ul { - position: static; - float: left; - margin: -3px 0 0 0; + list-style: none; } -#breadcrumbtrail ul li:hover ul +#breadcrumbtrail a { display: block; + width: 150px; } - -/*** BACKGROUND ***/ - -html, -.selected a, -#linktospan a:hover, -#breadcrumbtrail ul li:hover, -#breadcrumbtrail ul li ul li.selected +#breadcrumbtrail img { - background-color: #303030; + display: none; } -.folder, -.thumbnail, -#expandedimage, -#breadcrumbtrail ul +#breadcrumbtrail ul li { - background-color: #505050; + margin-right: 5px; + float: left; + width: 150px; + border: 1px solid #ccc; } - -#linktospan a, -.image a:hover, -#breadcrumbtrail ul li ul li:hover +#breadcrumbtrail ul li ul { - background-color: #707070; + border: 1px solid #ccc; + left: -999em; + position: absolute; + width: 150px; + z-index: 10; } -#loadingspan +#breadcrumbtrail ul li ul li { - background-color: #cc0022; + border: none; } +#breadcrumbtrail ul li.over ul, +#breadcrumbtrail ul li:hover ul +{ + left: auto; + margin-left: -1px; +} \ No newline at end of file Modified: trunk/.themes/ajax/ajax.js =================================================================== --- trunk/.themes/ajax/ajax.js 2007-08-15 21:26:41 UTC (rev 41) +++ trunk/.themes/ajax/ajax.js 2007-08-16 12:57:30 UTC (rev 42) @@ -1,7 +1,27 @@ addEvent(window, 'load', importLayout, false); +addEvent(window, 'load', IE6navhover, false); var xmlDoc; +function IE6navhover() +{ + if ((window.attachEvent) && (document.getElementById("breadcrumbtrail") != null)) + { + var sfEls = document.getElementById("breadcrumbtrail").getElementsByTagName("LI"); + for (var i=0; i<sfEls.length; i++) + { + sfEls[i].onmouseover = function() + { + this.className += " over"; + } + sfEls[i].onmouseout = function() + { + this.className = this.className.replace(new RegExp(" over\\b"), ""); + } + } + } +} + function importLayout() { if (window.XMLHttpRequest) @@ -177,7 +197,7 @@ var layoutNode = getLayoutNode(elementID); var nodePath = getNodePath(layoutNode); - var breadcrumbDiv = createBreadcrumbTrail(layoutNode);; + var breadcrumbDiv = createBreadcrumbTrail(layoutNode); var newAlbumsDiv = document.createElement("div"); newAlbumsDiv.setAttribute("id", "albums"); @@ -207,6 +227,7 @@ document.getElementById("albums").parentNode.replaceChild(newAlbumsDiv, document.getElementById("albums")); + IE6navhover() return false; } @@ -340,56 +361,56 @@ { var nodePath = getNodePath(getLayoutNode(imageNode.getAttribute("id"))); - var expandedImageSpan = document.createElement("span"); - expandedImageSpan.setAttribute("id", "expandedimage"); + var expandedImageDiv = document.createElement("div"); + expandedImageDiv.setAttribute("id", "expandedimage"); - var linkToSpan = document.createElement("span"); - linkToSpan.setAttribute("id", "linktospan"); - linkToSpan.style.display = "none"; + var linkToDiv = document.createElement("div"); + linkToDiv.setAttribute("id", "linktospan"); + linkToDiv.style.display = "none"; var linkToAnchor = document.createElement("a"); linkToAnchor.setAttribute("href", "index.php?id=" + imageNode.getAttribute("id")) linkToAnchor.appendChild(document.createTextNode("Link to this image")); - linkToSpan.appendChild(linkToAnchor); + linkToDiv.appendChild(linkToAnchor); - var loadingSpan = document.createElement("span"); - loadingSpan.setAttribute("id", "loadingspan"); - loadingSpan.style.display = "block"; - loadingSpan.appendChild(document.createTextNode("Loading image")); + var loadingDiv = document.createElement("div"); + loadingDiv.setAttribute("id", "loadingspan"); + loadingDiv.style.display = "block"; + loadingDiv.appendChild(document.createTextNode("Loading image")); var imageAnchor = document.createElement("a"); imageAnchor.onclick = function() { closeImage(); return false }; imageAnchor.href = "#"; - var imageSpan = document.createElement("span"); - imageSpan.setAttribute("id", "expandedimagespan"); - imageSpan.style.display = "none"; + var imageDiv = document.createElement("div"); + imageDiv.setAttribute("id", "expandedimagespan"); + imageDiv.style.display = "none"; var albumImage = document.createElement("img"); var imageThumbPath = nodePath + '/' + imageNode.getAttribute("file"); albumImage.setAttribute("src", imageThumbPath); imageAnchor.appendChild(albumImage); - imageSpan.appendChild(imageAnchor); + imageDiv.appendChild(imageAnchor); - var imageNameSpan = document.createElement("span"); - imageNameSpan.className = "name"; - imageNameSpan.appendChild(document.createTextNode(imageNode.getAttribute("file"))); + var imageNameDiv = document.createElement("div"); + imageNameDiv.className = "name"; + imageNameDiv.appendChild(document.createTextNode(imageNode.getAttribute("file"))); - expandedImageSpan.appendChild(linkToSpan); - expandedImageSpan.appendChild(loadingSpan); - expandedImageSpan.appendChild(imageSpan); - expandedImageSpan.appendChild(imageNameSpan); + expandedImageDiv.appendChild(linkToDiv); + expandedImageDiv.appendChild(loadingDiv); + expandedImageDiv.appendChild(imageDiv); + expandedImageDiv.appendChild(imageNameDiv); var expandedImage = new Image(); expandedImage.onload = function() { - loadingSpan.style.display = "none"; - imageSpan.style.display = "block"; - linkToSpan.style.display = "block"; + loadingDiv.style.display = "none"; + imageDiv.style.display = ""; + linkToDiv.style.display = ""; }; expandedImage.src = imageThumbPath; - return expandedImageSpan; + return expandedImageDiv; } function createBreadcrumbTrail(element) @@ -447,6 +468,9 @@ // this is for the current folder if ((node.nodeName == "folder") && (node.getAttribute("name") == currentFolder)) { + var dropMenuAnchor = document.createElement("a"); + dropMenuAnchor.href = "index.php?id=" + dropMenuItem.getAttribute("id"); + var nameSpan = document.createElement("span"); nameSpan.className = "name"; nameSpan.appendChild(document.createTextNode(node.getAttribute("name"))); @@ -459,9 +483,11 @@ var iconImage = document.createElement("img"); iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); iconSpan.appendChild(iconImage); + + dropMenuAnchor.appendChild(nameSpan); + dropMenuAnchor.appendChild(nameSpan); - menuLi.insertBefore(nameSpan, menuLi.firstChild); - menuLi.insertBefore(iconSpan, menuLi.firstChild); + menuLi.insertBefore(dropMenuAnchor, menuLi.firstChild); breadcrumbEntry.appendChild(menuLi); } @@ -475,10 +501,12 @@ var dropMenuItem = document.createElement("li"); dropMenuItem.setAttribute("id", node.getAttribute("id")); + var dropMenuAnchor = document.createElement("a"); + dropMenuAnchor.href = "index.php?id=" + dropMenuItem.getAttribute("id"); + dropMenuAnchor.onclick = function() { openFolder(dropMenuItem.getAttribute("id")); return false; }; + if (node.hasChildNodes()) { - dropMenuItem.onclick = function() { openFolder(dropMenuItem.getAttribute("id")); return false; }; - // create a span for the folder icon var iconSpan = document.createElement("span"); iconSpan.className = "icon"; @@ -487,11 +515,12 @@ var iconImage = document.createElement("img"); iconImage.setAttribute("src", ".themes/ajax/foldericon.png"); iconSpan.appendChild(iconImage); - dropMenuItem.appendChild(iconSpan); + + dropMenuAnchor.appendChild(iconSpan); } else { - dropMenuItem.setAttribute("class", "folder empty"); + dropMenuItem.setAttribute("class", "empty"); // create a span for the folder icon var iconSpan = document.createElement("span"); @@ -517,8 +546,9 @@ var nameSpan = document.createElement("span"); nameSpan.className = "name"; nameSpan.appendChild(document.createTextNode(node.getAttribute("name"))); - dropMenuItem.appendChild(nameSpan); + dropMenuAnchor.appendChild(nameSpan); + dropMenuItem.appendChild(dropMenuAnchor); return dropMenuItem; } Modified: trunk/.themes/ajax/ajax.xsl =================================================================== --- trunk/.themes/ajax/ajax.xsl 2007-08-15 21:26:41 UTC (rev 41) +++ trunk/.themes/ajax/ajax.xsl 2007-08-16 12:57:30 UTC (rev 42) @@ -223,23 +223,39 @@ <xsl:apply-templates select="parent::folder" mode="breadcrumbtrail" /> </xsl:if> + <xsl:variable name="currentName"><xsl:value-of select="@name" /></xsl:variable> + <ul class="trailentry"> <li class="currentfolder"> - <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> - <span class="icon"> - <img alt="Folder Icon"> - <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/foldericon.png')" /></xsl:attribute> - </img> - </span> - <span class="name"><xsl:value-of select="@name" /></span> + <a> + <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> + <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> + <span class="icon"> + <img alt="Folder Icon"> + <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/foldericon.png')" /></xsl:attribute> + </img> + </span> + <span class="name"><xsl:value-of select="@name" /></span> + </a> <ul> <xsl:for-each select="parent::*/folder"> - <li class="menuentry"> - <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> - <span class="icon"> - <img src=".themes/ajax/foldericon.png" alt="Folder Icon" /> - </span> - <span class="name"><xsl:value-of select="@name" /></span> + <li> + <xsl:choose> + <xsl:when test="$currentName = @name"> + <xsl:attribute name="class">menuentry selected</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="class">menuentry</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <a> + <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> + <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> + <span class="icon"> + <img src=".themes/ajax/foldericon.png" alt="Folder Icon" /> + </span> + <span class="name"><xsl:value-of select="@name" /></span> + </a> </li> </xsl:for-each> </ul> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-15 21:26:38
|
Revision: 41 http://picfinity.svn.sourceforge.net/picfinity/?rev=41&view=rev Author: espadav8 Date: 2007-08-15 14:26:41 -0700 (Wed, 15 Aug 2007) Log Message: ----------- Add a link image (20x20) Add the CSS to position the link image and the XSL to add it to the XHTML Also change the 'Link to this image' background and :hover to make it stand out a bit better Modified Paths: -------------- trunk/.themes/ajax/ajax.css trunk/.themes/ajax/ajax.xsl Added Paths: ----------- trunk/.themes/ajax/link.png Modified: trunk/.themes/ajax/ajax.css =================================================================== --- trunk/.themes/ajax/ajax.css 2007-08-14 23:23:49 UTC (rev 40) +++ trunk/.themes/ajax/ajax.css 2007-08-15 21:26:41 UTC (rev 41) @@ -91,12 +91,24 @@ /* --- expanded image --- */ +#linktospan +{ + position: relative; +} #linktospan a { text-decoration: none; + padding: 4px 0; } +#linktospan a img +{ + position: absolute; + top: 2px; + left: 3px; +} + #expandedimage { border: 1px solid #ccc; @@ -191,6 +203,7 @@ html, .selected a, +#linktospan a:hover, #breadcrumbtrail ul li:hover, #breadcrumbtrail ul li ul li.selected { @@ -205,8 +218,8 @@ background-color: #505050; } +#linktospan a, .image a:hover, -#linktospan a:hover, #breadcrumbtrail ul li ul li:hover { background-color: #707070; Modified: trunk/.themes/ajax/ajax.xsl =================================================================== --- trunk/.themes/ajax/ajax.xsl 2007-08-14 23:23:49 UTC (rev 40) +++ trunk/.themes/ajax/ajax.xsl 2007-08-15 21:26:41 UTC (rev 41) @@ -227,7 +227,9 @@ <li class="currentfolder"> <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> <span class="icon"> - <img src=".themes/ajax/foldericon.png" alt="Folder Icon" /> + <img alt="Folder Icon"> + <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/foldericon.png')" /></xsl:attribute> + </img> </span> <span class="name"><xsl:value-of select="@name" /></span> <ul> @@ -266,6 +268,11 @@ <a> <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> <xsl:text>Link to this image</xsl:text> +<!-- + <img alt="Link to this image"> + <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/link.png')" /></xsl:attribute> + </img> +--> </a> </div> <div id="expandedimagespan"> Added: trunk/.themes/ajax/link.png =================================================================== (Binary files differ) Property changes on: trunk/.themes/ajax/link.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-14 23:23:46
|
Revision: 40 http://picfinity.svn.sourceforge.net/picfinity/?rev=40&view=rev Author: espadav8 Date: 2007-08-14 16:23:49 -0700 (Tue, 14 Aug 2007) Log Message: ----------- Tagging 0.03 release Added Paths: ----------- tags/0.03/ Copied: tags/0.03 (from rev 39, trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-14 23:06:31
|
Revision: 39 http://picfinity.svn.sourceforge.net/picfinity/?rev=39&view=rev Author: espadav8 Date: 2007-08-14 16:06:33 -0700 (Tue, 14 Aug 2007) Log Message: ----------- Add a fieldset around the theme selector and button For all images replace ' ' with '%20' and include the alt attributes Convert the <spans> with divs for the expanded image (needs to be updated in the JS as well Set font sizes in the CSS (using ems) Clean up a lot of the CSS Add the onload before setting the src for the Image() loader Don'y need to get the element in the onload function These 2 changes allow IE and Opera to open an image if it's been stored in the cache Modified Paths: -------------- trunk/.themes/ajax/ajax.css trunk/.themes/ajax/ajax.js trunk/.themes/ajax/ajax.xsl Modified: trunk/.themes/ajax/ajax.css =================================================================== --- trunk/.themes/ajax/ajax.css 2007-08-14 21:12:12 UTC (rev 38) +++ trunk/.themes/ajax/ajax.css 2007-08-14 23:06:33 UTC (rev 39) @@ -18,6 +18,7 @@ h1, h1 a { + font-size: 1.2em; text-align: center; color: #d0d0d0; } @@ -39,24 +40,6 @@ float: left; } -#expandedimage -{ - padding: 5px 5px 0 5px; - border: 1px solid #ccc; - clear: both; - float: left; -} - -#loadingspan -{ - text-align: center; - color: #fff; - font-weight: bold; - margin: -5px; - padding: 5px; -} - - /* --- folders --- */ .image a @@ -65,6 +48,7 @@ width: 100px; display: block; padding: 14px 25px; + border-bottom: 1px solid #ccc; } .folder, @@ -92,37 +76,46 @@ /* --- image names --- */ -.name +.name, +#loadingspan, +#linktospan a { color: #f0f0f0; font-weight: bold; - border-top: 1px solid #ccc; padding: 3px 0; text-align: center; display: block; - height: 16px; overflow: hidden; + font-size: 0.7em; } -#expandedimage span.name +/* --- expanded image --- */ + +#linktospan a { - margin: 5px -5px 0 -5px; + text-decoration: none; } -/* --- image link --- */ -#linktospan a +#expandedimage { - color: #f0f0f0; - font-weight: bold; + border: 1px solid #ccc; + float: left; +} + +#expandedimagespan +{ + border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; - padding: 3px 0 3px 0; - text-align: center; - display: block; - text-decoration: none; - margin: -5px -5px 5px -5px; + padding: 5px; } +#loadingspan +{ + padding: 3px 5px; + border-bottom: 1px solid #ccc; +} + /* --- hover actions --- */ a:hover, @@ -163,7 +156,7 @@ #breadcrumbtrail ul li ul { display: none; - margin: 22px 0 -1px -6px; + margin: 21px 0 -1px -6px; position: fixed; z-index: 10; } @@ -201,7 +194,7 @@ #breadcrumbtrail ul li:hover, #breadcrumbtrail ul li ul li.selected { - background: #303030; + background-color: #303030; } .folder, @@ -209,19 +202,19 @@ #expandedimage, #breadcrumbtrail ul { - background: #505050; + background-color: #505050; } .image a:hover, #linktospan a:hover, #breadcrumbtrail ul li ul li:hover { - background: #707070; + background-color: #707070; } #loadingspan { - background: #cc0022; + background-color: #cc0022; } Modified: trunk/.themes/ajax/ajax.js =================================================================== --- trunk/.themes/ajax/ajax.js 2007-08-14 21:12:12 UTC (rev 38) +++ trunk/.themes/ajax/ajax.js 2007-08-14 23:06:33 UTC (rev 39) @@ -375,25 +375,20 @@ imageNameSpan.className = "name"; imageNameSpan.appendChild(document.createTextNode(imageNode.getAttribute("file"))); + expandedImageSpan.appendChild(linkToSpan); + expandedImageSpan.appendChild(loadingSpan); + expandedImageSpan.appendChild(imageSpan); + expandedImageSpan.appendChild(imageNameSpan); + var expandedImage = new Image(); - expandedImage.src = imageThumbPath; expandedImage.onload = function() { - var loadingSpan = document.getElementById("loadingspan"); loadingSpan.style.display = "none"; - - var imageSpan = document.getElementById("expandedimagespan"); imageSpan.style.display = "block"; - - var linkToSpan = document.getElementById("linktospan"); linkToSpan.style.display = "block"; - } + }; + expandedImage.src = imageThumbPath; - expandedImageSpan.appendChild(linkToSpan); - expandedImageSpan.appendChild(loadingSpan); - expandedImageSpan.appendChild(imageSpan); - expandedImageSpan.appendChild(imageNameSpan); - return expandedImageSpan; } Modified: trunk/.themes/ajax/ajax.xsl =================================================================== --- trunk/.themes/ajax/ajax.xsl 2007-08-14 21:12:12 UTC (rev 38) +++ trunk/.themes/ajax/ajax.xsl 2007-08-14 23:06:33 UTC (rev 39) @@ -58,11 +58,13 @@ <xsl:template match="themes"> <div id="themes"> <form id="themeform" action="index.php" method="post"> - <select name="theme" onchange="submit();"> - <option value="">Please choose a theme</option> - <xsl:apply-templates select="theme" /> - </select> - <button type="submit">Go</button> + <fieldset> + <select name="theme" onchange="submit();"> + <option value="">Please choose a theme</option> + <xsl:apply-templates select="theme" /> + </select> + <button type="submit">Go</button> + </fieldset> </form> </div> </xsl:template> @@ -97,23 +99,27 @@ <xsl:choose> <xsl:when test="count(image) > 0"> <xsl:variable name="path"> - <xsl:apply-templates select="ancestor::folder" mode="getpath" /> + <xsl:call-template name="replaceCharsInString"> + <xsl:with-param name="stringIn"> + <xsl:text>.thumbs/</xsl:text><xsl:apply-templates select="ancestor::folder" mode="getpath" /><xsl:value-of select="concat(@name, '/', image[1]/@file)" /> + </xsl:with-param> + <xsl:with-param name="charsIn" select="' '"/> + <xsl:with-param name="charsOut" select="'%20'"/> + </xsl:call-template> </xsl:variable> - <img> - <xsl:attribute name="src"><xsl:value-of select="concat('.thumbs/' , $path, @name, '/', image[1]/@file)" /></xsl:attribute> + <img alt="Sample Image"> + <xsl:attribute name="src"><xsl:value-of select="$path" /></xsl:attribute> <xsl:attribute name="alt"><xsl:value-of select="image[1]/@file" /></xsl:attribute> </img> </xsl:when> <xsl:when test="count(folder) > 0"> - <img> + <img alt="Image Folder"> <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/folder.png')" /></xsl:attribute> - <xsl:attribute name="alt">Image Folder</xsl:attribute> </img> </xsl:when> <xsl:otherwise> - <img> + <img alt="Empty Folder"> <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/empty.png')" /></xsl:attribute> - <xsl:attribute name="alt">Empty Folder</xsl:attribute> </img> </xsl:otherwise> </xsl:choose> @@ -121,9 +127,8 @@ </span> <xsl:if test="count(folder) > 0 or count(image) > 0"> <span class="icon"> - <img> + <img alt="Folder Icon"> <xsl:attribute name="src"><xsl:value-of select="concat('.themes/', $themename, '/foldericon.png')" /></xsl:attribute> - <xsl:attribute name="alt">Folder Icon</xsl:attribute> </img> </span> </xsl:if> @@ -147,7 +152,13 @@ <xsl:template match="image"> <xsl:param name="selectedID">0</xsl:param> <xsl:variable name="path"> - <xsl:apply-templates select="ancestor::folder" mode="getpath" /> + <xsl:call-template name="replaceCharsInString"> + <xsl:with-param name="stringIn"> + <xsl:text>.thumbs/</xsl:text><xsl:apply-templates select="ancestor::folder" mode="getpath" /><xsl:value-of select="@file" /> + </xsl:with-param> + <xsl:with-param name="charsIn" select="' '"/> + <xsl:with-param name="charsOut" select="'%20'"/> + </xsl:call-template> </xsl:variable> <div class="thumbnail"> @@ -161,7 +172,7 @@ <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> <img> <xsl:attribute name="alt"><xsl:value-of select="@file" /></xsl:attribute> - <xsl:attribute name="src"><xsl:value-of select="concat('./.thumbs/', $path, @file)" /></xsl:attribute> + <xsl:attribute name="src"><xsl:value-of select="$path" /></xsl:attribute> </img> </a> </span> @@ -216,7 +227,7 @@ <li class="currentfolder"> <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> <span class="icon"> - <img src=".themes/ajax/foldericon.png" /> + <img src=".themes/ajax/foldericon.png" alt="Folder Icon" /> </span> <span class="name"><xsl:value-of select="@name" /></span> <ul> @@ -224,7 +235,7 @@ <li class="menuentry"> <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> <span class="icon"> - <img src=".themes/ajax/foldericon.png" /> + <img src=".themes/ajax/foldericon.png" alt="Folder Icon" /> </span> <span class="name"><xsl:value-of select="@name" /></span> </li> @@ -236,7 +247,13 @@ <xsl:template match="image" mode="post"> <xsl:variable name="path"> - <xsl:apply-templates select="ancestor::folder" mode="getpath" /> + <xsl:call-template name="replaceCharsInString"> + <xsl:with-param name="stringIn"> + <xsl:text>./</xsl:text><xsl:apply-templates select="ancestor::folder" mode="getpath" /><xsl:value-of select="@file" /> + </xsl:with-param> + <xsl:with-param name="charsIn" select="' '"/> + <xsl:with-param name="charsOut" select="'%20'"/> + </xsl:call-template> </xsl:variable> <div id="breadcrumbtrail"> @@ -244,21 +261,23 @@ </div> <div id="albums"> - <span id="expandedimage"> - <span style="display: block;" id="linktospan"> + <div id="expandedimage"> + <div id="linktospan"> <a> <xsl:attribute name="href">index.php?id=<xsl:value-of select="@id" /></xsl:attribute> - Link to this image</a> - </span> - <span style="display: block;" id="expandedimagespan"> + <xsl:text>Link to this image</xsl:text> + </a> + </div> + <div id="expandedimagespan"> <a href="#" onclick="closeImage(); return false;"> <img> - <xsl:attribute name="src"><xsl:value-of select="concat('./', $path, @file)" /></xsl:attribute> + <xsl:attribute name="src"><xsl:value-of select="$path" /></xsl:attribute> + <xsl:attribute name="alt"><xsl:value-of select="@file" /></xsl:attribute> </img> </a> - </span> - <span class="name"><xsl:value-of select="@file" /></span> - </span> + </div> + <div class="name"><xsl:value-of select="@file" /></div> + </div> <div id="selectedalbum"> <xsl:apply-templates select="parent::*/folder" /> @@ -273,5 +292,24 @@ <xsl:template match="folder" mode="getpath"> <xsl:value-of select="concat(@name, '/')" /> </xsl:template> + + <xsl:template name="replaceCharsInString"> + <xsl:param name="stringIn"/> + <xsl:param name="charsIn"/> + <xsl:param name="charsOut"/> + <xsl:choose> + <xsl:when test="contains($stringIn,$charsIn)"> + <xsl:value-of select="concat(substring-before($stringIn,$charsIn),$charsOut)"/> + <xsl:call-template name="replaceCharsInString"> + <xsl:with-param name="stringIn" select="substring-after($stringIn,$charsIn)"/> + <xsl:with-param name="charsIn" select="$charsIn"/> + <xsl:with-param name="charsOut" select="$charsOut"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$stringIn"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> </xsl:stylesheet> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-14 21:12:09
|
Revision: 38 http://picfinity.svn.sourceforge.net/picfinity/?rev=38&view=rev Author: espadav8 Date: 2007-08-14 14:12:12 -0700 (Tue, 14 Aug 2007) Log Message: ----------- Fix imagepg() -> imagepng() Modified Paths: -------------- trunk/index.php Modified: trunk/index.php =================================================================== --- trunk/index.php 2007-08-14 16:10:39 UTC (rev 37) +++ trunk/index.php 2007-08-14 21:12:12 UTC (rev 38) @@ -272,7 +272,7 @@ switch ($ext) { case 'png': - imagepg($dst_img, '.thumbs/'.$folder.'/'.$image); + imagepng($dst_img, '.thumbs/'.$folder.'/'.$image); break; case 'jpg': case 'jpeg': This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-14 16:10:36
|
Revision: 37 http://picfinity.svn.sourceforge.net/picfinity/?rev=37&view=rev Author: espadav8 Date: 2007-08-14 09:10:39 -0700 (Tue, 14 Aug 2007) Log Message: ----------- Convert all element.setAttribute("class", ...) to element.className = ... for IE Add a different way to load the XML (windows.XMLHttpRequest) This enables Safari to work Change the way selectLayoutNodeFromPath so it works without the need for a treewalker With these changes the ajax theme now works in Safari and almost completely in IE. IE7 works, but the dropdowns are mis-aligned, IE6 doesn't like the dropdowns at all. Modified Paths: -------------- trunk/.themes/ajax/ajax.js Modified: trunk/.themes/ajax/ajax.js =================================================================== --- trunk/.themes/ajax/ajax.js 2007-08-14 00:52:28 UTC (rev 36) +++ trunk/.themes/ajax/ajax.js 2007-08-14 16:10:39 UTC (rev 37) @@ -4,8 +4,20 @@ function importLayout() { - if (document.implementation && document.implementation.createDocument) + if (window.XMLHttpRequest) { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.onreadystatechange = function() { + if (xmlHttp.readyState == 4) + { + xmlDoc = xmlHttp.responseXML; + } + } + xmlHttp.open("GET", "gallery.xml", true); + xmlHttp.send(null) + } + else if (document.implementation && document.implementation.createDocument) + { xmlDoc = document.implementation.createDocument("", "layout", null); xmlDoc.load("gallery.xml"); } @@ -133,8 +145,6 @@ for(var i = 0; i < element.childNodes.length; i++) { - // if (tagName == "image") alert(element.childNodes[i].nodeName + '\n' + tagName); - // this hack is for Konqueror (and possibly Safari) // for some reason the <image> tags are replaced // with <img> tags @@ -235,7 +245,7 @@ var classes = (optClass == undefined) ? "thumbnail" : "thumbnail " + optClass; var albumImageDiv = document.createElement("div"); - albumImageDiv.setAttribute("class", classes); + albumImageDiv.className = classes; albumImageDiv.setAttribute("id", imageNodeID); var imageAnchor = document.createElement("a"); @@ -243,7 +253,7 @@ imageAnchor.onclick = function() { showImage(imageNodeID); return false; }; var imageSpan = document.createElement("span"); - imageSpan.setAttribute("class", "image"); + imageSpan.className = "image"; var albumImage = document.createElement("img"); var imageThumbPath = '.thumbs/' + nodePath + '/' + imageNode.getAttribute("file"); @@ -251,7 +261,7 @@ imageAnchor.appendChild(albumImage); var imageNameSpan = document.createElement("span"); - imageNameSpan.setAttribute("class", "name"); + imageNameSpan.className = "name"; imageNameSpan.appendChild(document.createTextNode(imageNode.getAttribute("file"))); imageSpan.appendChild(imageAnchor) @@ -268,7 +278,7 @@ // create the main folder div var subFolder = document.createElement("div"); - subFolder.setAttribute("class", "folder"); + subFolder.className = "folder"; subFolder.setAttribute("id", folderID); var folderAnchor = document.createElement("a"); @@ -280,7 +290,7 @@ // create a span for the image var folderImageSpan = document.createElement("span"); - folderImageSpan.setAttribute("class", "image"); + folderImageSpan.className = "image"; // create the image var folderImage = document.createElement("img"); @@ -291,7 +301,7 @@ // create a span for the folder icon var iconSpan = document.createElement("span"); - iconSpan.setAttribute("class", "icon"); + iconSpan.className = "icon"; // create the icon image var iconImage = document.createElement("img"); @@ -300,7 +310,7 @@ // create a span for the text var textSpan = document.createElement("span"); - textSpan.setAttribute("class", "name"); + textSpan.className = "name"; // create the text var textContents = folderNode.getAttribute("name"); @@ -362,7 +372,7 @@ imageSpan.appendChild(imageAnchor); var imageNameSpan = document.createElement("span"); - imageNameSpan.setAttribute("class", "name"); + imageNameSpan.className = "name"; imageNameSpan.appendChild(document.createTextNode(imageNode.getAttribute("file"))); var expandedImage = new Image(); @@ -418,10 +428,10 @@ function createBreadcrumbMenu(path, currentFolder) { var breadcrumbEntry = document.createElement("ul"); - breadcrumbEntry.setAttribute("class", "trailentry"); + breadcrumbEntry.className = "trailentry"; var menuLi = document.createElement("li"); - menuLi.setAttribute("class", "currentfolder"); + menuLi.className = "currentfolder"; var dropMenu = document.createElement("ul"); menuLi.appendChild(dropMenu); @@ -443,12 +453,12 @@ if ((node.nodeName == "folder") && (node.getAttribute("name") == currentFolder)) { var nameSpan = document.createElement("span"); - nameSpan.setAttribute("class", "name"); + nameSpan.className = "name"; nameSpan.appendChild(document.createTextNode(node.getAttribute("name"))); // create a span for the folder icon var iconSpan = document.createElement("span"); - iconSpan.setAttribute("class", "icon"); + iconSpan.className = "icon"; // create the icon image var iconImage = document.createElement("img"); @@ -476,7 +486,7 @@ // create a span for the folder icon var iconSpan = document.createElement("span"); - iconSpan.setAttribute("class", "icon"); + iconSpan.className = "icon"; // create the icon image var iconImage = document.createElement("img"); @@ -490,7 +500,7 @@ // create a span for the folder icon var iconSpan = document.createElement("span"); - iconSpan.setAttribute("class", "icon"); + iconSpan.className = "icon"; // create the icon image var iconImage = document.createElement("img"); @@ -502,15 +512,15 @@ // we do this so we can show the user the currently selected folder in the drop down if (node.getAttribute("name") == currentFolder) { - dropMenuItem.setAttribute("class", "menuentry selected"); + dropMenuItem.className = "menuentry selected"; } else { - dropMenuItem.setAttribute("class", "menuentry"); + dropMenuItem.className = "menuentry"; } var nameSpan = document.createElement("span"); - nameSpan.setAttribute("class", "name"); + nameSpan.className = "name"; nameSpan.appendChild(document.createTextNode(node.getAttribute("name"))); dropMenuItem.appendChild(nameSpan); @@ -528,25 +538,19 @@ else if (path != '') { path = (path.indexOf("./") == 0) ? path.substring(2) : path; - var currentPath = path.split('/')[0]; + var nodes = getChildNodesByTagName(node, "folder"); - // FIXME: doesn't work with IE or Safari - if (document.createTreeWalker) + for (var i = 0; i < nodes.length; i++) { - var nodes = document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT, null, false); - - while ((selectedNode = nodes.nextNode()) != null) + if ((nodes[i].getAttribute("name") == currentPath)) { - if ((selectedNode.nodeName == "folder") && (selectedNode.getAttribute("name") == currentPath)) - { - return selectLayoutNodeFromPath(path.replace(currentPath + '/', ''), selectedNode); - } - else - { - continue; - } + return selectLayoutNodeFromPath(path.replace(currentPath + '/', ''), nodes[i]); } + else + { + continue; + } } } else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-14 00:52:25
|
Revision: 36 http://picfinity.svn.sourceforge.net/picfinity/?rev=36&view=rev Author: espadav8 Date: 2007-08-13 17:52:28 -0700 (Mon, 13 Aug 2007) Log Message: ----------- Add an onclick for the root breadtrail item Slight CSS positioning changes and hide overflowing names Update the XML loading for IE. Now getting somewhere, the XML wasn't loading before (due to the DTD but unsure why it was causing the problem). Can now click on the folders, however, the elements aren't being created correctly so they're rendered wrong. Modified Paths: -------------- trunk/.themes/ajax/ajax.css trunk/.themes/ajax/ajax.js trunk/.themes/ajax/ajax.xsl Modified: trunk/.themes/ajax/ajax.css =================================================================== --- trunk/.themes/ajax/ajax.css 2007-08-14 00:06:33 UTC (rev 35) +++ trunk/.themes/ajax/ajax.css 2007-08-14 00:52:28 UTC (rev 36) @@ -101,6 +101,7 @@ text-align: center; display: block; height: 16px; + overflow: hidden; } #expandedimage span.name @@ -137,7 +138,7 @@ { display: block; margin: 0 0 10px 0; - height: 20px; + height: 24px; } #breadcrumbtrail ul @@ -162,7 +163,7 @@ #breadcrumbtrail ul li ul { display: none; - margin: 21px 0 -1px -6px; + margin: 22px 0 -1px -6px; position: fixed; z-index: 10; } Modified: trunk/.themes/ajax/ajax.js =================================================================== --- trunk/.themes/ajax/ajax.js 2007-08-14 00:06:33 UTC (rev 35) +++ trunk/.themes/ajax/ajax.js 2007-08-14 00:52:28 UTC (rev 36) @@ -7,18 +7,20 @@ if (document.implementation && document.implementation.createDocument) { xmlDoc = document.implementation.createDocument("", "layout", null); + xmlDoc.load("gallery.xml"); } else if (window.ActiveXObject) { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + xmlDoc.validateOnParse = false; + xmlDoc.resolveExternals = false; + xmlDoc.load("gallery.xml"); } else { alert('Your browser can\'t handle this script'); return; } - - xmlDoc.load("gallery.xml"); } function reloadPage() Modified: trunk/.themes/ajax/ajax.xsl =================================================================== --- trunk/.themes/ajax/ajax.xsl 2007-08-14 00:06:33 UTC (rev 35) +++ trunk/.themes/ajax/ajax.xsl 2007-08-14 00:52:28 UTC (rev 36) @@ -214,6 +214,7 @@ <ul class="trailentry"> <li class="currentfolder"> + <xsl:attribute name="onclick">openFolder('<xsl:value-of select="@id" />'); return false;</xsl:attribute> <span class="icon"> <img src=".themes/ajax/foldericon.png" /> </span> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-14 00:06:33
|
Revision: 35 http://picfinity.svn.sourceforge.net/picfinity/?rev=35&view=rev Author: espadav8 Date: 2007-08-13 17:06:33 -0700 (Mon, 13 Aug 2007) Log Message: ----------- Update the location of the DTD. This will end up on the sf.net home page Modified Paths: -------------- trunk/index.php Modified: trunk/index.php =================================================================== --- trunk/index.php 2007-08-13 17:49:32 UTC (rev 34) +++ trunk/index.php 2007-08-14 00:06:33 UTC (rev 35) @@ -105,7 +105,7 @@ if ($name == "") $folder_layout_xml = "<?xml version=\"1.0\"?>" . "\n" - . "<!DOCTYPE layout PUBLIC \"-//picfinity//Gallery Layout//EN\" \"http://www.sunset-cigarette.co.uk/gallery/gallery.dtd\">" + . "<!DOCTYPE layout PUBLIC \"-//picfinity//Gallery Layout//EN\" \"http://www.espadav8.co.uk/gallery/gallery.dtd\">" . "\n" . "<layout id=\"$folder_id\" name=\"\">\n"; else @@ -312,7 +312,7 @@ 'scalarAsAttributes' => true, 'doctype' => array ( 'id' => '-//picfinity//Gallery Layout//EN', - 'uri' => 'http://www.sunset-cigarette.co.uk/gallery/gallery.dtd' + 'uri' => 'http://www.espadav8.co.uk/gallery/gallery.dtd' ) ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-13 17:49:53
|
Revision: 34 http://picfinity.svn.sourceforge.net/picfinity/?rev=34&view=rev Author: espadav8 Date: 2007-08-13 10:49:32 -0700 (Mon, 13 Aug 2007) Log Message: ----------- Check for the thumbnail at the same time as we check $create_thumbnails. Should avoid a function call, not sure if this really saves time Modified Paths: -------------- trunk/index.php Modified: trunk/index.php =================================================================== --- trunk/index.php 2007-08-13 13:47:37 UTC (rev 33) +++ trunk/index.php 2007-08-13 17:49:32 UTC (rev 34) @@ -157,7 +157,7 @@ if (in_array($ext, $valid_image_formats)) { // create a thumbnail if we've been told to - if ($create_thumbnails) + if (($create_thumbnails) && (!file_exists('.thumbs/' . $folder . '/' . $folder_entry))) { create_thumbnail($folder, $folder_entry, $ext); } @@ -223,11 +223,6 @@ global $thumbnail_width; global $thumbnail_height; - if (file_exists('.thumbs/'.$folder.'/'.$image)) - { - // if it already exists, do nothing - return; - } if (!is_dir('.thumbs/'.$folder)) { MakeDirectory('.thumbs/'.$folder, 0777); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-13 13:47:34
|
Revision: 33 http://picfinity.svn.sourceforge.net/picfinity/?rev=33&view=rev Author: espadav8 Date: 2007-08-13 06:47:37 -0700 (Mon, 13 Aug 2007) Log Message: ----------- Update and clean the CSS background colours Modified Paths: -------------- trunk/.themes/ajax/ajax.css Modified: trunk/.themes/ajax/ajax.css =================================================================== --- trunk/.themes/ajax/ajax.css 2007-08-13 01:45:43 UTC (rev 32) +++ trunk/.themes/ajax/ajax.css 2007-08-13 13:47:37 UTC (rev 33) @@ -13,7 +13,6 @@ html { padding: 10px; - background: #1a1a1a url('background.gif') repeat-x; } h1, @@ -50,7 +49,6 @@ #loadingspan { - background: #cc0022; text-align: center; color: #fff; font-weight: bold; @@ -61,13 +59,6 @@ /* --- folders --- */ -.folder, -.thumbnail, -#expandedimage -{ - background: #484848; -} - .image a { height: 100px; @@ -99,13 +90,6 @@ } -/* --- images --- */ - -.selected a -{ - background: #303030; -} - /* --- image names --- */ .name @@ -140,15 +124,9 @@ /* --- hover actions --- */ -a:hover -{ - cursor: pointer; -} -.image a:hover, -#linktospan a:hover, +a:hover, #breadcrumbtrail ul li:hover { - background: #606060; cursor: pointer; } @@ -167,7 +145,6 @@ color: #fff; font-weight: bold; list-style: none; - background: #484848; display: block; float: left; width: 150px; @@ -210,12 +187,40 @@ margin: -3px 0 0 0; } -#breadcrumbtrail ul li ul li:hover +#breadcrumbtrail ul li:hover ul { + display: block; +} + + +/*** BACKGROUND ***/ + +html, +.selected a, +#breadcrumbtrail ul li:hover, +#breadcrumbtrail ul li ul li.selected +{ background: #303030; } -#breadcrumbtrail ul li:hover ul +.folder, +.thumbnail, +#expandedimage, +#breadcrumbtrail ul { - display: block; + background: #505050; } + +.image a:hover, +#linktospan a:hover, +#breadcrumbtrail ul li ul li:hover +{ + background: #707070; +} + + +#loadingspan +{ + background: #cc0022; +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-13 01:45:40
|
Revision: 32 http://picfinity.svn.sourceforge.net/picfinity/?rev=32&view=rev Author: espadav8 Date: 2007-08-12 18:45:43 -0700 (Sun, 12 Aug 2007) Log Message: ----------- Slight html padding change Modified Paths: -------------- trunk/.themes/ajax/ajax.css Modified: trunk/.themes/ajax/ajax.css =================================================================== --- trunk/.themes/ajax/ajax.css 2007-08-12 20:10:40 UTC (rev 31) +++ trunk/.themes/ajax/ajax.css 2007-08-13 01:45:43 UTC (rev 32) @@ -12,7 +12,7 @@ html { - padding: 20px; + padding: 10px; background: #1a1a1a url('background.gif') repeat-x; } @@ -218,4 +218,4 @@ #breadcrumbtrail ul li:hover ul { display: block; -} \ No newline at end of file +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-12 20:10:37
|
Revision: 31 http://picfinity.svn.sourceforge.net/picfinity/?rev=31&view=rev Author: espadav8 Date: 2007-08-12 13:10:40 -0700 (Sun, 12 Aug 2007) Log Message: ----------- Tag for version 0.02 Added Paths: ----------- tags/0.02/ Copied: tags/0.02 (from rev 30, trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-12 20:07:39
|
Revision: 30 http://picfinity.svn.sourceforge.net/picfinity/?rev=30&view=rev Author: espadav8 Date: 2007-08-12 13:07:42 -0700 (Sun, 12 Aug 2007) Log Message: ----------- Missed these 2 files Added Paths: ----------- trunk/.project trunk/.projectOptions Removed Paths: ------------- .project .projectOptions Deleted: .project =================================================================== --- .project 2007-08-12 20:06:30 UTC (rev 29) +++ .project 2007-08-12 20:07:42 UTC (rev 30) @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>picfinity</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.php.core.PhpIncrementalProjectBuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.wst.validation.validationbuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.php.core.PHPNature</nature> - </natures> -</projectDescription> Deleted: .projectOptions =================================================================== --- .projectOptions 2007-08-12 20:06:30 UTC (rev 29) +++ .projectOptions 2007-08-12 20:07:42 UTC (rev 30) @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpProjectOptions> - <projectOption name="org.eclipse.php.core.contextRoot"> - </projectOption> - <projectOption name="org.eclipse.php.core.defaultEncoding"> - </projectOption> - <includepath> - </includepath> -</phpProjectOptions> Copied: trunk/.project (from rev 28, .project) =================================================================== --- trunk/.project (rev 0) +++ trunk/.project 2007-08-12 20:07:42 UTC (rev 30) @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>picfinity</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.php.core.PhpIncrementalProjectBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.validation.validationbuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.php.core.PHPNature</nature> + </natures> +</projectDescription> Copied: trunk/.projectOptions (from rev 28, .projectOptions) =================================================================== --- trunk/.projectOptions (rev 0) +++ trunk/.projectOptions 2007-08-12 20:07:42 UTC (rev 30) @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<phpProjectOptions> + <projectOption name="org.eclipse.php.core.contextRoot"> + </projectOption> + <projectOption name="org.eclipse.php.core.defaultEncoding"> + </projectOption> + <includepath> + </includepath> +</phpProjectOptions> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-12 20:06:29
|
Revision: 29 http://picfinity.svn.sourceforge.net/picfinity/?rev=29&view=rev Author: espadav8 Date: 2007-08-12 13:06:30 -0700 (Sun, 12 Aug 2007) Log Message: ----------- Hopefully create the folders in the correct places so it can be tagged and branched Added Paths: ----------- branches/ tags/ trunk/ trunk/.themes/ trunk/.themes/ajax/ trunk/.themes/gallery/ trunk/gallery.dtd trunk/index.php Removed Paths: ------------- .themes/ gallery.dtd index.php trunk/.themes/ajax/ trunk/.themes/gallery/ Deleted: gallery.dtd =================================================================== --- gallery.dtd 2007-08-12 19:43:08 UTC (rev 28) +++ gallery.dtd 2007-08-12 20:06:30 UTC (rev 29) @@ -1,20 +0,0 @@ -<!ELEMENT layout (themes,folder*)> -<!ELEMENT folder (folder*,image*)> -<!ELEMENT themes (theme*)> -<!ELEMENT image EMPTY> -<!ELEMENT theme EMPTY> - -<!ATTLIST layout id ID #IMPLIED> -<!ATTLIST layout name CDATA #REQUIRED> - -<!ATTLIST folder id ID #IMPLIED> -<!ATTLIST folder name CDATA #REQUIRED> - -<!ATTLIST themes id ID #IMPLIED> -<!ATTLIST themes name CDATA #REQUIRED> - -<!ATTLIST theme id ID #IMPLIED> -<!ATTLIST theme name CDATA #REQUIRED> - -<!ATTLIST image id ID #IMPLIED> -<!ATTLIST image file CDATA #REQUIRED> \ No newline at end of file Deleted: index.php =================================================================== --- index.php 2007-08-12 19:43:08 UTC (rev 28) +++ index.php 2007-08-12 20:06:30 UTC (rev 29) @@ -1,378 +0,0 @@ -<?php - // site options - $site_name = "Picfinity"; - - // here we either get the theme posted in - // or if there's one stored in the cookie use that one - // otherwise use the default one - if ($_POST['theme']) - { - setcookie("theme", $_POST['theme']); - $theme = $_POST['theme']; - } - else if ($_COOKIE['theme']) - { - $theme = $_COOKIE['theme']; - } - else - { - // set the name of the default theme here - $theme = "ajax" ; - } - - if ($_GET['id']) - { - $post_id = $_GET['id']; - } - else - { - $post_id = 0; - } - - // create thumbnails for images that don't have one already - $create_thumbnails = true; - - // create a flat HTML version of the page - $create_html = false; - - // create the gallery.xml file (for use by themes - $create_xml = true; - - // use the PEAR module to create the XML - $use_pear = false; - - // Allow the users to change the theme - // this needs the PHP version of the page - $enable_themes = true; - - // thumbnail sizes - $thumbnail_width = 100; - $thumbnail_height = 100; - - // valid images to be shown - $valid_image_formats = array('png', 'gif', 'jpg', 'jpeg', 'bmp'); - - // get the layout of the current dir - $site_layout = create_folder_layout('.'); - - // create the XML of the layout - // if we're not using the PEAR module then the XML will have already been returned - if ($use_pear) - $xml = array_to_xml($site_layout); - else - $xml = $site_layout; - - // create the XML file if we've been told to - if ($create_xml) - { - $fh = fopen("gallery.xml", "w"); - fwrite($fh, $xml); - fclose($fh); - } - - // pass the XML to the theme and get the HTML back - $html = xml_to_xhtml($xml, ".themes/$theme/$theme.xsl", array('title' => $site_name, 'post_id' => $post_id)); - - // create the flat version if we need to - if ($create_html) - { - $fh = fopen("index.html", "w"); - fwrite($fh, $html); - fclose($fh); - } - - // echo the HTML to the screen - echo $html; - - // this function takes a folder path and creates a layout of the folder and sub folders - function create_folder_layout($folder) - { - global $valid_image_formats; - global $create_thumbnails; - global $use_pear; - global $enable_themes; - - // get the name of the folder or '' if it's the root - $name = substr($folder, strrpos($folder, '/') + 1); - - // create a folder ID - $folder_id = "id" . md5($folder); - - // add the folder to the Array (for use by the PEAR route) - $layout = array('name' => $name, 'id' => $folder_id); - - // create the non-PEAR XML - if ($name == "") - $folder_layout_xml = "<?xml version=\"1.0\"?>" - . "\n" - . "<!DOCTYPE layout PUBLIC \"-//picfinity//Gallery Layout//EN\" \"http://www.sunset-cigarette.co.uk/gallery/gallery.dtd\">" - . "\n" - . "<layout id=\"$folder_id\" name=\"\">\n"; - else - $folder_layout_xml = "<folder id=\"$folder_id\" name=\"$name\">\n"; - - // get a listing of the files/folder - $dh = opendir($folder); - while (false !== ($filename = readdir($dh))) { - $folder_contents[] = $filename; - } - - sort($folder_contents); - - // for each entry - while (list(,$folder_entry) = each($folder_contents)) - { - // if it's a folder and the path of it is ./.themes then create the list of themes - if ((is_dir($folder . '/' . $folder_entry)) && - (($folder . '/' . $folder_entry) == "./.themes") && - $enable_themes) - { - if ($use_pear) - $layout['themes'] = create_themes_layout(); - else - $folder_layout_xml .= create_themes_layout(); - } - - // else if it starts with a . ignore it - else if (strpos($folder_entry, '.') === 0) - { - continue; - } - - // if it's a directory and doesn't start with a . then create a folder layout for it - else if (is_dir($folder . '/' . $folder_entry)) - { - // get a list of it's files and check/create thumbnail(s) - if ($use_pear) - $layout['folder'][] = create_folder_layout($folder . '/' . $folder_entry); - else - $folder_layout_xml .= create_folder_layout($folder . '/' . $folder_entry); - } - - // otherwise check to see if it's an image - else - { - $ext = strtolower(substr($folder_entry, strrpos($folder_entry, '.') + 1)); - - if (in_array($ext, $valid_image_formats)) - { - // create a thumbnail if we've been told to - if ($create_thumbnails) - { - create_thumbnail($folder, $folder_entry, $ext); - } - $image_id = "id" . md5($folder . '/' . $folder_entry); - $layout['image'][] = array('id' => $image_id, 'file' => $folder_entry); - $folder_layout_xml .= "\t<image id=\"$image_id\" file=\"$folder_entry\" />\n"; - } - } - } - - // close up the hand-coded XML - if ($name == "") $folder_layout_xml .= "</layout>\n"; - else $folder_layout_xml .= "</folder>\n"; - - // return the correct layout (XML or Array) - if ($use_pear) return $layout; - else return $folder_layout_xml; - } - - function create_themes_layout() - { - global $use_pear; - - $themes_id = "id" . md5(".themes"); - - // create the themes node - $layout = array('name' => '.themes', 'id' => $themes_id); - $theme_xml = "<themes id=\"$themes_id\" name=\".themes\">\n"; - - // get the themes - $dh = opendir(".themes"); - while (false !== ($filename = readdir($dh))) { - $folder_contents[] = $filename; - } - - sort($folder_contents); - - // for each entry - while (list(,$folder_entry) = each($folder_contents)) - { - // if it's hidden ignore it - if (strpos($folder_entry, '.') === 0) - { - continue; - } - // otherwise if it's a dir assume it's a theme and add it to the list - else if (is_dir(".themes/" . $folder_entry)) - { - $theme_id = md5(".themes/" . $folder_entry); - $layout['theme'][] = array('name' => $folder_entry, 'id' => $theme_id); - $theme_xml .= "\t<theme id=\"$theme_id\" name=\"$folder_entry\" />\n"; - } - } - - $theme_xml .= "</themes>\n"; - - if ($use_pear) return $layout; - else return $theme_xml; - } - - function create_thumbnail($folder, $image, $ext) - { - global $thumbnail_width; - global $thumbnail_height; - - if (file_exists('.thumbs/'.$folder.'/'.$image)) - { - // if it already exists, do nothing - return; - } - if (!is_dir('.thumbs/'.$folder)) - { - MakeDirectory('.thumbs/'.$folder, 0777); - chmod('.thumbs/'.$folder, 0777); - } - - $src_img; - switch ($ext) - { - case 'png': - $src_img = imagecreatefrompng($folder.'/'.$image); - break; - case 'jpg': - case 'jpeg': - $src_img = imagecreatefromjpeg($folder.'/'.$image); - break; - case 'gif': - $src_img = imagecreatefromgif($folder.'/'.$image); - break; - case 'bmp': - $src_img = imagecreatefrombmp($folder.'/'.$image); - break; - default: - return; - break; - } - - $old_x = imageSX($src_img); - $old_y = imageSY($src_img); - - if ($old_x > $old_y) { - $thumb_w = $thumbnail_width; - $thumb_h = $old_y * ($thumbnail_height/$old_x); - } - else if ($old_x < $old_y) { - $thumb_w = $old_x * ($thumbnail_width/$old_y); - $thumb_h = $thumbnail_height; - } - else if ($old_x == $old_y) { - $thumb_w = $thumbnail_width; - $thumb_h = $thumbnail_height; - } - - $dst_img = ImageCreateTrueColor($thumb_w, $thumb_h); - imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y); - - switch ($ext) - { - case 'png': - imagepg($dst_img, '.thumbs/'.$folder.'/'.$image); - break; - case 'jpg': - case 'jpeg': - imagejpeg($dst_img, '.thumbs/'.$folder.'/'.$image); - break; - case 'gif': - imagegif($dst_img, '.thumbs/'.$folder.'/'.$image); - break; - case 'bmp': - imagebmp($dst_img, '.thumbs/'.$folder.'/'.$image); - break; - } - - imagedestroy($dst_img); - imagedestroy($src_img); - - return; - } - - function array_to_xml(&$array, $tag_name = 'image', $headless = false) - { - error_reporting(E_ALL ^ E_NOTICE); - - // Include XML_Serializer - require_once 'XML/Serializer.php'; - - // An array of serializer options - $serializer_options = array ( - 'addDecl' => !$headless, - 'addDoctype' => true, - 'encoding' => 'ISO-8859-1', - 'indent' => ' ', - 'indentAttributes' => '_auto', - 'rootName' => 'layout', - 'defaultTagName' => $tag_name, - 'mode' => 'simplexml', - 'scalarAsAttributes' => true, - 'doctype' => array ( - 'id' => '-//picfinity//Gallery Layout//EN', - 'uri' => 'http://www.sunset-cigarette.co.uk/gallery/gallery.dtd' - ) - ); - - // Instantiate the serializer with the options - $Serializer = &new XML_Serializer($serializer_options); - - // Serialize the data structure - $status = $Serializer->serialize($array); - - // Check whether serialization worked - if (PEAR::isError($status)) { - die($status->getMessage()); - } - - // return the XML document - return $Serializer->getSerializedData(); - } - - function xml_to_xhtml($xml, $xsl_file, $params = array()) - { - $ver = explode( '.', PHP_VERSION ); - $ver_num = $ver[0] . $ver[1] . $ver[2]; - - if ( $ver_num < 500 ) - { - $arguments = array('/_xml' => $xml); - $xsltproc = xslt_create(); - $html = xslt_process($xsltproc, 'arg:/_xml', $xsl_file, NULL, $arguments); - - if (empty($html)) { - die('XSLT processing error: '. xslt_error($xsltproc)); - } - xslt_free($xsltproc); - return $html; - } - else - { - $doc = new DOMDocument(); - $xsl = new XSLTProcessor(); - - $doc->load($xsl_file); - $xsl->importStyleSheet($doc); - - $doc->loadXML($xml); - $xsl->setParameter('', $params); - - return $xsl->transformToXML($doc); - } - } - - function MakeDirectory($dir, $mode = 0755) - { - if (is_dir($dir) || @mkdir($dir,$mode)) return TRUE; - if (!MakeDirectory(dirname($dir),$mode)) return FALSE; - return @mkdir($dir,$mode); - } -?> - Copied: trunk/.themes (from rev 27, .themes) Copied: trunk/.themes/ajax (from rev 28, .themes/ajax) Copied: trunk/.themes/gallery (from rev 28, .themes/gallery) Copied: trunk/gallery.dtd (from rev 27, gallery.dtd) =================================================================== --- trunk/gallery.dtd (rev 0) +++ trunk/gallery.dtd 2007-08-12 20:06:30 UTC (rev 29) @@ -0,0 +1,20 @@ +<!ELEMENT layout (themes,folder*)> +<!ELEMENT folder (folder*,image*)> +<!ELEMENT themes (theme*)> +<!ELEMENT image EMPTY> +<!ELEMENT theme EMPTY> + +<!ATTLIST layout id ID #IMPLIED> +<!ATTLIST layout name CDATA #REQUIRED> + +<!ATTLIST folder id ID #IMPLIED> +<!ATTLIST folder name CDATA #REQUIRED> + +<!ATTLIST themes id ID #IMPLIED> +<!ATTLIST themes name CDATA #REQUIRED> + +<!ATTLIST theme id ID #IMPLIED> +<!ATTLIST theme name CDATA #REQUIRED> + +<!ATTLIST image id ID #IMPLIED> +<!ATTLIST image file CDATA #REQUIRED> \ No newline at end of file Copied: trunk/index.php (from rev 27, index.php) =================================================================== --- trunk/index.php (rev 0) +++ trunk/index.php 2007-08-12 20:06:30 UTC (rev 29) @@ -0,0 +1,378 @@ +<?php + // site options + $site_name = "Picfinity"; + + // here we either get the theme posted in + // or if there's one stored in the cookie use that one + // otherwise use the default one + if ($_POST['theme']) + { + setcookie("theme", $_POST['theme']); + $theme = $_POST['theme']; + } + else if ($_COOKIE['theme']) + { + $theme = $_COOKIE['theme']; + } + else + { + // set the name of the default theme here + $theme = "ajax" ; + } + + if ($_GET['id']) + { + $post_id = $_GET['id']; + } + else + { + $post_id = 0; + } + + // create thumbnails for images that don't have one already + $create_thumbnails = true; + + // create a flat HTML version of the page + $create_html = false; + + // create the gallery.xml file (for use by themes + $create_xml = true; + + // use the PEAR module to create the XML + $use_pear = false; + + // Allow the users to change the theme + // this needs the PHP version of the page + $enable_themes = true; + + // thumbnail sizes + $thumbnail_width = 100; + $thumbnail_height = 100; + + // valid images to be shown + $valid_image_formats = array('png', 'gif', 'jpg', 'jpeg', 'bmp'); + + // get the layout of the current dir + $site_layout = create_folder_layout('.'); + + // create the XML of the layout + // if we're not using the PEAR module then the XML will have already been returned + if ($use_pear) + $xml = array_to_xml($site_layout); + else + $xml = $site_layout; + + // create the XML file if we've been told to + if ($create_xml) + { + $fh = fopen("gallery.xml", "w"); + fwrite($fh, $xml); + fclose($fh); + } + + // pass the XML to the theme and get the HTML back + $html = xml_to_xhtml($xml, ".themes/$theme/$theme.xsl", array('title' => $site_name, 'post_id' => $post_id)); + + // create the flat version if we need to + if ($create_html) + { + $fh = fopen("index.html", "w"); + fwrite($fh, $html); + fclose($fh); + } + + // echo the HTML to the screen + echo $html; + + // this function takes a folder path and creates a layout of the folder and sub folders + function create_folder_layout($folder) + { + global $valid_image_formats; + global $create_thumbnails; + global $use_pear; + global $enable_themes; + + // get the name of the folder or '' if it's the root + $name = substr($folder, strrpos($folder, '/') + 1); + + // create a folder ID + $folder_id = "id" . md5($folder); + + // add the folder to the Array (for use by the PEAR route) + $layout = array('name' => $name, 'id' => $folder_id); + + // create the non-PEAR XML + if ($name == "") + $folder_layout_xml = "<?xml version=\"1.0\"?>" + . "\n" + . "<!DOCTYPE layout PUBLIC \"-//picfinity//Gallery Layout//EN\" \"http://www.sunset-cigarette.co.uk/gallery/gallery.dtd\">" + . "\n" + . "<layout id=\"$folder_id\" name=\"\">\n"; + else + $folder_layout_xml = "<folder id=\"$folder_id\" name=\"$name\">\n"; + + // get a listing of the files/folder + $dh = opendir($folder); + while (false !== ($filename = readdir($dh))) { + $folder_contents[] = $filename; + } + + sort($folder_contents); + + // for each entry + while (list(,$folder_entry) = each($folder_contents)) + { + // if it's a folder and the path of it is ./.themes then create the list of themes + if ((is_dir($folder . '/' . $folder_entry)) && + (($folder . '/' . $folder_entry) == "./.themes") && + $enable_themes) + { + if ($use_pear) + $layout['themes'] = create_themes_layout(); + else + $folder_layout_xml .= create_themes_layout(); + } + + // else if it starts with a . ignore it + else if (strpos($folder_entry, '.') === 0) + { + continue; + } + + // if it's a directory and doesn't start with a . then create a folder layout for it + else if (is_dir($folder . '/' . $folder_entry)) + { + // get a list of it's files and check/create thumbnail(s) + if ($use_pear) + $layout['folder'][] = create_folder_layout($folder . '/' . $folder_entry); + else + $folder_layout_xml .= create_folder_layout($folder . '/' . $folder_entry); + } + + // otherwise check to see if it's an image + else + { + $ext = strtolower(substr($folder_entry, strrpos($folder_entry, '.') + 1)); + + if (in_array($ext, $valid_image_formats)) + { + // create a thumbnail if we've been told to + if ($create_thumbnails) + { + create_thumbnail($folder, $folder_entry, $ext); + } + $image_id = "id" . md5($folder . '/' . $folder_entry); + $layout['image'][] = array('id' => $image_id, 'file' => $folder_entry); + $folder_layout_xml .= "\t<image id=\"$image_id\" file=\"$folder_entry\" />\n"; + } + } + } + + // close up the hand-coded XML + if ($name == "") $folder_layout_xml .= "</layout>\n"; + else $folder_layout_xml .= "</folder>\n"; + + // return the correct layout (XML or Array) + if ($use_pear) return $layout; + else return $folder_layout_xml; + } + + function create_themes_layout() + { + global $use_pear; + + $themes_id = "id" . md5(".themes"); + + // create the themes node + $layout = array('name' => '.themes', 'id' => $themes_id); + $theme_xml = "<themes id=\"$themes_id\" name=\".themes\">\n"; + + // get the themes + $dh = opendir(".themes"); + while (false !== ($filename = readdir($dh))) { + $folder_contents[] = $filename; + } + + sort($folder_contents); + + // for each entry + while (list(,$folder_entry) = each($folder_contents)) + { + // if it's hidden ignore it + if (strpos($folder_entry, '.') === 0) + { + continue; + } + // otherwise if it's a dir assume it's a theme and add it to the list + else if (is_dir(".themes/" . $folder_entry)) + { + $theme_id = md5(".themes/" . $folder_entry); + $layout['theme'][] = array('name' => $folder_entry, 'id' => $theme_id); + $theme_xml .= "\t<theme id=\"$theme_id\" name=\"$folder_entry\" />\n"; + } + } + + $theme_xml .= "</themes>\n"; + + if ($use_pear) return $layout; + else return $theme_xml; + } + + function create_thumbnail($folder, $image, $ext) + { + global $thumbnail_width; + global $thumbnail_height; + + if (file_exists('.thumbs/'.$folder.'/'.$image)) + { + // if it already exists, do nothing + return; + } + if (!is_dir('.thumbs/'.$folder)) + { + MakeDirectory('.thumbs/'.$folder, 0777); + chmod('.thumbs/'.$folder, 0777); + } + + $src_img; + switch ($ext) + { + case 'png': + $src_img = imagecreatefrompng($folder.'/'.$image); + break; + case 'jpg': + case 'jpeg': + $src_img = imagecreatefromjpeg($folder.'/'.$image); + break; + case 'gif': + $src_img = imagecreatefromgif($folder.'/'.$image); + break; + case 'bmp': + $src_img = imagecreatefrombmp($folder.'/'.$image); + break; + default: + return; + break; + } + + $old_x = imageSX($src_img); + $old_y = imageSY($src_img); + + if ($old_x > $old_y) { + $thumb_w = $thumbnail_width; + $thumb_h = $old_y * ($thumbnail_height/$old_x); + } + else if ($old_x < $old_y) { + $thumb_w = $old_x * ($thumbnail_width/$old_y); + $thumb_h = $thumbnail_height; + } + else if ($old_x == $old_y) { + $thumb_w = $thumbnail_width; + $thumb_h = $thumbnail_height; + } + + $dst_img = ImageCreateTrueColor($thumb_w, $thumb_h); + imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y); + + switch ($ext) + { + case 'png': + imagepg($dst_img, '.thumbs/'.$folder.'/'.$image); + break; + case 'jpg': + case 'jpeg': + imagejpeg($dst_img, '.thumbs/'.$folder.'/'.$image); + break; + case 'gif': + imagegif($dst_img, '.thumbs/'.$folder.'/'.$image); + break; + case 'bmp': + imagebmp($dst_img, '.thumbs/'.$folder.'/'.$image); + break; + } + + imagedestroy($dst_img); + imagedestroy($src_img); + + return; + } + + function array_to_xml(&$array, $tag_name = 'image', $headless = false) + { + error_reporting(E_ALL ^ E_NOTICE); + + // Include XML_Serializer + require_once 'XML/Serializer.php'; + + // An array of serializer options + $serializer_options = array ( + 'addDecl' => !$headless, + 'addDoctype' => true, + 'encoding' => 'ISO-8859-1', + 'indent' => ' ', + 'indentAttributes' => '_auto', + 'rootName' => 'layout', + 'defaultTagName' => $tag_name, + 'mode' => 'simplexml', + 'scalarAsAttributes' => true, + 'doctype' => array ( + 'id' => '-//picfinity//Gallery Layout//EN', + 'uri' => 'http://www.sunset-cigarette.co.uk/gallery/gallery.dtd' + ) + ); + + // Instantiate the serializer with the options + $Serializer = &new XML_Serializer($serializer_options); + + // Serialize the data structure + $status = $Serializer->serialize($array); + + // Check whether serialization worked + if (PEAR::isError($status)) { + die($status->getMessage()); + } + + // return the XML document + return $Serializer->getSerializedData(); + } + + function xml_to_xhtml($xml, $xsl_file, $params = array()) + { + $ver = explode( '.', PHP_VERSION ); + $ver_num = $ver[0] . $ver[1] . $ver[2]; + + if ( $ver_num < 500 ) + { + $arguments = array('/_xml' => $xml); + $xsltproc = xslt_create(); + $html = xslt_process($xsltproc, 'arg:/_xml', $xsl_file, NULL, $arguments); + + if (empty($html)) { + die('XSLT processing error: '. xslt_error($xsltproc)); + } + xslt_free($xsltproc); + return $html; + } + else + { + $doc = new DOMDocument(); + $xsl = new XSLTProcessor(); + + $doc->load($xsl_file); + $xsl->importStyleSheet($doc); + + $doc->loadXML($xml); + $xsl->setParameter('', $params); + + return $xsl->transformToXML($doc); + } + } + + function MakeDirectory($dir, $mode = 0755) + { + if (is_dir($dir) || @mkdir($dir,$mode)) return TRUE; + if (!MakeDirectory(dirname($dir),$mode)) return FALSE; + return @mkdir($dir,$mode); + } +?> + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-12 19:43:07
|
Revision: 28 http://picfinity.svn.sourceforge.net/picfinity/?rev=28&view=rev Author: espadav8 Date: 2007-08-12 12:43:08 -0700 (Sun, 12 Aug 2007) Log Message: ----------- Add href="index.php" to the title Modified Paths: -------------- .themes/ajax/ajax.xsl Modified: .themes/ajax/ajax.xsl =================================================================== --- .themes/ajax/ajax.xsl 2007-08-12 04:02:00 UTC (rev 27) +++ .themes/ajax/ajax.xsl 2007-08-12 19:43:08 UTC (rev 28) @@ -27,7 +27,7 @@ <body> <h1> - <a href="#" onclick="reloadPage();return false;"> + <a href="index.php" onclick="reloadPage();return false;"> <xsl:value-of select="$title" /> </a> </h1> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-12 04:02:30
|
Revision: 27 http://picfinity.svn.sourceforge.net/picfinity/?rev=27&view=rev Author: espadav8 Date: 2007-08-11 21:02:00 -0700 (Sat, 11 Aug 2007) Log Message: ----------- Add a check for PHP version so we use the correct xsl code Modified Paths: -------------- index.php Modified: index.php =================================================================== --- index.php 2007-08-10 14:17:49 UTC (rev 26) +++ index.php 2007-08-12 04:02:00 UTC (rev 27) @@ -338,17 +338,34 @@ function xml_to_xhtml($xml, $xsl_file, $params = array()) { - $doc = new DOMDocument(); - $xsl = new XSLTProcessor(); + $ver = explode( '.', PHP_VERSION ); + $ver_num = $ver[0] . $ver[1] . $ver[2]; - $doc->load($xsl_file); - $xsl->importStyleSheet($doc); + if ( $ver_num < 500 ) + { + $arguments = array('/_xml' => $xml); + $xsltproc = xslt_create(); + $html = xslt_process($xsltproc, 'arg:/_xml', $xsl_file, NULL, $arguments); - $doc->loadXML($xml); + if (empty($html)) { + die('XSLT processing error: '. xslt_error($xsltproc)); + } + xslt_free($xsltproc); + return $html; + } + else + { + $doc = new DOMDocument(); + $xsl = new XSLTProcessor(); - $xsl->setParameter('', $params); + $doc->load($xsl_file); + $xsl->importStyleSheet($doc); - return $xsl->transformToXML($doc); + $doc->loadXML($xml); + $xsl->setParameter('', $params); + + return $xsl->transformToXML($doc); + } } function MakeDirectory($dir, $mode = 0755) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-10 14:17:46
|
Revision: 26 http://picfinity.svn.sourceforge.net/picfinity/?rev=26&view=rev Author: espadav8 Date: 2007-08-10 07:17:49 -0700 (Fri, 10 Aug 2007) Log Message: ----------- Omit the XML declaration since IE6 will render in quirks mode otherwise (and it's optional to include it) Alter the CSS slightly to render the images correctly in IE Modified Paths: -------------- .themes/ajax/ajax.css .themes/ajax/ajax.xsl Modified: .themes/ajax/ajax.css =================================================================== --- .themes/ajax/ajax.css 2007-08-09 18:26:05 UTC (rev 25) +++ .themes/ajax/ajax.css 2007-08-10 14:17:49 UTC (rev 26) @@ -70,9 +70,10 @@ .image a { - height: 128px; - width: 150px; + height: 100px; + width: 100px; display: block; + padding: 14px 25px; } .folder, @@ -105,13 +106,6 @@ background: #303030; } -.folder span.image img, -.thumbnail span.image img -{ - padding: 14px 25px; -} - - /* --- image names --- */ .name @@ -122,6 +116,7 @@ padding: 3px 0; text-align: center; display: block; + height: 16px; } #expandedimage span.name Modified: .themes/ajax/ajax.xsl =================================================================== --- .themes/ajax/ajax.xsl 2007-08-09 18:26:05 UTC (rev 25) +++ .themes/ajax/ajax.xsl 2007-08-10 14:17:49 UTC (rev 26) @@ -2,7 +2,7 @@ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" - omit-xml-declaration="no" + omit-xml-declaration="yes" indent="yes" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-09 18:26:06
|
Revision: 25 http://picfinity.svn.sourceforge.net/picfinity/?rev=25&view=rev Author: espadav8 Date: 2007-08-09 11:26:05 -0700 (Thu, 09 Aug 2007) Log Message: ----------- IE6 now works (kind of) none of the JS works, but because of the linked images/folders it can render them The breadcrumb trail isn't working yet, but that shouldn't be too hard to correct Modified Paths: -------------- .themes/ajax/ajax.xsl Modified: .themes/ajax/ajax.xsl =================================================================== --- .themes/ajax/ajax.xsl 2007-08-09 18:24:11 UTC (rev 24) +++ .themes/ajax/ajax.xsl 2007-08-09 18:26:05 UTC (rev 25) @@ -96,8 +96,11 @@ <xsl:choose> <xsl:when test="count(image) > 0"> + <xsl:variable name="path"> + <xsl:apply-templates select="ancestor::folder" mode="getpath" /> + </xsl:variable> <img> - <xsl:attribute name="src"><xsl:value-of select="concat('.thumbs/' , @name, '/', image[1]/@file)" /></xsl:attribute> + <xsl:attribute name="src"><xsl:value-of select="concat('.thumbs/' , $path, @name, '/', image[1]/@file)" /></xsl:attribute> <xsl:attribute name="alt"><xsl:value-of select="image[1]/@file" /></xsl:attribute> </img> </xsl:when> @@ -179,13 +182,31 @@ <xsl:apply-templates select="themes" /> - - <!-- the passed in ID is an image --> - <xsl:if test="$folder = 0"> - <xsl:apply-templates select="//image[@id = $post_id]" mode="post" /> - </xsl:if> + <xsl:choose> + <!-- the passed in ID is an image --> + <xsl:when test="$folder = 0"> + <xsl:apply-templates select="//image[@id = $post_id]" mode="post" /> + </xsl:when> + + <!-- the passed in ID is an folder --> + <xsl:when test="$folder = 1"> + <xsl:apply-templates select="//folder[@id = $post_id]" mode="post" /> + </xsl:when> + </xsl:choose> </xsl:template> + <xsl:template match="folder" mode="post"> + <div id="breadcrumbtrail"> + <xsl:apply-templates select="self::*" mode="breadcrumbtrail" /> + </div> + <div id="albums"> + <div id="selectedalbum"> + <xsl:apply-templates select="folder"/> + <xsl:apply-templates select="image"/> + </div> + </div> + </xsl:template> + <xsl:template match="folder" mode="breadcrumbtrail"> <xsl:if test="parent::folder"> <xsl:apply-templates select="parent::folder" mode="breadcrumbtrail" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-09 18:24:08
|
Revision: 24 http://picfinity.svn.sourceforge.net/picfinity/?rev=24&view=rev Author: espadav8 Date: 2007-08-09 11:24:11 -0700 (Thu, 09 Aug 2007) Log Message: ----------- Change the checking order for thumbnails (check for the file first, then check/create the folder) Modified Paths: -------------- index.php Modified: index.php =================================================================== --- index.php 2007-08-09 12:44:59 UTC (rev 23) +++ index.php 2007-08-09 18:24:11 UTC (rev 24) @@ -29,9 +29,6 @@ $post_id = 0; } - // not implemented yet - $max_folders = 0; // 0 = unlimited - // create thumbnails for images that don't have one already $create_thumbnails = true; @@ -226,78 +223,78 @@ global $thumbnail_width; global $thumbnail_height; + if (file_exists('.thumbs/'.$folder.'/'.$image)) + { + // if it already exists, do nothing + return; + } if (!is_dir('.thumbs/'.$folder)) { MakeDirectory('.thumbs/'.$folder, 0777); chmod('.thumbs/'.$folder, 0777); } - if (file_exists('.thumbs/'.$folder.'/'.$image)) + + $src_img; + switch ($ext) { - // if it already exists, do nothing - return; + case 'png': + $src_img = imagecreatefrompng($folder.'/'.$image); + break; + case 'jpg': + case 'jpeg': + $src_img = imagecreatefromjpeg($folder.'/'.$image); + break; + case 'gif': + $src_img = imagecreatefromgif($folder.'/'.$image); + break; + case 'bmp': + $src_img = imagecreatefrombmp($folder.'/'.$image); + break; + default: + return; + break; } - else + + $old_x = imageSX($src_img); + $old_y = imageSY($src_img); + + if ($old_x > $old_y) { + $thumb_w = $thumbnail_width; + $thumb_h = $old_y * ($thumbnail_height/$old_x); + } + else if ($old_x < $old_y) { + $thumb_w = $old_x * ($thumbnail_width/$old_y); + $thumb_h = $thumbnail_height; + } + else if ($old_x == $old_y) { + $thumb_w = $thumbnail_width; + $thumb_h = $thumbnail_height; + } + + $dst_img = ImageCreateTrueColor($thumb_w, $thumb_h); + imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y); + + switch ($ext) { - $src_img; - switch ($ext) - { - case 'png': - $src_img = imagecreatefrompng($folder.'/'.$image); - break; - case 'jpg': - case 'jpeg': - $src_img = imagecreatefromjpeg($folder.'/'.$image); - break; - case 'gif': - $src_img = imagecreatefromgif($folder.'/'.$image); - break; - case 'bmp': - $src_img = imagecreatefrombmp($folder.'/'.$image); - break; - default: - return; - break; - } - - $old_x = imageSX($src_img); - $old_y = imageSY($src_img); - - if ($old_x > $old_y) { - $thumb_w = $thumbnail_width; - $thumb_h = $old_y * ($thumbnail_height/$old_x); - } - else if ($old_x < $old_y) { - $thumb_w = $old_x * ($thumbnail_width/$old_y); - $thumb_h = $thumbnail_height; - } - else if ($old_x == $old_y) { - $thumb_w = $thumbnail_width; - $thumb_h = $thumbnail_height; - } - - $dst_img = ImageCreateTrueColor($thumb_w, $thumb_h); - imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y); - - switch ($ext) - { - case 'png': - imagepg($dst_img, '.thumbs/'.$folder.'/'.$image); - break; - case 'jpg': - case 'jpeg': - imagejpeg($dst_img, '.thumbs/'.$folder.'/'.$image); - break; - case 'gif': - imagegif($dst_img, '.thumbs/'.$folder.'/'.$image); - break; - case 'bmp': - imagebmp($dst_img, '.thumbs/'.$folder.'/'.$image); - break; - } - - imagedestroy($dst_img); - imagedestroy($src_img); + case 'png': + imagepg($dst_img, '.thumbs/'.$folder.'/'.$image); + break; + case 'jpg': + case 'jpeg': + imagejpeg($dst_img, '.thumbs/'.$folder.'/'.$image); + break; + case 'gif': + imagegif($dst_img, '.thumbs/'.$folder.'/'.$image); + break; + case 'bmp': + imagebmp($dst_img, '.thumbs/'.$folder.'/'.$image); + break; } + + imagedestroy($dst_img); + imagedestroy($src_img); + + return; } function array_to_xml(&$array, $tag_name = 'image', $headless = false) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <esp...@us...> - 2007-08-09 12:45:41
|
Revision: 23 http://picfinity.svn.sourceforge.net/picfinity/?rev=23&view=rev Author: espadav8 Date: 2007-08-09 05:44:59 -0700 (Thu, 09 Aug 2007) Log Message: ----------- Remove the use of put_file_contents Modified Paths: -------------- index.php Modified: index.php =================================================================== --- index.php 2007-08-09 11:18:11 UTC (rev 22) +++ index.php 2007-08-09 12:44:59 UTC (rev 23) @@ -66,13 +66,23 @@ $xml = $site_layout; // create the XML file if we've been told to - if ($create_xml) file_put_contents("gallery.xml", $xml); + if ($create_xml) + { + $fh = fopen("gallery.xml", "w"); + fwrite($fh, $xml); + fclose($fh); + } // pass the XML to the theme and get the HTML back $html = xml_to_xhtml($xml, ".themes/$theme/$theme.xsl", array('title' => $site_name, 'post_id' => $post_id)); // create the flat version if we need to - if ($create_html) file_put_contents("index.html", $html); + if ($create_html) + { + $fh = fopen("index.html", "w"); + fwrite($fh, $html); + fclose($fh); + } // echo the HTML to the screen echo $html; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |