2 /***********************************************************************
3 ** Title.........: Insert File Dialog, File Manager
5 ** Authors.......: Al Rashid <alrashid@klokan.sk>
6 ** Xiang Wei ZHUO <wei@zhuo.org>
7 ** Filename......: insert_file.php
8 ** URL...........: http://alrashid.klokan.sk/insFile/
9 ** Last changed..: 23 July 2004
10 ***********************************************************************/
11 require('config.inc.php');
13 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
16 <title>Insert File</title>
18 echo '<META HTTP-EQUIV="Pragma" CONTENT="no-cache">'."\n";
19 echo '<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">'."\n";
20 echo '<META HTTP-EQUIV="Expires" CONTENT="Fri, Oct 24 1976 00:00:00 GMT">'."\n";
21 echo '<meta http-equiv="content-language" content="'.$MY_LANG.'" />'."\n";
22 echo '<meta http-equiv="Content-Type" content="text/html; charset='.$MY_CHARSET.'" />'."\n";
23 echo '<meta name="author" content="AlRashid, www: http://alrashid.klokan.sk; mailto:alrashid@klokan.sk" />'."\n";
25 <script type="text/javascript" src="js/popup.js"></script>
26 <script type="text/javascript" src="js/dialog.js"></script>
27 <script language="javascript" src="../../../tiny_mce_popup.js"></script>
28 <style type="text/css">
29 body { padding: 5px; }
31 font: 11px Tahoma,Verdana,sans-serif;
37 fieldset { padding: 0px 10px 5px 5px; }
38 select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
39 button { width: 70px; }
41 .title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
42 border-bottom: 1px solid black; letter-spacing: 2px;
44 form { padding: 0px; margin: 0px; }
45 a { padding: 2px; border: 1px solid ButtonFace; }
46 a img { border: 0px; vertical-align:bottom; }
47 a:hover { border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; }
51 <script language="JavaScript" type="text/JavaScript">
53 var preview_window = null;
54 var resize_iframe_constant = 150;
56 if (is_array($MY_DENY_EXTENSIONS)) {
57 echo 'var DenyExtensions = [';
58 foreach($MY_DENY_EXTENSIONS as $value) echo '"'.$value.'", ';
62 if (is_array($MY_ALLOW_EXTENSIONS)) {
63 echo 'var AllowExtensions = [';
64 foreach($MY_ALLOW_EXTENSIONS as $value) echo '"'.$value.'", ';
76 "f_url": "You must enter the URL",
77 "f_caption": "Please enter the caption text"
79 for (var i in required) {
80 var el = MM_findObj(i);
88 var myPath = fileManager.document.getElementById('form2').elements["path"].value;
89 var fileItems = fileManager.stb.getSelectedItems();
90 var fileItemsLength = fileItems.length;
91 var returnFiles = new Array();
93 for (var i=0; i<fileItemsLength; i++) {
94 var strId = fileItems[i].getAttribute("id").toString();
95 var trId = parseInt(strId.substring(1, strId.length));
96 returnFiles[i] = new Array();
97 returnFiles[i][0] = fileManager.fileJSArray[trId][0];
98 returnFiles[i][1] = fileManager.fileJSArray[trId][1];
99 returnFiles[i][2] = fileManager.fileJSArray[trId][2];
100 returnFiles[i][3] = fileManager.fileJSArray[trId][3];
103 var formObj = document.forms[0];
104 var base_path = '<?php echo $MY_BASE_URL; ?>';
105 var files = returnFiles;
106 var path = base_path+myPath;
107 editor_url = tinyMCE.baseURL;
108 plugin_url = "/plugins/filemanager/InsertFile/";
109 var f_url = formObj.f_url.value;
110 var f_caption = formObj.f_caption.value;
112 for (var k in files){
113 var fileValues = files[k];
114 var f_icon = editor_url+plugin_url+fileValues[0];
115 var f_size = fileValues[2];
116 var f_date = fileValues[3];
122 if (formObj.f_addicon.checked==true) {
123 icon = '<img src="' + f_icon + '" alt="' + f_caption + '"> ';
125 if (formObj.f_addsize.checked==true || formObj.f_adddate.checked==true) caption = caption + ' (<span style="font-size:80%">';
126 if (formObj.f_addsize.checked==true) caption = caption + f_size;
127 if (formObj.f_adddate.checked==true) caption = caption + ' ' + f_date;
128 if (formObj.f_addsize.checked==true || formObj.f_adddate.checked==true) caption = caption + '</span>) ';
129 alink = icon + '<a href="' + f_url + '">' + f_caption + '</a>' + caption;
131 tinyMCE.execCommand("mceInsertContent",true,alink);
137 function onCancel() {
142 function changeDir(selection) {
143 changeLoadingStatus('load');
144 var newDir = selection.options[selection.selectedIndex].value;
145 var postForm2 = fileManager.document.getElementById('form2');
146 postForm2.elements["action"].value="changeDir";
147 postForm2.elements["path"].value=newDir;
152 var selection = document.forms[0].path;
153 var dir = selection.options[selection.selectedIndex].value;
155 changeLoadingStatus('load');
156 var postForm2 = fileManager.document.getElementById('form2');
157 postForm2.elements["action"].value="changeDir";
158 postForm2.elements["path"].value=postForm2.elements["uppath"].value;
163 function newFolder() {
164 var selection = document.forms[0].path;
165 var path = selection.options[selection.selectedIndex].value;
166 var folder = prompt('<?php echo $MY_MESSAGES['newfolder']; ?>','');
168 changeLoadingStatus('load');
169 var postForm2 = fileManager.document.getElementById('form2');
170 postForm2.elements["action"].value="createFolder";
171 postForm2.elements["file"].value=folder;
177 function deleteFile() {
178 var folderItems = fileManager.sta.getSelectedItems();
179 var folderItemsLength = folderItems.length;
180 var fileItems = fileManager.stb.getSelectedItems();
181 var fileItemsLength = fileItems.length;
182 var message = "<?php echo $MY_MESSAGES['delete']; ?>";
183 if ((folderItemsLength == 0) && (fileItemsLength == 0)) return false;
184 if (folderItemsLength > 0) {
185 message = message + " " + folderItemsLength + " " + "<?php echo $MY_MESSAGES['folders']; ?>";
187 if (fileItemsLength > 0) {
188 message = message + " " + fileItemsLength + " " + "<?php echo $MY_MESSAGES['files']; ?>";
190 if (confirm(message+" ?")) {
191 var postForm2 = fileManager.document.getElementById('form2');
192 for (var i=0; i<folderItemsLength; i++) {
193 var strId = folderItems[i].getAttribute("id").toString();
194 var trId = parseInt(strId.substring(1, strId.length));
195 var i_field = fileManager.document.createElement('INPUT');
196 i_field.type = 'hidden';
197 i_field.name = 'folders[' + i.toString() + ']';
198 i_field.value = fileManager.folderJSArray[trId][1];
199 postForm2.appendChild(i_field);
201 for (var i=0; i<fileItemsLength; i++) {
202 var strId = fileItems[i].getAttribute("id").toString();
203 var trId = parseInt(strId.substring(1, strId.length));
204 var i_field = fileManager.document.createElement('INPUT');
205 i_field.type = 'hidden';
206 i_field.name = 'files[' + i.toString() + ']';
207 i_field.value = fileManager.fileJSArray[trId][1];
208 postForm2.appendChild(i_field);
210 changeLoadingStatus('load');
211 postForm2.elements["action"].value="delete";
216 function renameFile() {
217 var folderItems = fileManager.sta.getSelectedItems();
218 var folderItemsLength = folderItems.length;
219 var fileItems = fileManager.stb.getSelectedItems();
220 var fileItemsLength = fileItems.length;
221 var postForm2 = fileManager.document.getElementById('form2');
222 if ((folderItemsLength == 0) && (fileItemsLength == 0)) return false;
223 if (!confirm('<?php echo $MY_MESSAGES['renamewarning']; ?>')) return false;
224 for (var i=0; i<folderItemsLength; i++) {
225 var strId = folderItems[i].getAttribute("id").toString();
226 var trId = parseInt(strId.substring(1, strId.length));
227 var newname = prompt('<?php echo $MY_MESSAGES['renamefolder']; ?>', fileManager.folderJSArray[trId][1]);
228 if (!newname) continue;
229 if (!newname == fileManager.folderJSArray[trId][1]) continue;
230 var i_field = fileManager.document.createElement('INPUT');
231 i_field.type = 'hidden';
232 i_field.name = 'folders[' + i.toString() + '][oldname]';
233 i_field.value = fileManager.folderJSArray[trId][1];
234 postForm2.appendChild(i_field);
235 var ii_field = fileManager.document.createElement('INPUT');
236 ii_field.type = 'hidden';
237 ii_field.name = 'folders[' + i.toString() + '][newname]';
238 ii_field.value = newname;
239 postForm2.appendChild(ii_field);
241 for (var i=0; i<fileItemsLength; i++) {
242 var strId = fileItems[i].getAttribute("id").toString();
243 var trId = parseInt(strId.substring(1, strId.length));
244 var newname = getNewFileName(fileManager.fileJSArray[trId][1]);
245 if (!newname) continue;
246 if (newname == fileManager.fileJSArray[trId][1]) continue;
247 var i_field = fileManager.document.createElement('INPUT');
248 i_field.type = 'hidden';
249 i_field.name = 'files[' + i.toString() + '][oldname]';
250 i_field.value = fileManager.fileJSArray[trId][1];
251 postForm2.appendChild(i_field);
252 var ii_field = fileManager.document.createElement('INPUT');
253 ii_field.type = 'hidden';
254 ii_field.name = 'files[' + i.toString() + '][newname]';
255 ii_field.value = newname;
256 postForm2.appendChild(ii_field);
258 changeLoadingStatus('load');
259 postForm2.elements["action"].value="rename";
263 function moveFile() {
264 var folderItems = fileManager.sta.getSelectedItems();
265 var folderItemsLength = folderItems.length;
266 var fileItems = fileManager.stb.getSelectedItems();
267 var fileItemsLength = fileItems.length;
268 var postForm2 = fileManager.document.getElementById('form2');
269 if ((folderItemsLength == 0) && (fileItemsLength == 0)) return false;
270 if (!confirm('<?php echo $MY_MESSAGES['renamewarning']; ?>')) return false;
271 var postForm2 = fileManager.document.getElementById('form2');
272 Dialog("move.php", function(param) {
273 if (!param) // user must have pressed Cancel
276 postForm2.elements["newpath"].value=param['newpath'];
282 function moveFiles() {
283 var folderItems = fileManager.sta.getSelectedItems();
284 var folderItemsLength = folderItems.length;
285 var fileItems = fileManager.stb.getSelectedItems();
286 var fileItemsLength = fileItems.length;
287 var postForm2 = fileManager.document.getElementById('form2');
288 for (var i=0; i<folderItemsLength; i++) {
289 var strId = folderItems[i].getAttribute("id").toString();
290 var trId = parseInt(strId.substring(1, strId.length));
291 var i_field = fileManager.document.createElement('INPUT');
292 i_field.type = 'hidden';
293 i_field.name = 'folders[' + i.toString() + ']';
294 i_field.value = fileManager.folderJSArray[trId][1];
295 postForm2.appendChild(i_field);
297 for (var i=0; i<fileItemsLength; i++) {
298 var strId = fileItems[i].getAttribute("id").toString();
299 var trId = parseInt(strId.substring(1, strId.length));
300 var i_field = fileManager.document.createElement('INPUT');
301 i_field.type = 'hidden';
302 i_field.name = 'files[' + i.toString() + ']';
303 i_field.value = fileManager.fileJSArray[trId][1];
304 postForm2.appendChild(i_field);
306 changeLoadingStatus('load');
307 postForm2.elements["action"].value="move";
311 function openFile() {
312 var urlPrefix = "<?php echo $MY_URL_TO_OPEN_FILE; ?>";
313 var myPath = fileManager.document.getElementById('form2').elements["path"].value;
314 var folderItems = fileManager.sta.getSelectedItems();
315 var folderItemsLength = folderItems.length;
316 var fileItems = fileManager.stb.getSelectedItems();
317 var fileItemsLength = fileItems.length;
319 for (var i=0; i<folderItemsLength; i++) {
320 var strId = folderItems[i].getAttribute("id").toString();
321 var trId = parseInt(strId.substring(1, strId.length));
322 window.open(urlPrefix+myPath+fileManager.folderJSArray[trId][1],'','');
324 for (var i=0; i<fileItemsLength; i++) {
325 var strId = fileItems[i].getAttribute("id").toString();
326 var trId = parseInt(strId.substring(1, strId.length));
327 window.open(urlPrefix+myPath+fileManager.fileJSArray[trId][1],'','');
331 function doUpload() {
333 var fileObj = document.forms[0].uploadFile;
334 if (fileObj == null) return false;
336 newname = fileObj.value;
337 isOK = checkExtension(newname);
339 alert('<?php echo $MY_MESSAGES['extnotallowed']; ?>');
343 alert('<?php echo $MY_MESSAGES['extmissing']; ?>');
346 changeLoadingStatus('upload');
349 function checkExtension(name) {
350 var regexp = /\/|\\/;
351 var parts = name.split(regexp);
352 var filename = parts[parts.length-1].split(".");
353 if (filename.length <= 1) {
356 var ext = filename[filename.length-1].toLowerCase();
358 for (i=0; i<DenyExtensions.length; i++) {
359 if (ext == DenyExtensions[i]) return(-2);
361 for (i=0; i<AllowExtensions.length; i++) {
362 if (ext == AllowExtensions[i]) return(1);
367 function getNewFileName(name) {
371 newname = prompt('<?php echo $MY_MESSAGES['renamefile']; ?>', name);
372 if (!newname) return false;
373 isOK = checkExtension(newname);
374 if (isOK == -2) alert('<?php echo $MY_MESSAGES['extnotallowed']; ?>');
375 if (isOK == -1) alert('<?php echo $MY_MESSAGES['extmissing']; ?>');
380 function selectFolder() {
381 Dialog("move.php", function(param) {
382 if (!param) // user must have pressed Cancel
385 var postForm2 = fileManager.document.getElementById('form2');
386 postForm2.elements["newpath"].value=param['newpath'];
392 function refreshPath(){
393 var selection = document.forms[0].path;
394 changeDir(selection);
398 if (window.innerHeight)
399 return window.innerHeight;
401 (document.documentElement &&
402 document.documentElement.clientHeight)
403 return document.documentElement.clientHeight;
405 (document.body && document.body.clientHeight)
406 return document.body.clientHeight;
411 function resize_iframe() {
412 document.getElementById("fileManager").height=winH()-resize_iframe_constant;//resize the iframe according to the size of the window
415 function MM_findObj(n, d) { //v4.01
416 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
417 d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
418 if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
419 for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
420 if(!x && d.getElementById) x=d.getElementById(n); return x;
423 function MM_showHideLayers() { //v6.0
424 var i,p,v,obj,args=MM_showHideLayers.arguments;
425 for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
426 if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
430 function changeLoadingStatus(state) {
431 var statusText = null;
432 if(state == 'load') {
433 statusText = '<?php echo $MY_MESSAGES['loading']; ?> ';
435 else if(state == 'upload') {
436 statusText = '<?php echo $MY_MESSAGES['uploading']; ?>';
438 if(statusText != null) {
439 var obj = MM_findObj('loadingStatus');
440 if (obj != null && obj.innerHTML != null)
441 obj.innerHTML = statusText;
442 MM_showHideLayers('loading','','show')
449 <body onload="Init();">
450 <div class="title"><img src="../images/filemanager.gif" border="0" align="absmiddle">
451 <?php echo $MY_MESSAGES['insertfile']; ?>
453 <form action="files.php?dialogname=<?php echo $MY_NAME; ?>" name="form1" method="post" target="fileManager" enctype="multipart/form-data">
454 <div id="loading" style="position:absolute; left:200px; top:130px; width:184px; height:48px; z-index:1" class="statusLayer">
455 <div id= "loadingStatus" align="center" style="font-size:large;font-weight:bold;color:#CCCCCC;font-family: Helvetica, sans-serif; z-index:2; ">
456 <?php echo $MY_MESSAGES['loading']; ?>
462 echo $MY_MESSAGES['filemanager'];
463 echo '<span style="font-size:x-small; "> - '.$MY_MESSAGES['ctrlshift'].'</span>';
466 <div style="margin:5px;">
468 <?php echo $MY_MESSAGES['directory']; ?>
470 <select name="path" id="path" style="width:35em" onChange="changeDir(this)">
471 <option value="/">/</option>
475 echo '<a href="#" onClick="javascript:goUpDir();"><img src="img/btn_up.gif" width="18" height="18" border="0" title="'.$MY_MESSAGES['up'].'" /></a>';
476 if ($MY_ALLOW_CREATE) {
477 echo '<a href="#" onClick="javascript:newFolder();"><img src="img/btn_create.gif" width="18" height="18" border="0" title="'.$MY_MESSAGES['newfolder'].'" /></a>';
479 if ($MY_ALLOW_DELETE) {
480 echo '<a href="#" onClick="javascript:deleteFile();"><img src="img/btn_delete.gif" width="18" height="18" border="0" title="'.$MY_MESSAGES['delete'].'" /></a>';
482 if ($MY_ALLOW_RENAME) {
483 echo '<a href="#" onClick="javascript:renameFile();"><img src="img/btn_rename.gif" width="18" height="18" border="0" title="'.$MY_MESSAGES['rename'].'" /></a>';
485 if ($MY_ALLOW_MOVE) {
486 echo '<a href="#" onClick="javascript:moveFile();"><img src="img/btn_move.gif" width="18" height="18" border="0" title="'.$MY_MESSAGES['move'].'" /></a>';
488 echo '<a href="#" onClick="javascript:openFile();"><img src="img/btn_open.gif" width="18" height="18" border="0" title="'.$MY_MESSAGES['openfile'].'" /></a>';
492 <input id="sortby" type="hidden" value="0" />
495 <div style="margin:5px;">
497 <iframe src="files.php?dialogname=<?php echo $MY_NAME; ?>&refresh=1" name="fileManager" id="fileManager" background: Window;" marginwidth="0" marginheight="0" align="top" scrolling="no" frameborder="0" hspace="0" vspace="0" width="100%"></iframe>
499 <iframe src="files.php?dialogname=<?php echo $MY_NAME; ?>&refresh=1" name="fileManager" id="fileManager" background="Window" marginwidth="0" marginheight="0" valign:"top" scrolling="no" frameborder="0" hspace="0" vspace="0" width="600px" height="250px" style="background-color: Window; margin:0px; padding:0px; border:0px; vertical-align:top;"></iframe>
501 <table border="0" align="center" cellpadding="2" cellspacing="2">
503 <td nowrap><div align="right">URL</div></td>
504 <td><input name="url" id="f_url" type="text" style="width:20em" size="30"></td>
505 <td nowrap><div align="right">Caption</div></td>
506 <td><input name="caption" id="f_caption" type="text" style="width:20em" size="30"></td>
509 <table border="0" align="center" cellpadding="2" cellspacing="2">
512 <input id="f_addicon" value="f_addicon" type="checkbox">
514 <div align="left">Insert filetype icon</div>
517 <input id="f_addsize" value="f_addsize" type="checkbox">
519 <div align="left">Insert file size</div>
522 <input id="f_adddate" value="f_adddate" type="checkbox">
524 <div align="left">Insert file modification date</div>
528 <div style="text-align:center; padding:2px;">
530 if ($MY_ALLOW_UPLOAD) {
532 <label for="uploadFile">
533 <?php echo $MY_MESSAGES['upload']; ?>
535 <input name="uploadFile" type="file" id="uploadFile" size="72" />
536 <input type="submit" style="width:5em" value="<?php echo $MY_MESSAGES['upload']; ?>" onClick="javascript:return doUpload();" />
543 <div style="text-align: right; margin-top:5px;">
544 <input type="button" name="refresh" value="Refresh" onclick="return refreshPath();">
545 <input type="button" name="cancel" value="Cancel" onclick="return onCancel();">
546 <input type="reset" name="reset" value="Reset">
547 <input type="button" name="ok" value="OK" onclick="return onOK();">
549 <div style="position:absolute; bottom:-5px; right:-3px;">
550 <img src="img/btn_Corner.gif" width="14" height="14" border="0" alt="" />