blob: 791c5a5ead04c4175b2ce1b786761e6de90477df [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.
*/
importClass(Packages.java.util.HashMap);
importClass(Packages.java.util.Map);
importClass(Packages.org.apache.cocoon.i18n.BundleFactory);
importClass(Packages.org.apache.cocoon.servlet.multipart.MultipartParser);
/*
A Cocoon System Library to provide upload progress bar support
@version $Id$
*/
// load the JSON Library
cocoon.load("System.JSON.js");
// setup the extensible System.Upload namespace
var System = System || {};
System.Upload = System.Upload || {};
/*
Retrieve a JSON Object containg data about the current file-upload
This flowscript is called by the FormsUploadProgress Dojo Widget
Requires the following sitemap parameters :
catalogue : the name of the i18n Catalogue to use for lookups
location : the path to the Catalogue's folder
*/
System.Upload.status = function(){
var json = "{}";
var i18n = null;
var status = cocoon.session.getAttribute(MultipartParser.UPLOAD_STATUS_SESSION_ATTR);
if (status instanceof Map && status.size() > 0) {
var tempMap = new HashMap();
tempMap.putAll(status);
var sent = Math.ceil(status.get("sent").intValue()/1024);
var total = Math.ceil(status.get("total").intValue()/1024);
var catalogue;
try {
i18n = cocoon.getComponent(BundleFactory.ROLE);
catalogue = i18n.select(cocoon.parameters["location"], cocoon.parameters["catalogue"], cocoon.request.getLocale());
} finally {
if (i18n != null) cocoon.releaseComponent(i18n);
}
if (status.get("finished").booleanValue()) {
tempMap.put("message", System.JSON.getI18nMessage("progress.finished", catalogue, [status.get("uploadsdone"), sent]));
status.clear();
} else if (sent) {
var percent = Math.floor((sent/total)*100) + "";
if (percent == "NaN") percent = "0";
tempMap.put("message", System.JSON.getI18nMessage("progress.sent", catalogue, [percent, sent, total, status.get("filename")]));
tempMap.put("percent", percent);
}
json = System.JSON.serializeMap(tempMap);
}
cocoon.sendPage("send-json", {json: json});
};
/*
A utility function to clear the current Upload Status
Used for debugging purposes only
*/
System.Upload.clear = function(){
var success = '{"cleared":true}';
var json = '{"cleared":false}';
var map = cocoon.session.getAttribute(MultipartParser.UPLOAD_STATUS_SESSION_ATTR);
if (map instanceof Map) {
var started = map.get("started") ? map.get("started").booleanValue() : null;
var finished = map.get("finished") ? map.get("finished").booleanValue() : null;
if (started && finished) {
map.clear();
json = success;
}
}
cocoon.sendPage("send-json", {json: json});
};