1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<!--
3 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
4 * Copyright (C) 2003-2009 Frederico Caldeira Knabben
5 *
6 * == BEGIN LICENSE ==
7 *
8 * Licensed under the terms of any of the following licenses at your
9 * choice:
10 *
11 *  - GNU General Public License Version 2 or later (the "GPL")
12 *    http://www.gnu.org/licenses/gpl.html
13 *
14 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
15 *    http://www.gnu.org/licenses/lgpl.html
16 *
17 *  - Mozilla Public License Version 1.1 or later (the "MPL")
18 *    http://www.mozilla.org/MPL/MPL-1.1.html
19 *
20 * == END LICENSE ==
21 *
22 * This page shows the list of folders available in the parent folder
23 * of the current folder.
24-->
25<html>
26	<head>
27		<title>Folders</title>
28		<link href="browser.css" type="text/css" rel="stylesheet">
29		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
30		<script type="text/javascript" src="js/common.js"></script>
31		<script type="text/javascript" src="js/language.js"></script>
32		<script type="text/javascript" src="js/safeFN_class.js"></script>
33		<script type="text/javascript">
34
35/* requires safe_ascii */
36
37var sActiveFolder ;
38
39var bIsLoaded = false ;
40var iIntervalId ;
41var DwikiFNencode = parent.DwikiFNencode;;
42var oListManager = new Object() ;
43
44function getHTTPObject()
45{
46	if (window.XMLHttpRequest)
47	{
48		return  new XMLHttpRequest();
49	}
50	else
51	{
52		if (window.ActiveXObject)
53		{
54			return new ActiveXObject("Microsoft.XMLHTTP");
55		}
56		else
57		{
58                        alert(translateItem('FileBrowserError_Ajax', 'Your browser does not support AJAX.'));
59			return null;
60		}
61	}
62}
63
64function GetCurentFolder()
65{
66	httpObject = getHTTPObject();
67	if (httpObject != null)
68	{
69		httpObject.onreadystatechange = GetCurentFolder_from_Request;
70		httpObject.open("GET", '../../connectors/php/connector.php?Command=GetDwfckNs&Type=File&CurrentFolder=nothing', true);
71		httpObject.send(null);
72
73	}
74}
75
76function GetCurentFolder_from_Request()
77{
78	if (httpObject.readyState == 4)
79	{
80		if (httpObject.status == 200)
81		{
82			response = (httpObject.responseText);
83			res = response.replace(/:/g,"/");
84            if(res.match(/lib\/plugins\/ckgdoku\/fckeditor\/userfiles\/image/)) {
85                  res = '';  // temp fix for puzzling encoding=url bug in frmresourceslist.html,
86                             // where image loading is processed in GetFileRowHtml()
87            }
88			if(res!='')
89			{
90				res = "/" + res + "/";
91			}
92			else
93			{
94				res = "/";
95			}
96			LoadFolders(res);
97		}
98	}
99}
100oListManager.Init = function()
101{
102	this.Table = document.getElementById('tableFiles') ;
103	this.UpRow = document.getElementById('trUp') ;
104
105	this.TableRows = new Object() ;
106}
107
108oListManager.Clear = function()
109{
110	// Remove all other rows available.
111	while ( this.Table.rows.length > 1 )
112		this.Table.deleteRow(1) ;
113
114	// Reset the TableRows collection.
115	this.TableRows = new Object() ;
116}
117
118oListManager.AddItem = function( folderName, folderPath, folder_class )
119{
120	// Create the new row.
121	var oRow = this.Table.insertRow(-1) ;
122   if(folder_class == 'r') {
123      	oRow.className = 'FolderListFolderRO'
124   }
125   else {
126 	oRow.className = 'FolderListFolder' ;
127   }
128
129    folderName = dwikiUTF8_decodeFN(folderName,DwikiFNencode);
130    folderPath = dwikiUTF8_decodeFN(folderPath,DwikiFNencode);
131//    folderPath = decodeURI(folderPath);
132
133	// Build the link to view the folder.
134	var sLink = '<a href="#" onclick="OpenFolder(\'' + dwikiUTF8_encodeFN(folderPath,DwikiFNencode) + '\');return false;">' ;
135
136	// Add the folder icon cell.
137	var oCell = oRow.insertCell(-1) ;
138	oCell.width = 16 ;
139	oCell.innerHTML = sLink + '<img alt="" src="images/spacer.gif" width="16" height="16" border="0"><\/a>' ;
140
141	// Add the folder name cell.
142	oCell = oRow.insertCell(-1) ;
143	oCell.noWrap = true ;
144	oCell.innerHTML = '&nbsp;' + sLink + folderName + '<\/a>' ;
145
146	this.TableRows[ folderPath ] = oRow ;
147}
148
149oListManager.ShowUpFolder = function( upFolderPath )
150{
151	this.UpRow.style.display = ( upFolderPath != null ? '' : 'none' ) ;
152
153	if ( upFolderPath != null )
154	{
155		document.getElementById('linkUpIcon').onclick = document.getElementById('linkUp').onclick = function()
156		{
157			LoadFolders( upFolderPath ) ;
158			return false ;
159		}
160	}
161}
162
163function CheckLoaded()
164{
165	if ( window.top.IsLoadedActualFolder
166		&& window.top.IsLoadedCreateFolder
167		&& window.top.IsLoadedUpload
168		&& window.top.IsLoadedResourcesList )
169	{
170		window.clearInterval( iIntervalId ) ;
171		bIsLoaded = true ;
172		GetCurentFolder();
173		//OpenFolder( sActiveFolder ) ;
174	}
175}
176
177function OpenFolder( folderPath )
178{
179	sActiveFolder = folderPath ;
180
181	if ( ! bIsLoaded )
182	{
183		if ( ! iIntervalId )
184			iIntervalId = window.setInterval( CheckLoaded, 100 ) ;
185		return ;
186	}
187
188	// Change the style for the select row (to show the opened folder).
189	for ( var sFolderPath in oListManager.TableRows )
190	{
191        $ronly = "";
192        if(oListManager.TableRows[ sFolderPath ].className.match(/RO/)) {
193             $ronly='RO';
194
195        }
196		oListManager.TableRows[ sFolderPath ].className =
197			( sFolderPath == folderPath ? 'FolderListCurrentFolder' + $ronly : 'FolderListFolder' + $ronly ) ;
198	}
199
200	// Set the current folder in all frames.
201	window.parent.frames['frmActualFolder'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
202	window.parent.frames['frmCreateFolder'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
203	window.parent.frames['frmUpload'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
204
205	// Load the resources list for this folder.
206	window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, folderPath ) ;
207}
208
209function LoadFolders( folderPath )
210{
211	// Clear the folders list.
212	oListManager.Clear() ;
213
214	// Get the parent folder path.
215	var sParentFolderPath ;
216	if ( folderPath != '/' )
217		sParentFolderPath = folderPath.substring( 0, folderPath.lastIndexOf( '/', folderPath.length - 2 ) + 1 ) ;
218
219	// Show/Hide the Up Folder.
220	oListManager.ShowUpFolder( sParentFolderPath ) ;
221
222	if ( folderPath != '/' )
223	{
224		sActiveFolder = folderPath ;
225		oConnector.CurrentFolder = sParentFolderPath ;
226		oConnector.SendCommand( 'GetFolders', null, GetFoldersCallBack ) ;
227	}
228	else
229		OpenFolder( '/' ) ;
230
231
232}
233
234function GetFoldersCallBack( fckXml )
235{
236	if ( oConnector.CheckError( fckXml ) != 0 )
237		return ;
238
239	// Get the current folder path.
240	var oNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
241	var sCurrentFolderPath = oNode.attributes.getNamedItem('path').value ;
242
243	var oNodes = fckXml.SelectNodes( 'Connector/Folders/Folder' ) ;
244
245	for ( var i = 0 ; i < oNodes.length ; i++ )
246	{
247		// var sFolderName = decodeURI(oNodes[i].attributes.getNamedItem('name').value) ;
248        var sFolderName = dwikiUTF8_decodeFN(oNodes[i].attributes.getNamedItem('name').value,DwikiFNencode);
249        var folder_class = oNodes[i].attributes.getNamedItem('class').value ;
250		oListManager.AddItem( sFolderName, sCurrentFolderPath + sFolderName + '/', folder_class ) ;
251	}
252
253	OpenFolder( sActiveFolder ) ;
254}
255
256function SetResourceType( type )
257{
258	oConnector.ResourceType = type ;
259	LoadFolders( '/' ) ;
260}
261
262window.onload = function()
263{
264        setupLanguage();
265	oListManager.Init() ;
266	LoadFolders( '/' ) ;
267}
268		</script>
269	</head>
270	<body class="FileArea">
271		<table id="tableFiles" cellSpacing="0" cellPadding="0" width="100%" border="0">
272			<tr id="trUp" style="DISPLAY: none">
273				<td width="16"><a id="linkUpIcon" href="#"><img alt="" src="images/FolderUp.gif" width="16" height="16" border="0"></a></td>
274				<td nowrap width="100%">&nbsp;<a id="linkUp" href="#">..</a></td>
275			</tr>
276		</table>
277	</body>
278</html>
279