source: trunk/plugins/ExtendedFileManager/images.php @ 604

Last change on this file since 604 was 604, checked in by ray, 13 years ago

see Ticket #874

File size: 17.8 KB
Line 
1<?php
2/**
3 * ExtendedFileManager images.php file. Shows folders and files.
4 * Authors: Wei Zhuo, Afru, Krzysztof Kotowicz
5 * Version: Updated on 08-01-2005 by Afru
6 * Version: Updated on 04-07-2006 by Krzysztof Kotowicz
7 * Package: ExtendedFileManager (EFM 1.1.2)
8 * http://www.afrusoft.com/htmlarea
9 */
10
11        if(isset($_REQUEST['mode'])) $insertMode=$_REQUEST['mode'];
12        if(!isset($insertMode)) $insertMode="image";
13
14require_once('config.inc.php');
15require_once('Classes/ExtendedFileManager.php');
16
17//default path is /
18$relative = '/';
19$manager = new ExtendedFileManager($IMConfig, $insertMode);
20
21//process any file uploads
22$uploadStatus=$manager->processUploads();
23
24//process any file renames
25$renameStatus=$manager->processRenames();
26
27//process paste
28if (isset($_GET['paste']))
29        $pasteStatus = $manager->processPaste();
30
31if ($manager->deleteFiles())
32    $refreshFile = true;
33
34$refreshDir = false;
35//process any directory functions
36if($manager->deleteDirs() || $manager->processNewDir() || $pasteStatus || $renameStatus )
37        $refreshDir = true;
38
39
40$diskInfo=$manager->getDiskInfo();
41
42//check for any sub-directory request
43//check that the requested sub-directory exists
44//and valid
45if(isset($_REQUEST['dir']))
46{
47        $path = rawurldecode($_REQUEST['dir']);
48        if($manager->validRelativePath($path))
49                $relative = $path;
50}
51
52
53$afruViewType="";
54if(isset($_REQUEST['viewtype']))
55{
56        $afruViewType=$_REQUEST['viewtype'];
57}
58if($afruViewType!="thumbview" && $afruViewType!="listview")
59
60$afruViewType=$IMConfig['view_type'];
61
62//get the list of files and directories
63$list = $manager->getFiles($relative);
64
65
66/* ================= OUTPUT/DRAW FUNCTIONS ======================= */
67
68
69/**
70 * Draw folders and files. Changed by Afru
71 */
72function drawDirs_Files($list, &$manager)
73{
74        global $relative, $afruViewType, $IMConfig, $insertMode;
75
76    switch ($afruViewType) {
77        case 'listview':
78                $maxNameLength = 30;
79                ?>
80            <table class="listview">
81            <thead>
82            <tr><th colspan="2">Name</th><th>Size</th><th>Image Size</th><th>Date Modified</th><th>&nbsp;</th></tr></thead>
83            <tbody>
84            <?php
85                // start of foreach for draw listview folders .
86                foreach($list[0] as $path => $dir)
87                { ?>
88                        <tr>
89                        <td><img src="<?php print $IMConfig['base_url'];?>icons/folder_small.gif" alt="" /></td>
90                        <th nowrap><a href="<?php print $IMConfig['backend_url']; ?>__function=images&amp;mode=<?php echo $insertMode;?>&amp;dir=<?php echo rawurlencode($path); ?>&amp;viewtype=<?php echo $afruViewType; ?>" onclick="updateDir('<?php echo $path; ?>')" title="<?php echo $dir['entry']; ?>">
91                        <?php
92                        if(strlen($dir['entry'])>$maxNameLength) echo substr($dir['entry'],0,$maxNameLength)."..."; else echo $dir['entry'];
93                        ?>
94                        </a></th>
95                        <td colspan="2" nowrap>Folder</td>
96
97                        <td nowrap><?php echo date("d.m.y H:i",$dir['stat']['mtime']); ?></td>
98
99                        <td class="actions" nowrap>
100                                <a href="<?php print $IMConfig['backend_url']; ?>__function=images&amp;mode=<?php echo $insertMode;?>&amp;dir=<?php echo $relative; ?>&amp;deld=<?php echo rawurlencode($path); ?>&amp;viewtype=<?php echo $afruViewType; ?>" title="Trash" onclick="return confirmDeleteDir('<?php echo $dir['entry']; ?>', <?php echo $dir['count']; ?>);" style="border:0px;"><img src="<?php print $IMConfig['base_url'];?>img/edit_trash.gif" height="15" width="15" alt="Trash" border="0" /></a>
101                                <?php if ($IMConfig['allow_rename']) { ?>
102                                            <a href="#" title="Rename" onclick="renameDir('<?php echo rawurlencode($dir['entry']);?>'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_rename.gif" height="15" width="15" alt="Rename" border="0" /></a>
103                                <?php }  ?>
104                                <?php if ($IMConfig['allow_cut_copy_paste']) { ?>
105                    <a href="#" title="Cut" onclick="copyDir('<?php echo rawurlencode($dir['entry']);?>','move'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_cut.gif" height="15" width="15" alt="Cut" /></a>
106                     <a href="#" title="Copy" onclick="copyDir('<?php echo rawurlencode($dir['entry']);?>','copy'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_copy.gif" height="15" width="15" alt="Copy" /></a>
107                                <?php }  ?>
108                        </td>
109                        </tr>
110                  <?php
111                } // end of foreach for draw listview folders .
112
113                clearstatcache();
114
115                // start of foreach for draw listview files .
116                foreach($list[1] as $entry => $file)
117                {
118                        ?>
119                <tr>
120                          <td><img src="<?php print $IMConfig['base_url']; if(is_file('icons/'.$file['ext'].'_small.gif')) echo "icons/".$file['ext']."_small.gif"; else echo $IMConfig['default_listicon']; ?>" alt="" /></td>
121                  <th><a href="#" class="thumb" style="cursor: pointer;" ondblclick="this.onclick();window.top.onOK();" onclick="selectImage('<?php echo $file['relative'];?>', '<?php echo preg_replace('#\..{3,4}$#', '', $entry); ?>', <?php echo $file['image'][0];?>, <?php echo $file['image'][1]; ?>);return false;" title="<?php echo $entry; ?> - <?php echo Files::formatSize($file['stat']['size']); ?>" <?php if ($insertMode == 'image') { ?> onmouseover="showPreview('<?php echo $file['relative'];?>')" onmouseout="showPreview(window.parent.document.getElementById('f_url').value)" <?php } ?> >
122                                <?php
123                                if(strlen($entry)>$maxNameLength) echo substr($entry,0,$maxNameLength)."..."; else echo $entry;
124                                ?>
125                  </a></th>
126                  <td><?php echo Files::formatSize($file['stat']['size']); ?></td>
127                  <td><?php if($file['image'][0] > 0){ echo $file['image'][0].'x'.$file['image'][1]; } ?></td>
128                          <td nowrap><?php echo date("d.m.y H:i",$file['stat']['mtime']); ?></td>
129                  <td class="actions">
130                    <?php if($IMConfig['img_library'] && $IMConfig['allow_edit_image'] && $file['image'][0] > 0) { ?>
131                    <a href="javascript:;" title="Edit" onclick="editImage('<?php echo rawurlencode($file['relative']);?>');"><img src="<?php print $IMConfig['base_url'];?>img/edit_pencil.gif" height="15" width="15" alt="Edit" border="0" /></a>
132                    <?php }  ?> 
133                    <a href="<?php print $IMConfig['backend_url']; ?>__function=images&dir=<?php echo $relative; ?>&amp;delf=<?php echo rawurlencode($file['relative']);?>&amp;mode=<?php echo $insertMode;?>&amp;viewtype=<?php echo $afruViewType; ?>" title="Trash" onclick="return confirmDeleteFile('<?php echo $entry; ?>');"><img src="<?php print $IMConfig['base_url'];?>img/edit_trash.gif" height="15" width="15" alt="Trash" border="0" /></a>
134                                <?php if ($IMConfig['allow_rename']) { ?>
135                    <a href="#" title="Rename" onclick="renameFile('<?php echo rawurlencode($file['relative']);?>'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_rename.gif" height="15" width="15" alt="Rename" border="0" /></a>
136                    <?php }  ?>
137                                <?php if ($IMConfig['allow_cut_copy_paste']) { ?>
138                    <a href="#" title="Cut" onclick="copyFile('<?php echo rawurlencode($entry);?>','move'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_cut.gif" height="15" width="15" alt="Cut" /></a>
139                     <a href="#" title="Copy" onclick="copyFile('<?php echo rawurlencode($entry);?>','copy'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_copy.gif" height="15" width="15" alt="Copy" /></a>
140                    <?php $thisFileNameLength -= 6; }  ?>
141                  </td>
142                </tr>
143                  <?php
144                }//end of foreach of draw listview files
145            ?>
146            </tbody>
147            </table>
148            <?php
149        break;
150        case 'thumbview': // thumbview is default
151        default:
152                $maxFileNameLength=16;
153                $maxFolderNameLength=16;
154                // start of foreach for draw thumbview folders.
155                foreach($list[0] as $path => $dir)
156                { ?>
157    <div class="dir_holder">
158      <a class="dir" href="<?php print $IMConfig['backend_url'];?>__function=images&amp;mode=<?php echo $insertMode;?>&amp;dir=<?php echo rawurlencode($path); ?>&amp;viewtype=<?php echo $afruViewType; ?>" onclick="updateDir('<?php echo $path; ?>')" title="<?php echo $dir['entry']; ?>"><img src="<?php print $IMConfig['base_url'];?>img/folder.gif" height="80" width="80" alt="<?php echo $dir['entry']; ?>" /></a>
159
160      <div class="fileName">
161      <?php if(strlen($dir['entry']) > $maxFolderNameLength)
162                echo substr($dir['entry'], 0, $maxFolderNameLength) . "...";
163              else
164                echo $dir['entry']; ?>
165      </div>
166      <div class="edit">
167        <a href="<?php print $IMConfig['backend_url'];?>__function=images&amp;mode=<?php echo $insertMode;?>&amp;dir=<?php echo $relative; ?>&amp;deld=<?php echo rawurlencode($path); ?>&amp;viewtype=<?php echo $afruViewType; ?>" title="Trash" onclick="return confirmDeleteDir('<?php echo $dir['entry']; ?>', <?php echo $dir['count']; ?>);"><img src="<?php print $IMConfig['base_url'];?>img/edit_trash.gif" height="15" width="15" alt="Trash" /></a>
168        <?php if ($IMConfig['allow_rename']) { ?>
169                    <a href="#" title="Rename" onclick="renameDir('<?php echo rawurlencode($dir['entry']);?>'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_rename.gif" height="15" width="15" alt="Rename" border="0" /></a>
170        <?php }  ?>
171        <?php if ($IMConfig['allow_cut_copy_paste']) { ?>
172                    <a href="#" title="Cut" onclick="copyDir('<?php echo rawurlencode($dir['entry']);?>','move'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_cut.gif" height="15" width="15" alt="Cut" /></a>
173                     <a href="#" title="Copy" onclick="copyDir('<?php echo rawurlencode($dir['entry']);?>','copy'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_copy.gif" height="15" width="15" alt="Copy" /></a>
174        <?php }  ?>
175      </div>
176    </div>
177                  <?php
178                } // end of foreach for draw thumbview folders.
179
180
181                // start of foreach for draw thumbview files.
182                foreach($list[1] as $entry => $file)
183                {
184                        $afruimgdimensions=$manager->checkImageSize($file['relative']);
185                        $thisFileNameLength = $maxFileNameLength;
186                        ?>
187                <div class="thumb_holder" id="holder_<?php echo asc2hex($entry) ?>">
188                  <a href="#" class="thumb" style="cursor: pointer;" ondblclick="this.onclick();window.top.onOK();" onclick="selectImage('<?php echo $file['relative'];?>', '<?php echo preg_replace('#\..{3,4}$#', '', $entry); ?>', <?php echo $file['image'][0];?>, <?php echo $file['image'][1]; ?>);return false;" title="<?php echo $entry; ?> - <?php echo Files::formatSize($file['stat']['size']); ?>">
189                    <img src="<?php print $manager->getThumbnail($file['relative']); ?>" alt="<?php echo $entry; ?> - <?php echo Files::formatSize($file['stat']['size']); ?>" />
190                  </a>
191                   <div class="fileName">
192                   <?php
193                                if(strlen($entry) > $thisFileNameLength + 3) echo strtolower(substr($entry,0,$thisFileNameLength))."..."; else echo $entry;
194                        ?>
195                   </div>
196                  <div class="edit">
197                    <?php if($IMConfig['img_library'] && $IMConfig['allow_edit_image'] && $file['image'][0] > 0 )
198                    { ?>
199                    <a href="javascript:;" title="Edit" onclick="editImage('<?php echo rawurlencode($file['relative']);?>');"><img src="<?php print $IMConfig['base_url'];?>img/edit_pencil.gif" height="15" width="15" alt="Edit" /></a>
200                        <?php $thisFileNameLength -= 3; } ?>
201                    <a href="<?php print $IMConfig['backend_url']; ?>__function=images&amp;mode=<?php echo $insertMode;?>&amp;dir=<?php echo $relative; ?>&amp;delf=<?php echo rawurlencode($file['relative']);?>&amp;viewtype=<?php echo $afruViewType; ?>" title="Trash" onclick="return confirmDeleteFile('<?php echo $entry; ?>');"><img src="<?php print $IMConfig['base_url'];?>img/edit_trash.gif" height="15" width="15" alt="Trash" /></a>
202                                <?php if ($IMConfig['allow_rename']) { ?>
203                    <a href="#" title="Rename" onclick="renameFile('<?php echo rawurlencode($file['relative']);?>'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_rename.gif" height="15" width="15" alt="Rename" /></a>
204                    <?php $thisFileNameLength -= 3; }  ?>
205                        <?php if ($IMConfig['allow_cut_copy_paste']) { ?>
206                    <a href="#" title="Cut" onclick="copyFile('<?php echo rawurlencode($entry);?>','move'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_cut.gif" height="15" width="15" alt="Cut" /></a>
207                     <a href="#" title="Copy" onclick="copyFile('<?php echo rawurlencode($entry);?>','copy'); return false;"><img src="<?php print $IMConfig['base_url'];?>img/edit_copy.gif" height="15" width="15" alt="Copy" /></a>
208                    <?php $thisFileNameLength -= 6; }  ?>
209                       
210                  </div>
211                </div>
212                  <?php
213                }//end of foreach of draw thumbview files
214
215    }
216}//end of function drawDirs_Files
217
218
219/**
220 * No directories and no files.
221 */
222function drawNoResults()
223{
224?>
225<div class="noResult">No Files Found</div>
226<?php
227}
228
229/**
230 * No directories and no files.
231 */
232function drawErrorBase(&$manager)
233{
234?>
235<div class="error"><span>Invalid base directory:</span> <?php echo $manager->getImagesDir(); ?></div>
236<?php
237}
238
239/**
240 * Utility to convert ascii string to hex
241 */
242function asc2hex ($temp)
243{
244  $data = '';
245  $len = strlen($temp);
246  for ($i=0; $i<$len; $i++) $data.=sprintf("%02x",ord(substr($temp,$i,1)));
247  return $data;
248}
249
250?>
251<html>
252<head>
253        <title>File List</title>
254  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
255        <link href="<?php print $IMConfig['base_url'];?>assets/imagelist.css" rel="stylesheet" type="text/css" />
256<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/dialog.js"></script>
257<script type="text/javascript">
258/*<![CDATA[*/
259
260    var _backend_url = "<?php print $IMConfig['backend_url']; ?>";
261
262        if(window.top)
263                HTMLArea = window.top.HTMLArea;
264
265        function hideMessage()
266        {
267                var topDoc = window.top.document;
268                var messages = topDoc.getElementById('messages');
269                if(messages)
270                        messages.style.display = "none";
271        }
272
273        init = function()
274        {
275        __dlg_translate('ExtendedFileManager');
276       
277                hideMessage();
278
279                <?php
280                if(isset($uploadStatus) && !is_numeric($uploadStatus) && !is_bool($uploadStatus))
281                echo "alert(i18n('$uploadStatus'));";
282                else if(isset($uploadStatus) && $uploadStatus==false)
283                echo 'alert(i18n("Unable to upload File. \nEither Maximum file size [$max_size='.($insertMode == 'image' ? $IMConfig['max_filesize_kb_image'] : $IMConfig['max_filesize_kb_link'] ).'$ KB] exceeded or\nFolder doesn\'t have write permission."));';
284                ?>
285
286                <?php
287                if(isset($renameStatus) && !is_numeric($renameStatus) && !is_bool($renameStatus))
288                echo 'alert(i18n("'.$renameStatus.'"));';
289                else if(isset($renameStatus) && $renameStatus===false)
290                echo 'alert(i18n("Unable to rename file. File of the same name already exists or\nfolder doesn\'t have write permission."));';
291                ?>
292               
293                <?php
294                if (isset($pasteStatus) && is_numeric($pasteStatus))
295                {
296                        switch ($pasteStatus)
297                        {
298                                case 100 :
299                                        $pasteStatus = 'Source file/folder not found.';
300                                break;
301                                case 101 :
302                                        $pasteStatus = 'Copy failed.\nMaybe folder doesn\'t have write permission.';
303                                break;
304                                case 102 :
305                                        $pasteStatus = 'Could not create destination folder.';
306                                break;
307                                case 104 :
308                                        $pasteStatus = 'Destination file/folder already exists.';
309                                break;
310                        }
311                }
312                if(isset($pasteStatus) && !is_bool($pasteStatus))
313                {
314                        echo 'alert(i18n("'.$pasteStatus.'"));';
315                }
316                ?>
317
318                var topDoc = window.top.document;
319
320<?php
321        //we need to refesh the drop directory list
322        //save the current dir, delete all select options
323        //add the new list, re-select the saved dir.
324        if($refreshDir)
325        {
326                $dirs = $manager->getDirs();
327?>
328                var selection = topDoc.getElementById('dirPath');
329                var currentDir = selection.options[selection.selectedIndex].text;
330
331                while(selection.length > 0)
332                {       selection.remove(0); }
333               
334                selection.options[selection.length] = new Option("/","<?php echo rawurlencode('/'); ?>");
335                <?php foreach($dirs as $relative=>$fullpath) { ?>
336                selection.options[selection.length] = new Option("<?php echo $relative; ?>","<?php echo rawurlencode($relative); ?>");
337                <?php } ?>
338               
339                for(var i = 0; i < selection.length; i++)
340                {
341                        var thisDir = selection.options[i].text;
342                        if(thisDir == currentDir)
343                        {
344                                selection.selectedIndex = i;
345                                break;
346                        }
347                }               
348<?php } ?>
349        }
350   
351        function editImage(image)
352        {
353                var url = "<?php print $IMConfig['backend_url']; ?>__function=editor&img="+image+"&mode=<?php print $insertMode ?>";
354        Dialog(url, function(param)
355                {
356                        if (!param) { // user must have pressed Cancel
357                                return false;
358                        } else
359                        {
360                                return true;
361                        }
362                }, null);
363        }
364
365/*]]>*/
366</script>
367<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/images.js"></script>
368<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/popup.js"></script>
369<script type="text/javascript">
370<!--
371// Koto: why emptying? commented out
372//if(window.top.document.getElementById('manager_mode').value=="image")
373//emptyProperties();
374<?php if(isset($diskInfo)) echo 'updateDiskMesg(i18n(\''.$diskInfo.'\'));'; ?>
375//-->
376</script>
377
378</head>
379
380<body>
381<?php if ($manager->isValidBase() == false) { drawErrorBase($manager); }
382        elseif(count($list[0]) > 0 || count($list[1]) > 0) { ?>
383        <?php drawDirs_Files($list, $manager); ?>
384<?php } else { drawNoResults(); } ?>
385</body>
386</html>
Note: See TracBrowser for help on using the repository browser.