util.js
来自「Hippo CMS是一个以信息为中心的开源内容管理系统。Hippo CMS目标是」· JavaScript 代码 · 共 238 行
JS
238 行
/*
* Copyright 2001-2007 Hippo (www.hippo.nl)
*
* 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.
*/
/**
* returns a DOM object representing the XML document at location @uri
*/
function loadDocument(uri) {
var parser = null;
var source = null;
var resolver = null;
try {
parser = cocoon.getComponent(Packages.org.apache.excalibur.xml.dom.DOMParser.ROLE);
resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
source = resolver.resolveURI(uri);
var is = new Packages.org.xml.sax.InputSource(source.getInputStream());
is.setSystemId(source.getURI());
return parser.parseDocument(is);
}
finally {
if (source != null)
resolver.release(source);
cocoon.releaseComponent(parser);
cocoon.releaseComponent(resolver);
}
}
function setAttribute(document, nodeName, attributeName, attributeValue){
var result = false;
var nodes = document.getElementsByTagName(nodeName);
if (nodes.getLength() > 0) {
var element = nodes.item(0);
if (element != null) {
element.setAttribute(attributeName, attributeValue);
}
}
}
function setTextNode(document,nodeName,nodeValue){
var result=false;
var nodes=document.getElementsByTagName(nodeName);
if (nodes.getLength() > 0){
var element=nodes.item(0);
if (element.getFirstChild()==null) {
element.appendChild(document.createTextNode(nodeValue));
result=true;
} else {
element.getFirstChild().setNodeValue(nodeValue);
result=true;
}
}
return result;
}
/**
* saves a DOM object (document) to an XML file at location uri.
*/
function saveDocument(document, uri) {
var source = null;
var resolver = null;
var outputStream = null;
try {
resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
source = resolver.resolveURI(uri);
cocoon.log.error(source.getFile().toString());
var tf = Packages.javax.xml.transform.TransformerFactory.newInstance();
if (source instanceof Packages.org.apache.excalibur.source.ModifiableSource
&& tf.getFeature(Packages.javax.xml.transform.sax.SAXTransformerFactory.FEATURE)) {
outputStream = source.getOutputStream();
var transformerHandler = tf.newTransformerHandler();
var transformer = transformerHandler.getTransformer();
transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.INDENT, "true");
transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.METHOD, "xml");
transformerHandler.setResult(new Packages.javax.xml.transform.stream.StreamResult(outputStream));
var streamer = new Packages.org.apache.cocoon.xml.dom.DOMStreamer(transformerHandler);
streamer.stream(document);
} else {
throw new Packages.org.apache.cocoon.ProcessingException("Cannot write to source " + uri);
}
} finally {
if (source != null)
resolver.release(source);
cocoon.releaseComponent(resolver);
if (outputStream != null) {
try {
outputStream.flush();
outputStream.close();
} catch (error) {
cocoon.log.error("Could not flush/close outputstream: " + error);
}
}
}
}
function deleteDocument(uri) {
var source = null;
var resolver = null;
try {
resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
source = resolver.resolveURI(uri);
source["delete"]();
}
catch (error) {
cocoon.log.error("Error occured while deleting document: " + error);
}
finally {
if (source != null)
resolver.release(source);
cocoon.releaseComponent(resolver);
}
}
function createDirectory(uri)
{
var source = null;
var resolver = null;
var path = uri;
try {
resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
source = resolver.resolveURI(uri);
if (!source["exists"]()) {
source["makeCollection"]();
}
}
catch (error) {
cocoon.log.error("Error occured while creating directory: " + error);
}
finally {
if (source != null)
resolver.release(source);
cocoon.releaseComponent(resolver);
}
}
/**
* checks if a file exists at location @uri
*/
function checkExist(uri)
{
var source = null;
var resolver = null;
try {
resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
source = resolver.resolveURI(uri);
if(source.exists())
{
return true;
}
else
{
return false;
}
}
finally
{
if (source != null)
{
resolver.release(source);
}
cocoon.releaseComponent(resolver);
}
}
function deleteDirectory(uri) {
var source = null;
var resolver = null;
var path = uri;
try {
resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
source = resolver.resolveURI(uri);
if (source["isCollection"]()) {
var childrenof = source["getChildren"]();
var childnodes = childrenof.toArray();
for (i=0; i<childnodes.length; i++) {
deleteDirectory(path + "/"+childnodes[i].getName().toString());
}
}
source["delete"]();
}
catch (error) {
cocoon.log.error("Error occured while deleting directory: " + error);
}
finally {
if (source != null)
resolver.release(source);
cocoon.releaseComponent(resolver);
}
}
function dirExistsCreate(){
var redirect=cocoon.parameters["redirect"];
var dir=cocoon.parameters["dir"];
createDirectory(dir);
cocoon.redirectTo(redirect);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?