blob: 3b43515b6f42c5dafc72030e0d9b33143257cd62 [file] [log] [blame]
/*
* Copyright 1999-2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
importClass(Packages.java.util.ArrayList);
/**
* Kupu usecase flow.
* @version $Id$
*/
/**
* Collects all link/url information from a publication's siteree.
* This information is used to generate xml for the Kupu (link) library drawer.
*/
function sitetree_link_library() {
var flowHelper = cocoon.getComponent("org.apache.lenya.cms.cocoon.flow.FlowHelper");
var documentHelper = flowHelper.getDocumentHelper(cocoon);
var pageEnvelope = flowHelper.getPageEnvelope(cocoon);
var areaName = pageEnvelope.getArea();
var area = pageEnvelope.getPublication().getArea(areaName);
var siteTree = area.getSite();
var allNodes = siteTree.preOrder();
var resources = new ArrayList(allNodes.length - 1);
var addedResourcesCount = 0;
var language = pageEnvelope.getDocument().getLanguage();
for(var i=1; i < allNodes.length; i++) {
if (allNodes[i].hasLink(language)) {
var languageLabel = allNodes[i].getLink(language);
/* If the current sitree node does not exist in the displayed document's language
* Continue with next node. This is a quick fix for bug #32808.
* Next step would be to offer all links to the available languages.
* by roku
*/
resources.add(addedResourcesCount, {
"url" : "lenya-document:" + allNodes[i].getUuid(),
"title" : getTitle(allNodes[i].getLink(language).getDocument()),
"label" : languageLabel.getLabel(),
"id" : allNodes[i].getName(),
"fullid" : allNodes[i].getPath(),
"language" : pageEnvelope.getDocument().getLanguage()});
addedResourcesCount++;
}
}
cocoon.releaseComponent(flowHelper);
cocoon.sendPage("sitetree_link_library_template", {"resources" : resources});
}
function getTitle(doc) {
var meta = doc.getMetaData("http://purl.org/dc/elements/1.1/");
var title = meta.getFirstValue("title");
return title;
}
/**
* Collects infos about all image resources in a publication.
*/
function publication_image_library() {
var flowHelper = cocoon.getComponent("org.apache.lenya.cms.cocoon.flow.FlowHelper");
var pageEnvelope = flowHelper.getPageEnvelope(cocoon);
var areaName = pageEnvelope.getArea();
var site = pageEnvelope.getPublication().getArea(areaName).getSite();
var imageInfos = new ArrayList();
var rootPath = cocoon.parameters["rootPath"];
var allNodes = site.getNode(rootPath).preOrder();
var baseUrl = cocoon.parameters["baseUrl"];
for (var i=0; i < allNodes.length; i++) {
if (allNodes[i].getPath().equals(pageEnvelope.getDocument().getPath()))
continue;
var languages = allNodes[i].getLanguages();
for (var lang = 0; lang < languages.length; lang++) {
var doc = allNodes[i].getLink(languages[lang]).getDocument();
if (doc.getResourceType().getName().equals("resource")) {
var title = getTitle(doc);
var url = doc.getCanonicalDocumentURL();
url = url.substring(0, url.length() - 4);
url = url + doc.getSourceExtension();
imageInfos.add({
"previewurl" : baseUrl + url,
"url" : baseUrl + url,
"name" : doc.getName(),
"title" : title,
"length" : doc.getContentLength(),
"iconUrl" : cocoon.parameters["iconUrl"]
});
}
}
}
cocoon.releaseComponent(flowHelper);
cocoon.sendPage(cocoon.parameters["template"], {"imageInfos" : imageInfos});
}