home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / groupoffice-com-2.01 / modules / filesystem / listview.inc < prev    next >
Encoding:
Text File  |  2004-03-08  |  14.1 KB  |  380 lines

  1. <?php
  2. /*
  3. Copyright Intermesh 2003
  4. Author: Merijn Schering <mschering@intermesh.nl>
  5. Version: 1.0 Release date: 08 July 2003
  6.  
  7. This program is free software; you can redistribute it and/or modify it
  8. under the terms of the GNU General Public License as published by the
  9. Free Software Foundation; either version 2 of the License, or (at your
  10. option) any later version.
  11. */
  12.  
  13. $fs_sort_field = isset($_COOKIE['fs_sort_field']) ? $_COOKIE['fs_sort_field'] : 'basename';
  14. $fs_sort_direction = isset($_COOKIE['fs_sort_direction']) ? $_COOKIE['fs_sort_direction'] : 'ASC';
  15.  
  16. if ($fs_sort_direction == "DESC")
  17. {
  18.     $sort_arrow = ' <img src="'.$GO_THEME->images['arrow_down'].'" border="0" />';
  19.     $new_sort_direction = "ASC";
  20. }else
  21. {
  22.     $sort_arrow = ' <img src="'.$GO_THEME->images['arrow_up'].'" border="0" />';
  23.     $new_sort_direction = "DESC";
  24. }
  25.  
  26. $folders = $fs->get_folders_sorted($path, $fs_sort_field, $fs_sort_direction);
  27. $files = $fs->get_files_sorted($path, $fs_sort_field, $fs_sort_direction);
  28. $item_count = count($files) + count($folders);
  29. echo '<h1>'.$fbPath.': '.$page_title.'</h1>';
  30. if (isset($feedback)) echo $feedback;
  31. echo '<input type="hidden" name="task" />';
  32.  
  33. echo '<table border="0" cellpadding="0" cellspacing="0"><tr>';
  34.  
  35. if ($parent_path = dirname($path))
  36. {
  37.     if ($fs->has_read_permission($GO_SECURITY->user_id, $parent_path))
  38.     {
  39.         echo '<td class="ModuleIcons">';
  40.         echo '<a class="small" href="'.$_SERVER['PHP_SELF'].'?path='.urlencode($parent_path).'"><img src="'.$GO_THEME->images['uplvl_big'].'" border="0" height="32" width="32" /><br />'.$fbUpLevel.'</a></td>';
  41.     }
  42. }
  43. echo '<td class="ModuleIcons">';
  44. echo '<a class="small" href="'.$_SERVER['PHP_SELF'].'?path='.$urlencoded_path.'"><img src="'.$GO_THEME->images['fs_refresh'].'" border="0" height="32" width="32" /><br />'.$fbRefresh.'</a></td>';
  45. echo '<td class="ModuleIcons">';
  46. echo '<a class="small" href=\'javascript:properties("'.rawurlencode($fs_no_multi_select).'")\'><img src="'.$GO_THEME->images['properties'].'" border="0" height="32" width="32" /><br />'.$fbProperties.'</a></td>';
  47. echo '<td class="ModuleIcons">';
  48. echo '<a class="small" href="'.$_SERVER['PHP_SELF'].'?task=new_folder&path='.$urlencoded_path.'"><img src="'.$GO_THEME->images['new_folder'].'" border="0" height="32" width="32" /><br />'.$fbNewFolder.'</a></td>';
  49. echo '<td class="ModuleIcons">';
  50. echo '<a class="small" href="'.$_SERVER['PHP_SELF'].'?task=upload&path='.$urlencoded_path.'"><img src="'.$GO_THEME->images['upload'].'" border="0" height="32" width="32" /><br />'.$fbUpload.'</a></td>';
  51. echo '<td class="ModuleIcons">';
  52. echo '<a class="small" href="javascript:delete_items()"><img src="'.$GO_THEME->images['delete_big'].'" border="0" height="32" width="32" /><br />'.$fbDelete.'</a></td>';
  53. echo '<td class="ModuleIcons">';
  54. echo '<a class="small" href=\'javascript:cut_items("'.rawurlencode($fbNoSelect).'")\'><img src="'.$GO_THEME->images['cut'].'" border="0" height="32" width="32" /><br />'.$fbCut.'</a></td>';
  55. echo '<td class="ModuleIcons">';
  56. echo '<a class="small" href=\'javascript:copy_items("'.rawurlencode($fbNoSelect).'")\'><img src="'.$GO_THEME->images['copy'].'" border="0" height="32" width="32" /><br />'.$fbCopy.'</a></td>';
  57.  
  58.  
  59. if((count($_SESSION['cut_files']) + count($_SESSION['cut_folders']) + count($_SESSION['copy_files']) + count($_SESSION['copy_folders'])) > 0)
  60. {
  61.     echo '<td class="ModuleIcons">';
  62.     echo '<a class="small" href="javascript:paste_items()"><img src="'.$GO_THEME->images['paste'].'" border="0" height="32" width="32" /><br />'.$fbPaste.'</a></td>';
  63. }
  64.  
  65. if($GO_CONFIG->window_mode == 'normal')
  66. {
  67.     echo '<td class="ModuleIcons">';
  68.     echo '<a class="small" href=\'javascript:mail_files("'.rawurlencode($fbNoSelect).'")\'><img src="'.$GO_THEME->images['fs_email'].'" border="0" height="32" width="32" /><br />'.$lang_modules['email'].'</a></td>';
  69.  
  70.     echo '<td class="ModuleIcons">';
  71.     echo '<a class="small" href="'.$_SERVER['PHP_SELF'].'?task=shares&path='.$urlencoded_path.'"><img src="'.$GO_THEME->images['sharing'].'" border="0" height="32" width="32" /><br />'.$fbSharing.'</a></td>';
  72.  
  73.     echo '<td class="ModuleIcons">';
  74.     echo '<a class="small" href="'.$_SERVER['PHP_SELF'].'?task=search&path='.$urlencoded_path.'"><img src="'.$GO_THEME->images['fs_search'].'" border="0" height="32" width="32" /><br />'.$fs_search.'</a></td>';
  75.  
  76.     echo '<td class="ModuleIcons">';
  77.     echo '<a class="small" href="javascript:create_archive()"><img src="'.$GO_THEME->images['compress'].'" border="0" height="32" width="32" /><br />'.$fb_compress.'</a></td>';
  78.  
  79.     echo '<td class="ModuleIcons">';
  80.     echo '<a class="small" href="javascript:extract()"><img src="'.$GO_THEME->images['decompress'].'" border="0" height="32" width="32" /><br />'.$fb_decompress.'</a></td>';
  81.  
  82. }
  83. echo '</tr></table>';
  84.  
  85.  
  86. if ($GO_CONFIG->window_mode == 'popup')
  87. {
  88.     echo '<table border="0">';
  89.     if ($mode == 'save')
  90.     {
  91.         echo '<tr><td><h3>'.$fbFilename.':</h3></td><td><input type="text" class="textbox" name="filename" value="'.$filename.'" size="40" /></td></tr>';
  92.     }
  93.     echo '<tr><td><h3>'.$strLookIn.':</h3></td><td>';
  94.  
  95.     $dropbox = new dropbox();
  96.     $dropbox->add_value($home_path, 'home');
  97.  
  98.     require_once($GO_CONFIG->class_path.'users.class.inc');
  99.     $users= new users();
  100.  
  101.     $fs2 = new filesystem();
  102.     $fs2->get_authorized_sharers($GO_SECURITY->user_id);
  103.  
  104.     while ($fs2->next_record())
  105.     {
  106.         $shares = array();
  107.         $share_count = $fs->get_shares($fs2->f('user_id'));
  108.         while ($fs->next_record())
  109.         {
  110.             if ($GO_SECURITY->has_permission($GO_SECURITY->user_id, $fs->f('acl_read')) || $GO_SECURITY->has_permission($GO_SECURITY->user_id, $fs->f('acl_write')))
  111.             {
  112.                 if (strpos($path, $fs->f('path')) !== false)
  113.                 {
  114.                     $location = $fs->f('path');
  115.                 }
  116.                 $shares[] = $fs->f('path');
  117.             }
  118.         }
  119.         $share_count = count($shares) ;
  120.         if ($share_count > 0)
  121.         {
  122.             if ($user = $users->get_user($fs2->f('user_id')))
  123.             {
  124.                 $dropbox->add_optgroup($user['username']);
  125.                 for ($i=0;$i<$share_count;$i++)
  126.                 {
  127.                     $dropbox->add_value($shares[$i], basename($shares[$i]));
  128.                 }
  129.             }
  130.         }
  131.     }
  132.     $location = isset($_POST['location']) ? $_POST['location'] : $home_path;
  133.     $dropbox->print_dropbox('location',$location,'onchange="javascript:change_location(this)"');
  134.     echo '</td></tr></table>';
  135. }
  136.  
  137.  
  138. echo '<table border="0" width="100%">';
  139. echo '<tr>';
  140.  
  141. if ($GO_CONFIG->window_mode == 'normal')
  142. {
  143.     echo '<td valign="top">';
  144.     require('treeview.inc');
  145.     echo '</td>';
  146. }
  147.  
  148. echo '<td valign="top">';
  149. echo '<table border="0" cellspacing="0" cellpadding="0"><tr>';
  150. echo '<td class="TableHead2" width="16"><input type="checkbox" onclick="javascript:invert_selection()" name="dummy" /></td>';
  151. echo '<td class="TableHead2" width="16"> </td>';
  152.  
  153. echo '<td class="TableHead2" width="100" nowrap><a class="TableHead2" href="'.$_SERVER['PHP_SELF'].'?path='.$urlencoded_path.'&new_sort_field=basename&new_sort_direction='.$new_sort_direction.'">'.$strName.'</a>';
  154. if ($fs_sort_field == 'basename')
  155. {
  156.     echo $sort_arrow;
  157. }
  158. echo '</td>';
  159.  
  160. echo '<td class="TableHead2" width="100" nowrap><a class="TableHead2" href="'.$_SERVER['PHP_SELF'].'?path='.$urlencoded_path.'&new_sort_field=filemimefriendly&new_sort_direction='.$new_sort_direction.'">'.$strType.'</a>';
  161. if ($fs_sort_field == 'filemimefriendly')
  162. {
  163.     echo $sort_arrow;
  164. }
  165. echo '</td>';
  166.  
  167. echo '<td class="TableHead2" width="100" nowrap align="right"><a class="TableHead2" href="'.$_SERVER['PHP_SELF'].'?path='.$urlencoded_path.'&new_sort_field=filesize&new_sort_direction='.$new_sort_direction.'">'.$strSize.'</a>';
  168. if ($fs_sort_field == 'filesize')
  169. {
  170.     echo $sort_arrow;
  171. }
  172. echo '</td>';
  173.  
  174. echo '<td class="TableHead2" width="100" nowrap align="right"><a class="TableHead2" href="'.$_SERVER['PHP_SELF'].'?path='.$urlencoded_path.'&new_sort_field=filemtime&new_sort_direction='.$new_sort_direction.'">'.$strModified.'</a>';
  175. if ($fs_sort_field == 'filemtime')
  176. {
  177.     echo $sort_arrow;
  178. }
  179. echo '</td>';
  180. echo '</tr>';
  181.  
  182. while ($folder = array_shift($folders))
  183. {
  184.     $short_name = cut_string($folder['name'], 30);
  185.     echo '<tr id="'.$folder['path'].'" class="Table1">';
  186.     echo '<td><input onclick="javascript:item_click(this)" type="checkbox" name="folders[]" value="'.$folder['path'].'" /></td>';
  187.     if ($fs->get_share($folder['path']))
  188.     {
  189.         $folder_image = $GO_THEME->images['shared_folder'];
  190.     }else
  191.     {
  192.         $folder_image = $GO_THEME->images['folder'];
  193.     }
  194.  
  195.  
  196.     echo '<td><img width="16" height="16" border="0" src="'.$folder_image.'" /></td>';
  197.     if (isset($_SESSION['cut_folders']) && in_array(addslashes($folder['path']), $_SESSION['cut_folders']))
  198.     {
  199.         echo '<td nowrap><a href="'.$_SERVER['PHP_SELF'].'?path='.urlencode($folder['path']).'"><font color="#7d7d7d">'.$folder['name'].'</font></a>  </td>';
  200.     }else
  201.     {
  202.         echo '<td nowrap><a href="'.$_SERVER['PHP_SELF'].'?path='.urlencode($folder['path']).'" title="'.$folder['name'].'">'.$short_name.'</a>  </td>';
  203.     }
  204.     echo '<td nowrap>'.$fbFolder.'  </td>';
  205.     echo '<td align="right">-  </td>';
  206.     echo '<td nowrap>'.date($_SESSION['GO_SESSION']['date_format'].' '.$_SESSION['GO_SESSION']['time_format'], get_time($folder['mtime'])).'  </td>';
  207.     echo '</tr>';
  208.     echo '<tr><td colspan="99" height="1"><img src="'.$GO_THEME->images['cccccc'].'" border="0" height="1" width="100%" /></td></tr>';
  209. }
  210.  
  211. $total_size = 0;
  212.  
  213. while ($file = array_shift($files))
  214. {
  215.     $extension = get_extension($file['name']);
  216.     if (!isset($GO_FILTER_TYPES) || in_array($extension, $GO_FILTER_TYPES))
  217.     {
  218.         $total_size += $file['size'];
  219.         $short_name = cut_string(strip_extension($file['name']), 30);
  220.  
  221.         echo '<tr id="'.$file['path'].'" class="Table1">';
  222.         echo '<td><input onclick="javascript:item_click(this)" type="checkbox" name="files[]" value="'.$file['path'].'" /></td>';
  223.         echo '<td><img width="16" height="16" border="0" src="'.$GO_CONFIG->control_url.'icon.php?extension='.$extension.'" /></td>';
  224.         if (isset($_SESSION['cut_files']) && in_array(addslashes($file['path']), $_SESSION['cut_files']))
  225.         {
  226.             echo '<td nowrap><a target="'.$target_frame.'" href="'.$GO_HANDLER.'?path='.urlencode($file['path']).'" title="'.$file['name'].'"><font color="#7d7d7d">'.$short_name.'</font></a>  </td>';
  227.         }else
  228.         {
  229.             echo '<td nowrap><a target="'.$target_frame.'" href="'.$GO_HANDLER.'?path='.urlencode($file['path']).'" title="'.$file['name'].'">'.$short_name.'</a>  </td>';
  230.         }
  231.         echo '<td nowrap>'.$file['type'].'  </td>';
  232.         echo '<td nowrap align="right">'.format_size($file['size']).'  </td>';
  233.         echo '<td nowrap>'.date($_SESSION['GO_SESSION']['date_format'].' '.$_SESSION['GO_SESSION']['time_format'], get_time($file['mtime'])).'  </td>';
  234.         echo '</tr>';
  235.         echo '<tr><td colspan="99" height="1"><img src="'.$GO_THEME->images['cccccc'].'" border="0" height="1" width="100%" /></td></tr>';
  236.     }
  237. }
  238.  
  239. echo '<tr><td colspan="99" class="small" height="18"> '.$item_count.' '.$fbItems.'     '.$fbFolderSize.': '.format_size($total_size).'</td></tr>';
  240. echo '<tr><td colspan="99" height="1"><img src="'.$GO_THEME->images['cccccc'].'" border="0" height="1" width="100%" /></td></tr>';
  241. echo '</table>';
  242.  
  243. echo '</td></tr>';
  244.  
  245. if ($GO_CONFIG->window_mode=='popup')
  246. {
  247.     echo '<tr><td colspan="2" align="center"><br />';
  248.     $button = new button($cmdOk,'javascript:submit_to_handler()');
  249.     echo '  ';
  250.     $button = new button($cmdCancel,'javascript:window.close()');
  251.     echo '</td></tr>';
  252. }
  253. echo '</table>';
  254. ?>
  255. <script type="text/javascript" language="javascript" src="<?php echo $GO_CONFIG->host.$GO_MODULES->path.'filesystem.js'; ?>"></script>
  256. <script type="text/javascript" language="javascript">
  257.  
  258. function submit_to_handler()
  259. {
  260.     <?php
  261.     if ($GO_MULTI_SELECT == false)
  262.     {
  263.         ?>
  264.         var count = 0;
  265.         var path = new String;
  266.  
  267.         for (var i=0;i<document.forms[0].elements.length;i++)
  268.         {
  269.             if(document.forms[0].elements[i].type == 'checkbox' && document.forms[0].elements[i].name != 'dummy')
  270.             {
  271.                 if (document.forms[0].elements[i].checked == true)
  272.                 {
  273.                     document.forms[0].path.value = document.forms[0].elements[i].value;
  274.                     count++;
  275.                 }
  276.             }
  277.         }
  278.         if (count > 1)
  279.         {
  280.             alert("<?php echo $fs_no_multi_select; ?>");
  281.             return false;
  282.         }
  283.         <?php
  284.     }
  285.     ?>
  286.     document.forms[0].task.value = 'GO_HANDLER';
  287.     document.forms[0].action = "<?php echo $GO_HANDLER; ?>";
  288.     document.forms[0].submit();
  289. }
  290.  
  291. function delete_items()
  292. {
  293.     var count = 0;
  294.     var filename = new String;
  295.     var path = new String;
  296.  
  297.     for (var i=0;i<document.forms[0].elements.length;i++)
  298.     {
  299.         if(document.forms[0].elements[i].type == 'checkbox' && document.forms[0].elements[i].name != 'dummy')
  300.         {
  301.             if (document.forms[0].elements[i].checked == true)
  302.             {
  303.                 count++;
  304.                 path = document.forms[0].elements[i].value;
  305.                 filename = path.substring(path.lastIndexOf('/')+1, path.length);
  306.             }
  307.         }
  308.     }
  309.     switch (count)
  310.     {
  311.         case 0:
  312.             alert("<?php echo $fbNoSelect; ?>");
  313.         break;
  314.  
  315.         case 1:
  316.             if (confirm("<?php echo $strDeletePrefix; ?>'"+filename+"'<?php echo $strDeleteSuffix; ?>"))
  317.             {
  318.                 document.forms[0].task.value = 'delete';
  319.                 document.forms[0].submit();
  320.             }
  321.         break;
  322.  
  323.         default:
  324.             if (confirm("<?php echo $strDeletePrefix.$strThis; ?> "+count+" <?php echo $strItems.$strDeleteSuffix; ?>"))
  325.             {
  326.                 document.forms[0].task.value = 'delete';
  327.                 document.forms[0].submit();
  328.             }
  329.         break;
  330.     }
  331. }
  332.  
  333. function create_archive()
  334. {
  335.     var count = 0;
  336.  
  337.     for (var i=0;i<document.forms[0].elements.length;i++)
  338.     {
  339.         if(document.forms[0].elements[i].type == 'checkbox' && document.forms[0].elements[i].name != 'dummy')
  340.         {
  341.             if (document.forms[0].elements[i].checked == true)
  342.             {
  343.                 count++;
  344.             }
  345.         }
  346.     }
  347.     if (count == 0)
  348.     {
  349.         alert("<?php echo $fbNoSelect; ?>");
  350.     }else
  351.     {
  352.         document.forms[0].task.value = 'create_archive';
  353.         document.forms[0].submit();
  354.     }
  355. }
  356.  
  357. function extract()
  358. {
  359.     var count = 0;
  360.  
  361.     for (var i=0;i<document.forms[0].elements.length;i++)
  362.     {
  363.         if(document.forms[0].elements[i].type == 'checkbox' && document.forms[0].elements[i].name != 'dummy')
  364.         {
  365.             if (document.forms[0].elements[i].checked == true)
  366.             {
  367.                 count++;
  368.             }
  369.         }
  370.     }
  371.     if (count == 0)
  372.     {
  373.         alert("<?php echo $fbNoSelect; ?>");
  374.     }else
  375.     {
  376.         document.forms[0].task.value = 'extract';
  377.         document.forms[0].submit();
  378.     }
  379. }
  380. </script>
  381.