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 >
Text File  |  2004-03-08  |  14KB  |  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. echo '</tr></table>';
  83.  
  84.  
  85. if ($GO_CONFIG->window_mode == 'popup')
  86. {
  87.     echo '<table border="0">';
  88.     if ($mode == 'save')
  89.     {
  90.         echo '<tr><td><h3>'.$fbFilename.':</h3></td><td><input type="text" class="textbox" name="filename" value="'.$filename.'" size="40" /></td></tr>';
  91.     }
  92.     echo '<tr><td><h3>'.$strLookIn.':</h3></td><td>';
  93.  
  94.     $dropbox = new dropbox();
  95.     $dropbox->add_value($home_path, 'home');
  96.  
  97.     require_once($GO_CONFIG->class_path.'users.class.inc');
  98.     $users= new users();
  99.  
  100.     $fs2 = new filesystem();
  101.     $fs2->get_authorized_sharers($GO_SECURITY->user_id);
  102.  
  103.     while ($fs2->next_record())
  104.     {
  105.         $shares = array();
  106.         $share_count = $fs->get_shares($fs2->f('user_id'));
  107.         while ($fs->next_record())
  108.         {
  109.             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')))
  110.             {
  111.                 if (strpos($path, $fs->f('path')) !== false)
  112.                 {
  113.                     $location = $fs->f('path');
  114.                 }
  115.                 $shares[] = $fs->f('path');
  116.             }
  117.         }
  118.         $share_count = count($shares) ;
  119.         if ($share_count > 0)
  120.         {
  121.             if ($user = $users->get_user($fs2->f('user_id')))
  122.             {
  123.                 $dropbox->add_optgroup($user['username']);
  124.                 for ($i=0;$i<$share_count;$i++)
  125.                 {
  126.                     $dropbox->add_value($shares[$i], basename($shares[$i]));
  127.                 }
  128.             }
  129.         }
  130.     }
  131.     $location = isset($_POST['location']) ? $_POST['location'] : $home_path;
  132.     $dropbox->print_dropbox('location',$location,'onchange="javascript:change_location(this)"');
  133.     echo '</td></tr></table>';
  134. }
  135.  
  136.  
  137. echo '<table border="0" width="100%">';
  138. echo '<tr>';
  139.  
  140. if ($GO_CONFIG->window_mode == 'normal')
  141. {
  142.     echo '<td valign="top">';
  143.     require('treeview.inc');
  144.     echo '</td>';
  145. }
  146.  
  147. echo '<td valign="top">';
  148. echo '<table border="0" cellspacing="0" cellpadding="0"><tr>';
  149. echo '<td class="TableHead2" width="16"><input type="checkbox" onclick="javascript:invert_selection()" name="dummy" /></td>';
  150. echo '<td class="TableHead2" width="16"> </td>';
  151.  
  152. 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>';
  153. if ($fs_sort_field == 'basename')
  154. {
  155.     echo $sort_arrow;
  156. }
  157. echo '</td>';
  158.  
  159. 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>';
  160. if ($fs_sort_field == 'filemimefriendly')
  161. {
  162.     echo $sort_arrow;
  163. }
  164. echo '</td>';
  165.  
  166. 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>';
  167. if ($fs_sort_field == 'filesize')
  168. {
  169.     echo $sort_arrow;
  170. }
  171. echo '</td>';
  172.  
  173. 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>';
  174. if ($fs_sort_field == 'filemtime')
  175. {
  176.     echo $sort_arrow;
  177. }
  178. echo '</td>';
  179. echo '</tr>';
  180.  
  181. while ($folder = array_shift($folders))
  182. {
  183.     $short_name = cut_string($folder['name'], 30);
  184.     echo '<tr id="'.$folder['path'].'" class="Table1">';
  185.     echo '<td><input onclick="javascript:item_click(this)" type="checkbox" name="folders[]" value="'.$folder['path'].'" /></td>';
  186.     if ($fs->get_share($folder['path']))
  187.     {
  188.         $folder_image = $GO_THEME->images['shared_folder'];
  189.     }else
  190.     {
  191.         $folder_image = $GO_THEME->images['folder'];
  192.     }
  193.  
  194.  
  195.     echo '<td><img width="16" height="16" border="0" src="'.$folder_image.'" /></td>';
  196.     if (isset($_SESSION['cut_folders']) && in_array(addslashes($folder['path']), $_SESSION['cut_folders']))
  197.     {
  198.         echo '<td nowrap><a href="'.$_SERVER['PHP_SELF'].'?path='.urlencode($folder['path']).'"><font color="#7d7d7d">'.$folder['name'].'</font></a>  </td>';
  199.     }else
  200.     {
  201.         echo '<td nowrap><a href="'.$_SERVER['PHP_SELF'].'?path='.urlencode($folder['path']).'" title="'.$folder['name'].'">'.$short_name.'</a>  </td>';
  202.     }
  203.     echo '<td nowrap>'.$fbFolder.'  </td>';
  204.     echo '<td align="right">-  </td>';
  205.     echo '<td nowrap>'.date($_SESSION['GO_SESSION']['date_format'].' '.$_SESSION['GO_SESSION']['time_format'], get_time($folder['mtime'])).'  </td>';
  206.     echo '</tr>';
  207.     echo '<tr><td colspan="99" height="1"><img src="'.$GO_THEME->images['cccccc'].'" border="0" height="1" width="100%" /></td></tr>';
  208. }
  209.  
  210. $total_size = 0;
  211.  
  212. while ($file = array_shift($files))
  213. {
  214.     $extension = get_extension($file['name']);
  215.     if (!isset($GO_FILTER_TYPES) || in_array($extension, $GO_FILTER_TYPES))
  216.     {
  217.         $total_size += $file['size'];
  218.         $short_name = cut_string(strip_extension($file['name']), 30);
  219.  
  220.         echo '<tr id="'.$file['path'].'" class="Table1">';
  221.         echo '<td><input onclick="javascript:item_click(this)" type="checkbox" name="files[]" value="'.$file['path'].'" /></td>';
  222.         echo '<td><img width="16" height="16" border="0" src="'.$GO_CONFIG->control_url.'icon.php?extension='.$extension.'" /></td>';
  223.         if (isset($_SESSION['cut_files']) && in_array(addslashes($file['path']), $_SESSION['cut_files']))
  224.         {
  225.             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>';
  226.         }else
  227.         {
  228.             echo '<td nowrap><a target="'.$target_frame.'" href="'.$GO_HANDLER.'?path='.urlencode($file['path']).'" title="'.$file['name'].'">'.$short_name.'</a>  </td>';
  229.         }
  230.         echo '<td nowrap>'.$file['type'].'  </td>';
  231.         echo '<td nowrap align="right">'.format_size($file['size']).'  </td>';
  232.         echo '<td nowrap>'.date($_SESSION['GO_SESSION']['date_format'].' '.$_SESSION['GO_SESSION']['time_format'], get_time($file['mtime'])).'  </td>';
  233.         echo '</tr>';
  234.         echo '<tr><td colspan="99" height="1"><img src="'.$GO_THEME->images['cccccc'].'" border="0" height="1" width="100%" /></td></tr>';
  235.     }
  236. }
  237.  
  238. echo '<tr><td colspan="99" class="small" height="18"> '.$item_count.' '.$fbItems.'     '.$fbFolderSize.': '.format_size($total_size).'</td></tr>';
  239. echo '<tr><td colspan="99" height="1"><img src="'.$GO_THEME->images['cccccc'].'" border="0" height="1" width="100%" /></td></tr>';
  240. echo '</table>';
  241.  
  242. echo '</td></tr>';
  243.  
  244. if ($GO_CONFIG->window_mode=='popup')
  245. {
  246.     echo '<tr><td colspan="2" align="center"><br />';
  247.     $button = new button($cmdOk,'javascript:submit_to_handler()');
  248.     echo '  ';
  249.     $button = new button($cmdCancel,'javascript:window.close()');
  250.     echo '</td></tr>';
  251. }
  252. echo '</table>';
  253. ?>
  254. <script type="text/javascript" language="javascript" src="<?php echo $GO_CONFIG->host.$GO_MODULES->path.'filesystem.js'; ?>"></script>
  255. <script type="text/javascript" language="javascript">
  256.  
  257. function submit_to_handler()
  258. {
  259.     <?php
  260.     if ($GO_MULTI_SELECT == false)
  261.     {
  262.         ?>
  263.         var count = 0;
  264.         var path = new String;
  265.  
  266.         for (var i=0;i<document.forms[0].elements.length;i++)
  267.         {
  268.             if(document.forms[0].elements[i].type == 'checkbox' && document.forms[0].elements[i].name != 'dummy')
  269.             {
  270.                 if (document.forms[0].elements[i].checked == true)
  271.                 {
  272.                     document.forms[0].path.value = document.forms[0].elements[i].value;
  273.                     count++;
  274.                 }
  275.             }
  276.         }
  277.         if (count > 1)
  278.         {
  279.             alert("<?php echo $fs_no_multi_select; ?>");
  280.             return false;
  281.         }
  282.         <?php
  283.     }
  284.     ?>
  285.     document.forms[0].task.value = 'GO_HANDLER';
  286.     document.forms[0].action = "<?php echo $GO_HANDLER; ?>";
  287.     document.forms[0].submit();
  288. }
  289.  
  290. function delete_items()
  291. {
  292.     var count = 0;
  293.     var filename = new String;
  294.     var path = new String;
  295.  
  296.     for (var i=0;i<document.forms[0].elements.length;i++)
  297.     {
  298.         if(document.forms[0].elements[i].type == 'checkbox' && document.forms[0].elements[i].name != 'dummy')
  299.         {
  300.             if (document.forms[0].elements[i].checked == true)
  301.             {
  302.                 count++;
  303.                 path = document.forms[0].elements[i].value;
  304.                 filename = path.substring(path.lastIndexOf('/')+1, path.length);
  305.             }
  306.         }
  307.     }
  308.     switch (count)
  309.     {
  310.         case 0:
  311.             alert("<?php echo $fbNoSelect; ?>");
  312.         break;
  313.  
  314.         case 1:
  315.             if (confirm("<?php echo $strDeletePrefix; ?>'"+filename+"'<?php echo $strDeleteSuffix; ?>"))
  316.             {
  317.                 document.forms[0].task.value = 'delete';
  318.                 document.forms[0].submit();
  319.             }
  320.         break;
  321.  
  322.         default:
  323.             if (confirm("<?php echo $strDeletePrefix.$strThis; ?> "+count+" <?php echo $strItems.$strDeleteSuffix; ?>"))
  324.             {
  325.                 document.forms[0].task.value = 'delete';
  326.                 document.forms[0].submit();
  327.             }
  328.         break;
  329.     }
  330. }
  331.  
  332. function create_archive()
  333. {
  334.     var count = 0;
  335.  
  336.     for (var i=0;i<document.forms[0].elements.length;i++)
  337.     {
  338.         if(document.forms[0].elements[i].type == 'checkbox' && document.forms[0].elements[i].name != 'dummy')
  339.         {
  340.             if (document.forms[0].elements[i].checked == true)
  341.             {
  342.                 count++;
  343.             }
  344.         }
  345.     }
  346.     if (count == 0)
  347.     {
  348.         alert("<?php echo $fbNoSelect; ?>");
  349.     }else
  350.     {
  351.         document.forms[0].task.value = 'create_archive';
  352.         document.forms[0].submit();
  353.     }
  354. }
  355.  
  356. function extract()
  357. {
  358.     var count = 0;
  359.  
  360.     for (var i=0;i<document.forms[0].elements.length;i++)
  361.     {
  362.         if(document.forms[0].elements[i].type == 'checkbox' && document.forms[0].elements[i].name != 'dummy')
  363.         {
  364.             if (document.forms[0].elements[i].checked == true)
  365.             {
  366.                 count++;
  367.             }
  368.         }
  369.     }
  370.     if (count == 0)
  371.     {
  372.         alert("<?php echo $fbNoSelect; ?>");
  373.     }else
  374.     {
  375.         document.forms[0].task.value = 'extract';
  376.         document.forms[0].submit();
  377.     }
  378. }
  379. </script>
  380.