blob: 8142351492b377d41cf990e65ccf16a6f2d028d7 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
//
// @version $Id$
//
cocoon.load("resource://org/apache/cocoon/forms/flow/javascript/Form.js");
// This function is invoked by every coplet to check if the basket is already full
function add() {
var copletId = cocoon.parameters["id"];
var type = cocoon.parameters["type"];
var storage = "basket";
var dom;
var pu = cocoon.createObject(Packages.org.apache.cocoon.components.flow.util.PipelineUtil);
try {
dom = pu.processToDOM("fetch-quota", { "storage": storage, "type": type});
} finally {
cocoon.disposeObject(pu);
}
var node = org.apache.excalibur.xml.xpath.XPathUtil.getFirstNodeFromPath(dom,
org.apache.excalibur.xml.xpath.XPathUtil.buildPathArray("result/attribute/item"), false);
var itemCount = org.apache.cocoon.xml.dom.DOMUtil.getValueOfNode(node);
node = org.apache.excalibur.xml.xpath.XPathUtil.getFirstNodeFromPath(dom,
org.apache.excalibur.xml.xpath.XPathUtil.buildPathArray("result/attribute/size"), false);
var maxSize = org.apache.cocoon.xml.dom.DOMUtil.getValueOfNode(node);
var manager = cocoon.getComponent(org.apache.cocoon.portal.coplets.basket.BasketManager.ROLE);
var store;
if ( storage.equals("basket" ) ) {
store = manager.getBasket();
} else {
store = manager.getBriefcase();
}
var isFull = true;
if ( store.size() < itemCount && store.contentSize() < maxSize ) {
isFull = false;
}
cocoon.sendPage(cocoon.parameters["view"], {"bookmark" : type, "isBasketFull" : isFull});
}
// This function is invoked by every coplet to check if the basket is already full
function getQuota() {
var type = cocoon.parameters["type"];
var storage = "basket";
var dom;
var pu = cocoon.createObject(Packages.org.apache.cocoon.components.flow.util.PipelineUtil);
try {
dom = pu.processToDOM("fetch-quota", { "storage": storage, "type": type});
} finally {
cocoon.disposeObject(pu);
}
var node = org.apache.excalibur.xml.xpath.XPathUtil.getFirstNodeFromPath(dom,
org.apache.excalibur.xml.xpath.XPathUtil.buildPathArray("result/attribute/item"), false);
var itemCount = org.apache.cocoon.xml.dom.DOMUtil.getValueOfNode(node);
node = org.apache.excalibur.xml.xpath.XPathUtil.getFirstNodeFromPath(dom,
org.apache.excalibur.xml.xpath.XPathUtil.buildPathArray("result/attribute/size"), false);
var maxSize = org.apache.cocoon.xml.dom.DOMUtil.getValueOfNode(node);
if ( maxSize != null && maxSize.length() > 0 ) {
var d = new java.lang.Double(maxSize).doubleValue();
d = d / 10.24;
d = Math.floor(d) / 100.0;
if ( d < 0.1 && d != 0.0 ) { d = 0.1; }
maxSize = java.lang.String.valueOf(d);
}
cocoon.sendPage(cocoon.parameters["view"], {"itemCount" : itemCount, "maxSize" : maxSize});
}
// This function is invoked by the coplet with input process
function eval() {
var copletId = cocoon.parameters["id"];
var type = cocoon.parameters["type"];
var storage = "basket";
var manager = cocoon.getComponent(org.apache.cocoon.portal.coplets.basket.BasketManager.ROLE);
var store;
if ( storage.equals("basket" ) ) {
store = manager.getBasket();
} else {
store = manager.getBriefcase();
}
// get the portal service
var service = cocoon.getComponent(org.apache.cocoon.portal.PortalService.ROLE);
var linkService = service.getComponentManager().getLinkService();
var profileManager = service.getComponentManager().getProfileManager();
// update the attribute of the current coplet:
var coplet = profileManager.getCopletInstanceData(copletId);
coplet.setAttribute("value", cocoon.request["text"]);
var url;
// let's check the action
if ( cocoon.request["content"] != null ) {
// the content button has been pressed
var target = profileManager.getCopletInstanceData("basket-sample-7");
target.setAttribute("value", cocoon.request["text"]);
var item = new Packages.org.apache.cocoon.portal.coplets.basket.ContentItem(target, true);
var event = new Packages.org.apache.cocoon.portal.coplets.basket.events.AddItemEvent(store, item);
url = linkService.getLinkURI(event);
// now use a bookmark to switch the tab
var pos = url.indexOf('?');
url = "bookmark?baskettab=2&" + url.substring(pos+1);
} else if ( cocoon.request["link"] != null ) {
// the link button has been pressed
var target = profileManager.getCopletInstanceData("basket-sample-7");
target.setAttribute("value", cocoon.request["text"]);
var item = new Packages.org.apache.cocoon.portal.coplets.basket.ContentItem(target, false);
var event = new Packages.org.apache.cocoon.portal.coplets.basket.events.AddItemEvent(store, item);
url = linkService.getLinkURI(event);
// now use a bookmark to switch the tab
var pos = url.indexOf('?');
url = "bookmark?baskettab=2&" + url.substring(pos+1);
} else {
// we redirect to the main page
url = "portal";
}
// we have to reset our state
coplet.setTemporaryAttribute("doNotCache", "1");
coplet.setTemporaryAttribute("application-uri", coplet.getCopletData().getAttribute("temporary:application-uri"));
// and now do a redirect
cocoon.redirectTo(url, true);
}
// This function changes the title
function changeTitle() {
var copletId = cocoon.parameters["id"];
// get the portal service
var service = cocoon.getComponent(org.apache.cocoon.portal.PortalService.ROLE);
var profileManager = service.getComponentManager().getProfileManager();
var coplet = profileManager.getCopletInstanceData(copletId);
// title is the first 25 characters
var title = coplet.getAttribute("value");
if ( title != null ) {
var l = 25;
if ( title.length() < 25 ) { l = title.length(); }
title = title.substring(0, l);
}
coplet.setAttribute("title", title);
cocoon.sendPage(cocoon.parameters["view"]);
}
// This function is invoked by the query sample
function query() {
var copletId = cocoon.parameters["id"];
// get the portal service
var service = cocoon.getComponent(org.apache.cocoon.portal.PortalService.ROLE);
var profileManager = service.getComponentManager().getProfileManager();
var coplet = profileManager.getCopletInstanceData(copletId);
var target = profileManager.getCopletInstanceData("basket-sample-2");
var value = target.getAttribute("value");
if ( value == null ) value = 0;
var millis = Packages.java.lang.System.currentTimeMillis();
millis = millis + ((new Packages.java.lang.Long(value).longValue()) * 60000);
var date = new Packages.java.util.Date(millis);
coplet.setAttribute("value", date);
cocoon.sendPage(cocoon.parameters["view"], {"date" : date});
}
function showresult() {
var copletId = cocoon.parameters["id"];
// get the portal service
var service = cocoon.getComponent(org.apache.cocoon.portal.PortalService.ROLE);
var profileManager = service.getComponentManager().getProfileManager();
var coplet = profileManager.getCopletInstanceData(copletId);
cocoon.sendPage(cocoon.parameters["view"], {"date" : coplet.getAttribute("value")});
}
// This function is invoked to add the result of the query
function result() {
var copletId = cocoon.parameters["id"];
var storage = "basket";
var manager = cocoon.getComponent(org.apache.cocoon.portal.coplets.basket.BasketManager.ROLE);
var store;
if ( storage.equals("basket" ) ) {
store = manager.getBasket();
} else {
store = manager.getBriefcase();
}
// get the portal service
var service = cocoon.getComponent(org.apache.cocoon.portal.PortalService.ROLE);
var profileManager = service.getComponentManager().getProfileManager();
var coplet = profileManager.getCopletInstanceData(copletId);
var item = new Packages.org.apache.cocoon.portal.coplets.basket.ContentItem("cocoon://samples/blocks/portal/coplets/basket/copletwithappresult.showresult.flow", true);
var event = new Packages.org.apache.cocoon.portal.coplets.basket.events.AddItemEvent(store, item);
service.getComponentManager().getEventManager().getPublisher().publish(event);
cocoon.sendPage(cocoon.parameters["view"]);
}
// this function is invoked to show the dialog after the query
function dialog() {
var copletId = cocoon.parameters["id"];
var storage = "basket";
// get the portal service
var service = cocoon.getComponent(org.apache.cocoon.portal.PortalService.ROLE);
var profileManager = service.getComponentManager().getProfileManager();
var coplet = profileManager.getCopletInstanceData(copletId);
var manager = cocoon.getComponent(org.apache.cocoon.portal.coplets.basket.BasketManager.ROLE);
var store;
if ( storage.equals("basket" ) ) {
store = manager.getBasket();
} else {
store = manager.getBriefcase();
}
var item = new Packages.org.apache.cocoon.portal.coplets.basket.ContentItem(coplet, false);
var event = new Packages.org.apache.cocoon.portal.coplets.basket.events.AddItemEvent(store, item);
service.getComponentManager().getEventManager().getPublisher().publish(event);
var action;
if ( storage.equals("basket" ) ) {
action = manager.getBasketAction(cocoon.request["action"]);
} else {
action = manager.getBriefcaseAction(cocoon.request["action"]);
}
var freq = new Packages.java.lang.Integer(cocoon.request["frequency"]).intValue();
item.setAttribute("action-replay", "true");
item.setAttribute("action-name", cocoon.request["action"]);
item.setAttribute("action-freq", new java.lang.Long(freq).toString());
manager.addBatch(item, freq, action);
cocoon.sendPage(cocoon.parameters["view"]);
}
// This function is invoked by the coplet list sample
function list() {
var copletId = cocoon.parameters["id"];
var storage = "basket";
var manager = cocoon.getComponent(org.apache.cocoon.portal.coplets.basket.BasketManager.ROLE);
var store;
if ( storage.equals("basket" ) ) {
store = manager.getBasket();
} else {
store = manager.getBriefcase();
}
// get the portal service
var service = cocoon.getComponent(org.apache.cocoon.portal.PortalService.ROLE);
var profileManager = service.getComponentManager().getProfileManager();
var coplet = profileManager.getCopletInstanceData(copletId);
// now test check boxes
if ( cocoon.request["sample1"] != null ) {
addCoplet(profileManager, service, store, "basket-sample-1");
}
if ( cocoon.request["sample2"] != null ) {
addCoplet(profileManager, service, store, "basket-sample-2");
}
if ( cocoon.request["sample3"] != null ) {
addCoplet(profileManager, service, store, "basket-sample-3");
}
if ( cocoon.request["sample4"] != null ) {
addCoplet(profileManager, service, store, "basket-sample-4");
}
if ( cocoon.request["sample5"] != null ) {
addCoplet(profileManager, service, store, "basket-sample-5");
}
// we have to reset our state
coplet.setTemporaryAttribute("application-uri", coplet.getCopletData().getAttribute("temporary:application-uri"));
cocoon.redirectTo(coplet.getTemporaryAttribute("application-uri"), false);
}
// helper function
function addCoplet(profileManager, service, store, copletId) {
var coplet = profileManager.getCopletInstanceData(copletId);
var item = new Packages.org.apache.cocoon.portal.coplets.basket.ContentItem(coplet, true);
var event = new Packages.org.apache.cocoon.portal.coplets.basket.events.AddItemEvent(store, item);
service.getComponentManager().getEventManager().getPublisher().publish(event);
}
// process the form of the content portlet
function processBasket() {
var manager = cocoon.getComponent(org.apache.cocoon.portal.coplets.basket.BasketManager.ROLE);
var service = cocoon.getComponent(org.apache.cocoon.portal.PortalService.ROLE);
if ( service.getPortalName() == null ) {
service.setPortalName("portal");
}
// test parameters
var names = cocoon.request.getParameterNames();
while ( names.hasMoreElements()) {
var name = names.nextElement();
if ( name.startsWith("c" )) {
var id = name.substring(1);
var actionName = cocoon.request["a"+id];
var storage = cocoon.request["s"+id]
var store;
if ( storage.equals("basket" ) ) {
store = manager.getBasket();
} else if ( storage.equals("folger") ) {
store = manager.getFolder();
} else {
store = manager.getBriefcase();
}
var item = store.getItem(new Packages.java.lang.Long(id));
if ( "delete".equals(actionName) ) {
// delete
var event = new Packages.org.apache.cocoon.portal.coplets.basket.events.RemoveItemEvent(store, item);
service.getComponentManager().getEventManager().getPublisher().publish(event);
} else if ( "briefcase".equals(actionName) ) {
// move to briefcase
var event = new Packages.org.apache.cocoon.portal.coplets.basket.events.MoveItemEvent(store, item, manager.getBriefcase());
service.getComponentManager().getEventManager().getPublisher().publish(event);
} else if ( "basket".equals(actionName) ) {
// move to basket
var event = new Packages.org.apache.cocoon.portal.coplets.basket.events.MoveItemEvent(store, item, manager.getBasket());
service.getComponentManager().getEventManager().getPublisher().publish(event);
} else {
// this is a real action
var action;
if ( storage.equals("basket" ) ) {
action = manager.getBasketAction(actionName);
} else {
action = manager.getBriefcaseAction(actionName);
}
var freq = new Packages.java.lang.Integer(cocoon.request["f"+id]).intValue();
if ( cocoon.request["r"+id] != null ) {
// store values
item.setAttribute("action-replay", cocoon.request["r"+id]);
item.setAttribute("action-name", actionName);
item.setAttribute("action-freq", new java.lang.Long(freq).toString());
} else {
item.removeAttribute("action-name");
item.removeAttribute("action-freq");
item.removeAttribute("action-replay");
freq = -1;
}
manager.update(store);
// call batch
manager.addBatch(item, freq, action);
}
}
}
cocoon.redirectTo("../../portal", true);
}