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 + -
显示快捷键?