<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
<item key="key"><![CDATA[localfsExplorer]]></item>
<item key="value" type="dictionary"><dictionary>
<item key="__obj_attrs__" type="list"><list>
<item type="dictionary"><dictionary>
<item key="id"><![CDATA[path]]></item>
<item key="mandatory" type="int">1</item>
<item key="multilang" type="int">0</item>
<item key="name"><![CDATA[Path]]></item>
<item key="repetitive" type="int">0</item>
<item key="type"><![CDATA[string]]></item>
</dictionary>
</item>
<item type="dictionary"><dictionary>
<item key="default"><![CDATA[1]]></item>
<item key="id"><![CDATA[tunnel]]></item>
<item key="mandatory" type="int">0</item>
<item key="multilang" type="int">0</item>
<item key="name"><![CDATA[Tunnel]]></item>
<item key="repetitive" type="int">0</item>
<item key="type"><![CDATA[boolean]]></item>
</dictionary>
</item>
<item type="dictionary"><dictionary>
<item key="custom">
<data content_type="image/gif" filename="ico_explorer.gif" type="file">47494638396114001400b30000795a1cc28e2ca8969ccec9a8f8d06dc1d0dfe2f9faac8779fc02fc5c5d5ddfb049b2b3b4fbf99ba87815fae882ccb68c21f90401000008002c000000001400140003047d10c949abbd386b1d5408c636294669048508322c73364d105f41bb14b869348915388443a960281c3eb146e5a720ea9c40406f1220a09e05164121a574aeba014bd1e852ab03dd62e0707c120bef6a50182c1e0705a13c9d344804818202797c150f32308a000d0747701602099394948e7d22120b0798999e9fa00811003b</data></item>
<item key="id"><![CDATA[icon]]></item>
<item key="mandatory" type="int">0</item>
<item key="multilang" type="int">0</item>
<item key="name"><![CDATA[Icon]]></item>
<item key="repetitive" type="int">0</item>
<item key="type"><![CDATA[resource]]></item>
</dictionary>
</item>
<item type="dictionary"><dictionary>
<item key="custom">
<data content_type="image/gif" filename="ico_folderup.gif" type="file">47494638396114001400b30000187810318c2094ba8c69d13d679b59fbfbd2f8f39bd8ac2deaca64fc02fcd8b759d1e66fe7c24437ad1cc7c8b3e5ce9121f90401000009002c000000001400140003047d30c949abbd384f129cb602d000c4373962d304806012e2d0c824c61c07a0cf830e5c8747a1803b04068312e65030188685632f73705a1900240107342c100cc623b018080a0ae083f11c1e034e972588b02e8e040363a9282c9c1c000b0f0f4b0c4d8300010c08071e6a0f088d4507726a450a0f8f1a389a269fa0a111003b</data></item>
<item key="id"><![CDATA[ico_folderup]]></item>
<item key="mandatory" type="int">0</item>
<item key="multilang" type="int">0</item>
<item key="name"><![CDATA[Icon: Folder-Up]]></item>
<item key="repetitive" type="int">0</item>
<item key="type"><![CDATA[resource]]></item>
</dictionary>
</item>
<item type="dictionary"><dictionary>
<item key="custom">
<data content_type="image/gif" filename="icon_folder.gif" type="file">47494638396112001000f700004c4c4c6d6d6d6e6e6e9967019a68029c6a049e6c06a06e08a3710ba5730da87610ab7913ae7c16b07e18ff00ffb3811bb4811cb5821db7841fb88520ba8722bc8924bd8a25bf8c27c08d28c28f2ac5922dc7942fc99631cb9833cc9934d3a03bdca944e6b34eefbc57f8c560ffcc67ffd46fffe07b8383838c8c8cffe681ffeb85fff48efff791ffff99ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f9040100000e002c00000000120010000008ae001d081c48b0a0410f1d386c30c8d0838b872e323024e8b085c5162e2c509010e14183821d58ac183912e2430628087250914283cb97182a4c80f0e0c1c00d263498dc99c20582940e3494f070b1a8c5112d0e081098814487162ca24a8d2aa2858100023190d0d04285d7af5e43b42880d5810512175a9858cb762d881604ca522031a14589bb78ef7e683160a9c08e0d182c509000c1010305080c007082e0890090234b0ed078a2e5cb970302003b</data></item>
<item key="id"><![CDATA[ico_folder]]></item>
<item key="mandatory" type="int">0</item>
<item key="multilang" type="int">0</item>
<item key="name"><![CDATA[Icon: Folder]]></item>
<item key="repetitive" type="int">0</item>
<item key="type"><![CDATA[resource]]></item>
</dictionary>
</item>
<item type="dictionary"><dictionary>
<item key="custom"><![CDATA[<dtml-return "localfs_read(currentPath,mode='b',REQUEST=REQUEST)">]]></item>
<item key="id"><![CDATA[localfsExplorer_read]]></item>
<item key="mandatory" type="int">0</item>
<item key="multilang" type="int">0</item>
<item key="name"><![CDATA[LocalFS: Read]]></item>
<item key="repetitive" type="int">0</item>
<item key="type"><![CDATA[DTML Method]]></item>
</dictionary>
</item>
<item type="dictionary"><dictionary>
<item key="custom"><![CDATA[<dtml-call "REQUEST.RESPONSE.setHeader('Content-Type', 'text/xml; charset=utf-8')">
<?xml version="1.0" encoding="utf-8"?>
<dtml-call f_standard_html_request>
<dtml-let path="_.unicode(currentPath,'latin-1').encode('utf-8')">
<path id="<dtml-var "id_quote(path)">" level="<dtml-var "currentLevel+1">">
 <dtml-let readPath="localfs_readPath(path)">
  <dtml-in readPath mapping>
   <dtml-if isdir>
    <dir>
     <id><dtml-var "id_quote(local_filename.replace('\\','/'))"></id> 
     <local_filename><dtml-var "local_filename.replace('\\','/')"></local_filename> 
     <filename><dtml-var filename></filename>
     <timestamp><dtml-var "getLangFmtDate(mtime,lang,'SHORTDATETIME_FMT')"></timestamp>
    </dir>
   </dtml-if>
  </dtml-in>
  <dtml-in readPath mapping>
   <dtml-unless isdir>
    <dtml-let icon="getMimeTypeIconSrc(content_type)">
     <file>
      <local_filename><dtml-var "local_filename.replace('\\','/')"></local_filename> 
      <filename><dtml-var filename></filename>
      <timestamp><dtml-var "getLangFmtDate(mtime,lang,'SHORTDATETIME_FMT')"></timestamp>
      <size><dtml-var "getDataSizeStr(size)"></size>
      <icon><dtml-if "icon.find('unknown')>=0"><dtml-var MISC_ZMS>mime_type.application_octet_stream.gif<dtml-else><dtml-var icon></dtml-if></icon>
      <content_type><dtml-var content_type></content_type>
     </file>
    </dtml-let>
   </dtml-unless>
  </dtml-in>
 </dtml-let>
</path>
</dtml-let>]]></item>
<item key="id"><![CDATA[localfsExplorer_readPath.xml]]></item>
<item key="mandatory" type="int">0</item>
<item key="multilang" type="int">0</item>
<item key="name"><![CDATA[LocalFS: Read path (xml)]]></item>
<item key="repetitive" type="int">0</item>
<item key="type"><![CDATA[DTML Method]]></item>
</dictionary>
</item>
<item type="dictionary"><dictionary>
<item key="custom"><![CDATA[<!-- BO bodyContentZMSCustom_localfsExplorer -->

<dtml-let path="getObjProperty('path',REQUEST)" tunnel="getObjProperty('tunnel',REQUEST)" ico_folderup="getObjProperty('ico_folderup',REQUEST)" ico_folder="getObjProperty('ico_folder',REQUEST)">

<script language="JavaScript">
<!--//

function clickElement(id,currentPath,currentLevel) 
{
    var img = document.getElementById( id+"_img");
    var el = document.getElementById( id+"_children");
    if ( img.title == "-") {
      img.src = "<dtml-var MISC_ZMS>pl.gif";
      img.title = "+";
      el.style.visibility = "hidden";
      el.style.display = "none";
    }
    else 
    if ( img.title == "+") {
      img.src = "<dtml-var MISC_ZMS>mi.gif";
      img.title = "-";
      el.style.visibility = "visible";
      el.style.display = "inline";
      if ( ( el.childNodes.length < 1) || ( el.childNodes.length == 1 && el.firstChild.nodeType != 1)) {
        setxml(id,currentPath,currentLevel);
      }
    }
}

function setxml(id,currentPath,currentLevel) 
{
  document.getElementsByTagName('body')[0].style.cursor = "wait";
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  var url = "<dtml-var absolute_url>/localfsExplorer_readPath.xml?currentPath="+escape(currentPath)+"&currentLevel:int="+currentLevel;
  req.open("GET",url,true);
  req.onreadystatechange = processResponse;
  req.send(null);
}

function processResponse() 
{
  if ( req.readyState == 4) {
    document.getElementsByTagName('body')[0].style.cursor = "auto";
    if ( req.status == 200) {
      var id = req.responseXML.getElementsByTagName('path')[0].getAttribute('id');
      var level = req.responseXML.getElementsByTagName('path')[0].getAttribute('level');
      var el = document.getElementById( id+"_children");
      var dir = req.responseXML.getElementsByTagName('dir');
      for (var i = 0; i < dir.length; i++) {
        var ciId = dir[i].getElementsByTagName("id")[0].firstChild.data;
        var ciLocalFilename = dir[i].getElementsByTagName("local_filename")[0].firstChild.data;
        var ciFilename = dir[i].getElementsByTagName("filename")[0].firstChild.data;
        var ciTimestamp = dir[i].getElementsByTagName("timestamp")[0].firstChild.data;
        var div = document.createElement( "div");
        div.setAttribute( "id", ciId);
        var img = document.createElement( "img");
        img.setAttribute( "src", "<dtml-var spacer_gif>");
        img.setAttribute( "width", level*8);
        img.setAttribute( "height", 16);
        img.setAttribute( "border", 0);
        img.setAttribute( "align", "absmiddle");
        img.setAttribute( "title", "");
        div.appendChild( img);
        var a = document.createElement( "a");
        a.setAttribute( "href", "javascript:clickElement('" + ciId + "','" + ciLocalFilename + "'," + level + ");");
        var img = document.createElement( "img");
        img.setAttribute( "id", ciId + "_img");
        img.setAttribute( "src", "<dtml-var MISC_ZMS>pl.gif");
        img.setAttribute( "width", 16);
        img.setAttribute( "height", 16);
        img.setAttribute( "border", 0);
        img.setAttribute( "align", "absmiddle");
        img.setAttribute( "title", "+");
        a.appendChild( img);
        div.appendChild( a)
        var img = document.createElement( "img");
        img.setAttribute( "src", "<dtml-var "ico_folder.getHref(REQUEST)">");
        img.setAttribute( "border", 0);
        img.setAttribute( "align", "absmiddle");
        img.setAttribute( "title", "Folder, <dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: " + ciTimestamp);
        div.appendChild( img);
        div.appendChild( document.createTextNode( " " + ciFilename));
        // Children
        var div_children = document.createElement( "div");
        div_children.setAttribute( "id", ciId + "_children");
        div.appendChild( div_children);
        el.appendChild( div);
      }
      var file = req.responseXML.getElementsByTagName('file');
      for (var i = 0; i < file.length; i++) {
        var ciLocalFilename = file[i].getElementsByTagName("local_filename")[0].firstChild.data;
        var ciFilename = file[i].getElementsByTagName("filename")[0].firstChild.data;
        var ciTimestamp = file[i].getElementsByTagName("timestamp")[0].firstChild.data;
        var ciSize = file[i].getElementsByTagName("size")[0].firstChild.data;
        var ciIcon = file[i].getElementsByTagName("icon")[0].firstChild.data;
        var ciContentType = file[i].getElementsByTagName("content_type")[0].firstChild.data;
        var div = document.createElement( "div");
        var img = document.createElement( "img");
        img.setAttribute( "src", "<dtml-var spacer_gif>");
        img.setAttribute( "width", level*8+16);
        img.setAttribute( "height", 16);
        img.setAttribute( "border", 0);
        img.setAttribute( "align", "absmiddle");
        img.setAttribute( "title", "");
        div.appendChild( img);
        var a = document.createElement( "a");
        a.setAttribute( "href", "<dtml-if tunnel>localfsExplorer_read?currentPath=<dtml-else>file://</dtml-if>" + ciLocalFilename);
        a.setAttribute( "target", "_blank");
        var img = document.createElement( "img");
        img.setAttribute( "src", ciIcon);
        img.setAttribute( "border", 0);
        img.setAttribute( "align", "absmiddle");
        img.setAttribute( "title", "<dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: " + ciTimestamp);
        a.appendChild( img);
        a.appendChild( document.createTextNode( ciFilename));
        div.appendChild( a)
        // Size
        div.appendChild( document.createTextNode( " (" + ciSize + ")"));
        el.appendChild( div);
      }
    } else {
      error = "error: \n";
      for(var r in req) { error += "variable: " + r + ", value: " + req[r] + "\n"; }
      alert(error);
    }
  }
}

//-->
</script>


<p>
 <div>
  <img src="<dtml-var "ico_folderup.getHref(REQUEST)">" border="0" title="Location" align="absmiddle"/> <strong>Location:</strong> <span style="color:blue;text-decoration:underline;"><dtml-var path></span>
 </div>
 <dtml-let readPath="localfs_readPath(path)">
  <dtml-in readPath mapping>
   <dtml-let id="id_quote(local_filename.replace('\\','/'))">
    <dtml-if isdir>
     <div id="<dtml-var id>">
      <a href="javascript:clickElement('<dtml-var id>','<dtml-var "local_filename.replace('\\','/')">',0);"><img id="<dtml-var id>_img" src="<dtml-var MISC_ZMS>pl.gif" width="16" height="16" title="+" border="0" align="absmiddle"/></a><img src="<dtml-var "ico_folder.getHref(REQUEST)">" border="0" title="Folder, <dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: <dtml-var "getLangFmtDate(mtime,lang,'SHORTDATETIME_FMT')">" align="absmiddle"/> <dtml-var filename>
     </div>
     <div id="<dtml-var id>_children"></div>
    </dtml-if>
   </dtml-let>
  <dtml-else>
   <div><em>Empty</em></div>
  </dtml-in>
  <dtml-in readPath mapping>
   <dtml-unless isdir>
    <dtml-let icon="getMimeTypeIconSrc(content_type)">
     <div>
      <img src="<dtml-var spacer_gif>" alt="" border="0" width="16" height="16" align="absmiddle"/><a href="<dtml-if tunnel>localfsExplorer_read?currentPath=<dtml-else>file://</dtml-if><dtml-var local_filename>" target="_blank" title="<dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: <dtml-var "getLangFmtDate(mtime,lang,'SHORTDATETIME_FMT')">"><img src="<dtml-if "icon.find('unknown')>=0"><dtml-var MISC_ZMS>mime_type.application_octet_stream.gif<dtml-else><dtml-var icon></dtml-if>" alt="<dtml-var content_type>" border="0" align="absmiddle"/><dtml-var filename></a> (<dtml-var "getDataSizeStr(size)">)
     </div>
    </dtml-let>
   </dtml-unless>
  </dtml-in>
 </dtml-let>
</p>

</dtml-let>

<!-- EO bodyContentZMSCustom_localfsExplorer -->
]]></item>
<item key="id"><![CDATA[bodyContentZMSCustom_localfsExplorer]]></item>
<item key="mandatory" type="int">0</item>
<item key="multilang" type="int">0</item>
<item key="name"><![CDATA[Template: LocalFS-Explorer]]></item>
<item key="repetitive" type="int">0</item>
<item key="type"><![CDATA[DTML Method]]></item>
</dictionary>
</item>
</list>
</item>
<item key="access" type="dictionary"><dictionary>
<item key="delete" type="list"><list>
<item><![CDATA[ZMSAdministrator]]></item>
<item><![CDATA[ZMSAuthor]]></item>
<item><![CDATA[ZMSEditor]]></item>
</list>
</item>
<item key="delete_custom"/>
<item key="edit" type="list"><list>
<item><![CDATA[ZMSAdministrator]]></item>
<item><![CDATA[ZMSAuthor]]></item>
<item><![CDATA[ZMSEditor]]></item>
</list>
</item>
<item key="edit_custom"/>
<item key="insert" type="list"><list>
<item><![CDATA[ZMSAdministrator]]></item>
<item><![CDATA[ZMSAuthor]]></item>
<item><![CDATA[ZMSEditor]]></item>
</list>
</item>
<item key="insert_custom"><![CDATA[{$}]]></item>
</dictionary>
</item>
<item key="acquired" type="int">0</item>
<item key="enabled" type="int">1</item>
<item key="id"><![CDATA[localfsExplorer]]></item>
<item key="name"><![CDATA[LocalFS-Explorer]]></item>
<item key="package"/>
<item key="type"><![CDATA[ZMSObject]]></item>
</dictionary>
</item>
</dictionary>