* @copyright Copyright (C) 2002-2005 Markus Westphal, * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, * 2010-2012 Uwe Steinmann * @version Release: @package_version@ */ /** * Include parent class */ //require_once("class.Bootstrap.php"); /** * Class which outputs the html page for DropFolderChooser view * * @category DMS * @package SeedDMS * @author Markus Westphal, Malcolm Cowe, Uwe Steinmann * @copyright Copyright (C) 2002-2005 Markus Westphal, * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, * 2010-2012 Uwe Steinmann * @version Release: @package_version@ */ class SeedDMS_View_DropFolderChooser extends SeedDMS_Theme_Style { function js() { /* {{{ */ header('Content-Type: application/javascript; charset=UTF-8'); ?> $('.fileselect').click(function(ev) { attr_filename = $(ev.currentTarget).data('filename'); attr_form = $(ev.currentTarget).data('form'); fileSelected(attr_filename, attr_form); }); $('.folderselect').click(function(ev) { attr_foldername = $(ev.currentTarget).data('foldername'); attr_form = $(ev.currentTarget).data('form'); folderSelected(attr_foldername, attr_form); }); isDir()) $files[] = [substr($file->getPath(), strlen($path)+1), $file->getFilename()]; if(count($files) > 20) return $files; } return $files; } private function getFolders($path, $recursive=false) { if($recursive) $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); else $rii = new DirectoryIterator($path); $files = array(); foreach ($rii as $file) { if ($file->isDir()) { if(($t = substr($file->getPath(), strlen($path)+1)) && ($file->getFilename() == '.')) $files[] = $t; } if(count($files) > 20) return $files; } return $files; } public function menuList() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $settings = $this->params['settings']; $dropfolderdir = $this->params['dropfolderdir']; $showfolders = $this->params['showfolders']; $recursive = $this->params['recursive']; $cachedir = $this->params['cachedir']; $conversionmgr = $this->params['conversionmgr']; $previewwidth = $this->params['previewWidthMenuList']; $previewconverters = $this->params['previewConverters']; $timeout = $this->params['timeout']; $xsendfile = $this->params['xsendfile']; $folder = $this->params['folder']; $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); if($conversionmgr) $previewer->setConversionMgr($conversionmgr); else $previewer->setConverters($previewconverters); $c = 0; // count files $menuitems['dropfolder'] = array('label'=>'', 'children'=>array()); $dir = rtrim($dropfolderdir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.$user->getLogin(); /* Check if we are still looking in the configured directory and * not somewhere else, e.g. if the login was '../test' */ if(dirname($dir) == $dropfolderdir) { if(is_dir($dir)) { $files = $this->getFiles($dir, $recursive); $finfo = finfo_open(FILEINFO_MIME_TYPE); foreach($files as $file) { $entry = $file[1]; $path = $file[0]; $c++; $subitem = array('label'=>'', 'attributes'=>array(array('title', getMLText('menu_upload_from_dropfolder')))); if($folder) $subitem['link'] = $settings->_httpRoot.'out/out.AddDocument.php?folderid='.$folder->getId()."&dropfolderfileform1=".urldecode($path.DIRECTORY_SEPARATOR.$entry); $mimetype = finfo_file($finfo, $dir.DIRECTORY_SEPARATOR.$path.DIRECTORY_SEPARATOR.$entry); if($previewwidth) { $previewer->createRawPreview($dir.DIRECTORY_SEPARATOR.$path.DIRECTORY_SEPARATOR.$entry, 'dropfolder'.DIRECTORY_SEPARATOR, $mimetype); if($previewer->hasRawPreview($dir.DIRECTORY_SEPARATOR.$path.DIRECTORY_SEPARATOR.$entry, 'dropfolder'.DIRECTORY_SEPARATOR)) { $subitem['label'] .= "
_httpRoot."op/op.DropFolderPreview.php?filename=".urlencode($path.DIRECTORY_SEPARATOR.$entry)."&width=".$previewwidth."\" title=\"".htmlspecialchars($mimetype)."\">
"; } } $subitem['label'] .= "
".htmlspecialchars($path.DIRECTORY_SEPARATOR.$entry)."
".SeedDMS_Core_File::format_filesize(filesize($dir.DIRECTORY_SEPARATOR.$path.DIRECTORY_SEPARATOR.$entry)).", ".date('Y-m-d H:i:s', filectime($dir.DIRECTORY_SEPARATOR.$path.DIRECTORY_SEPARATOR.$entry))."
"; $menuitems['dropfolder']['children'][] = $subitem; } } } if($c) { $menuitems['dropfolder']['label'] = getMLText('menu_dropfolder')." (".$c.")"; self::showNavigationBar($menuitems, array('id'=>'main-menu-dropfolderlist', 'right'=>true)); } } /* }}} */ function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $dropfolderfile = $this->params['dropfolderfile']; $form = $this->params['form']; $dropfolderdir = $this->params['dropfolderdir']; $cachedir = $this->params['cachedir']; $conversionmgr = $this->params['conversionmgr']; $previewwidth = $this->params['previewWidthList']; $previewconverters = $this->params['previewConverters']; $timeout = $this->params['timeout']; $xsendfile = $this->params['xsendfile']; $showfolders = $this->params['showfolders']; $recursive = $this->params['recursive']; $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); if($conversionmgr) $previewer->setConversionMgr($conversionmgr); else $previewer->setConverters($previewconverters); $dir = $dropfolderdir.'/'.$user->getLogin(); /* Check if we are still looking in the configured directory and * not somewhere else, e.g. if the login was '../test' */ if(dirname($dir) == $dropfolderdir) { if(is_dir($dir)) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; $finfo = finfo_open(FILEINFO_MIME_TYPE); if($showfolders) { $folders = $this->getFolders($dir, $recursive); foreach($folders as $entry) { echo ""; echo ''; echo ""; echo "\n"; } } else { $files = $this->getFiles($dir, $recursive); foreach($files as $file) { $entry = $file[1]; $path = $file[0]; $mimetype = finfo_file($finfo, $dir.DIRECTORY_SEPARATOR.$path.DIRECTORY_SEPARATOR.$entry); if($previewwidth) { $previewer->createRawPreview($dir.DIRECTORY_SEPARATOR.$path.DIRECTORY_SEPARATOR.$entry, 'dropfolder'.DIRECTORY_SEPARATOR, $mimetype); echo "\n"; } } } echo "\n"; echo "
".getMLText('name')."".getMLText('file_size')."".getMLText('date')."
".$entry."
"; if($previewer->hasRawPreview($dir.DIRECTORY_SEPARATOR.$path.DIRECTORY_SEPARATOR.$entry, 'dropfolder'.DIRECTORY_SEPARATOR)) { echo ""; } echo "".htmlspecialchars($path.DIRECTORY_SEPARATOR.$entry)."".SeedDMS_Core_File::format_filesize(filesize($dir.DIRECTORY_SEPARATOR.$path.DIRECTORY_SEPARATOR.$entry))."".date('Y-m-d H:i:s', filectime($dir.DIRECTORY_SEPARATOR.$path.DIRECTORY_SEPARATOR.$entry))."
\n"; echo ''."\n"; } else { echo $this->errorMsg(getMLText('invalid_dropfolder_folder')); } } } /* }}} */ } ?>