forked from Wavyzz/dolibarr
Clean code of the filemanager
This commit is contained in:
@@ -23,25 +23,35 @@
|
|||||||
|
|
||||||
|
|
||||||
// This script is called with a POST method.
|
// This script is called with a POST method.
|
||||||
// Directory to scan (full path) is inside POST['dir'].
|
// Directory to scan (full path) is inside POST['dir'] and encode by js escape() if ajax is used or encoded by urlencode if mode=noajax
|
||||||
|
|
||||||
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1); // Disables token renewal
|
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1); // Disables token renewal
|
||||||
//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1');
|
|
||||||
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1');
|
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1');
|
||||||
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1');
|
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1');
|
||||||
if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
|
if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
|
||||||
|
|
||||||
$res=@include '../../main.inc.php';
|
if (! isset($mode) || $mode != 'noajax') // For ajax call
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
{
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
$res=@include '../../main.inc.php';
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/treeview.lib.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||||
include_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/lib/treeview.lib.php';
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php';
|
||||||
|
|
||||||
$openeddir = GETPOST('openeddir');
|
$openeddir = GETPOST('openeddir');
|
||||||
$modulepart= GETPOST('modulepart');
|
$modulepart= GETPOST('modulepart');
|
||||||
$selecteddir = jsUnEscape(GETPOST('dir')); // relative path. We must decode using same encoding function used by javascript: escape()
|
$selecteddir = jsUnEscape(GETPOST('dir')); // relative path. We must decode using same encoding function used by javascript: escape()
|
||||||
if ($selecteddir != '/') $selecteddir = preg_replace('/\/$/','',$selecteddir); // We removed last '/' except if it is '/'
|
if ($selecteddir != '/') $selecteddir = preg_replace('/\/$/','',$selecteddir); // We removed last '/' except if it is '/'
|
||||||
|
}
|
||||||
|
else // For no ajax call
|
||||||
|
{
|
||||||
|
$openeddir = GETPOST('openeddir');
|
||||||
|
$modulepart= GETPOST('modulepart');
|
||||||
|
$selecteddir = GETPOST('dir');
|
||||||
|
if ($selecteddir != '/') $selecteddir = preg_replace('/\/$/','',$selecteddir); // We removed last '/' except if it is '/'
|
||||||
|
if (empty($url)) $url=DOL_URL_ROOT.'/ecm/index.php';
|
||||||
|
}
|
||||||
|
|
||||||
$langs->load("ecm");
|
$langs->load("ecm");
|
||||||
|
|
||||||
@@ -76,7 +86,10 @@ if ($modulepart == 'medias')
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
top_httphead();
|
if (! isset($mode) || $mode != 'noajax')
|
||||||
|
{
|
||||||
|
top_httphead();
|
||||||
|
}
|
||||||
|
|
||||||
//print '<!-- selecteddir = '.$selecteddir.', openeddir = '.$openeddir.', modulepart='.$modulepart.' -->'."\n";
|
//print '<!-- selecteddir = '.$selecteddir.', openeddir = '.$openeddir.', modulepart='.$modulepart.' -->'."\n";
|
||||||
$userstatic=new User($db);
|
$userstatic=new User($db);
|
||||||
@@ -97,151 +110,320 @@ foreach($sqltree as $keycursor => $val)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_ECM_DISABLE_JS))
|
||||||
if (file_exists($fullpathselecteddir))
|
|
||||||
{
|
{
|
||||||
$files = @scandir($fullpathselecteddir);
|
if (file_exists($fullpathselecteddir))
|
||||||
|
{
|
||||||
|
$files = @scandir($fullpathselecteddir);
|
||||||
|
|
||||||
if ($files)
|
if ($files)
|
||||||
{
|
{
|
||||||
natcasesort($files);
|
natcasesort($files);
|
||||||
if ( count($files) > 2 ) /* The 2 accounts for . and .. */
|
if (count($files) > 2) /* The 2 accounts for . and .. */
|
||||||
{
|
{
|
||||||
echo "<ul class=\"ecmjqft\" style=\"display: none;\">\n";
|
echo '<ul class="ecmjqft" style="display: none;">'."\n";
|
||||||
|
|
||||||
// All dirs
|
// All dirs
|
||||||
foreach( $files as $file ) // $file can be '.', '..', or 'My dir' or 'My file'
|
foreach ($files as $file) // $file can be '.', '..', or 'My dir' or 'My file'
|
||||||
{
|
{
|
||||||
if ($file == 'temp') continue;
|
if ($file == 'temp') continue;
|
||||||
|
|
||||||
$nbofsubdir=0;
|
$nbofsubdir=0;
|
||||||
$nboffilesinsubdir=0;
|
$nboffilesinsubdir=0;
|
||||||
|
|
||||||
$val=array();
|
$val=array();
|
||||||
|
|
||||||
// Loop on all database entries (sqltree) to find the one matching the subdir found into dir to scan
|
// Loop on all database entries (sqltree) to find the one matching the subdir found into dir to scan
|
||||||
foreach($sqltree as $key => $tmpval)
|
foreach($sqltree as $key => $tmpval)
|
||||||
{
|
{
|
||||||
//print "-- key=".$key." - ".$tmpval['fullrelativename']." vs ".(($selecteddir != '/'?$selecteddir.'/':'').$file)."<br>\n";
|
//print "-- key=".$key." - ".$tmpval['fullrelativename']." vs ".(($selecteddir != '/'?$selecteddir.'/':'').$file)."<br>\n";
|
||||||
if ($tmpval['fullrelativename'] == (($selecteddir != '/'?$selecteddir.'/':'').$file)) // We found equivalent record into database
|
if ($tmpval['fullrelativename'] == (($selecteddir != '/'?$selecteddir.'/':'').$file)) // We found equivalent record into database
|
||||||
{
|
{
|
||||||
$val=$tmpval;
|
$val=$tmpval;
|
||||||
$resarray=tree_showpad($sqltree,$key,1);
|
$resarray=tree_showpad($sqltree,$key,1);
|
||||||
|
|
||||||
// Refresh cache for this subdir
|
// Refresh cache for this subdir
|
||||||
if (isset($val['cachenbofdoc']) && $val['cachenbofdoc'] < 0) // Cache is not up to date, so we update it for this directory t
|
if (isset($val['cachenbofdoc']) && $val['cachenbofdoc'] < 0) // Cache is not up to date, so we update it for this directory t
|
||||||
{
|
{
|
||||||
$result=$ecmdirstatic->fetch($val['id']);
|
$result=$ecmdirstatic->fetch($val['id']);
|
||||||
$ecmdirstatic->ref=$ecmdirstatic->label;
|
$ecmdirstatic->ref=$ecmdirstatic->label;
|
||||||
|
|
||||||
$result=$ecmdirstatic->refreshcachenboffile(0);
|
$result=$ecmdirstatic->refreshcachenboffile(0);
|
||||||
$val['cachenbofdoc']=$result;
|
$val['cachenbofdoc']=$result;
|
||||||
}
|
}
|
||||||
|
|
||||||
$a=$resarray[0];
|
$a=$resarray[0];
|
||||||
$nbofsubdir=$resarray[1];
|
$nbofsubdir=$resarray[1];
|
||||||
$nboffilesinsubdir=$resarray[2];
|
$nboffilesinsubdir=$resarray[2];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//print 'modulepart='.$modulepart.' fullpathselecteddir='.$fullpathselecteddir.' - val[fullrelativename] (in database)='.$val['fullrelativename'].' - val[id]='.$val['id'].' - is_dir='.dol_is_dir($fullpathselecteddir . $file).' - file='.$file."\n";
|
//print 'modulepart='.$modulepart.' fullpathselecteddir='.$fullpathselecteddir.' - val[fullrelativename] (in database)='.$val['fullrelativename'].' - val[id]='.$val['id'].' - is_dir='.dol_is_dir($fullpathselecteddir . $file).' - file='.$file."\n";
|
||||||
if ($file != '.' && $file != '..' && ((! empty($val['fullrelativename']) && $val['id'] >= 0) || dol_is_dir($fullpathselecteddir . (preg_match('/\/$/',$fullpathselecteddir)?'':'/') . $file)))
|
if ($file != '.' && $file != '..' && ((! empty($val['fullrelativename']) && $val['id'] >= 0) || dol_is_dir($fullpathselecteddir . (preg_match('/\/$/',$fullpathselecteddir)?'':'/') . $file)))
|
||||||
{
|
{
|
||||||
if (empty($val['fullrelativename'])) // If we did not find entry into database, but found a directory (dol_is_dir was ok at previous test)
|
if (empty($val['fullrelativename'])) // If we did not find entry into database, but found a directory (dol_is_dir was ok at previous test)
|
||||||
{
|
{
|
||||||
$val['fullrelativename']=$file;
|
$val['fullrelativename']=$file;
|
||||||
$val['id']=0;
|
$val['id']=0;
|
||||||
$val['label']=$file;
|
$val['label']=$file;
|
||||||
$val['description']='';
|
$val['description']='';
|
||||||
$nboffilesinsubdir=$langs->trans("Unknown");
|
$nboffilesinsubdir=$langs->trans("Unknown");
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<li class="directory collapsed">';
|
print '<li class="directory collapsed">';
|
||||||
|
|
||||||
print "<a class=\"fmdirlia jqft ecmjqft\" href=\"#\" rel=\"" . dol_escape_htmltag($val['fullrelativename'].'/') . "\" id=\"fmdirlia_id_".$val['id']."\"";
|
print "<a class=\"fmdirlia jqft ecmjqft\" href=\"";
|
||||||
print " onClick=\"loadandshowpreview('".dol_escape_js($val['fullrelativename'])."',".$val['id'].")\">";
|
print "#";
|
||||||
print dol_escape_htmltag($file);
|
print "\" rel=\"" . dol_escape_htmltag($val['fullrelativename'].'/') . "\" id=\"fmdirlia_id_".$val['id']."\"";
|
||||||
print "</a>";
|
print " onClick=\"loadandshowpreview('".dol_escape_js($val['fullrelativename'])."',".$val['id'].")";
|
||||||
|
print "\">";
|
||||||
|
print dol_escape_htmltag($file);
|
||||||
|
print "</a>";
|
||||||
|
|
||||||
print '<div class="ecmjqft">';
|
print '<div class="ecmjqft">';
|
||||||
|
|
||||||
print '<table class="nobordernopadding"><tr>';
|
print '<table class="nobordernopadding"><tr>';
|
||||||
|
|
||||||
/*print '<td align="left">';
|
/*print '<td align="left">';
|
||||||
print dol_escape_htmltag($file);
|
print dol_escape_htmltag($file);
|
||||||
print '</td>';*/
|
print '</td>';*/
|
||||||
|
|
||||||
// Nb of docs
|
// Nb of docs
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
print (isset($val['cachenbofdoc']) && $val['cachenbofdoc'] >= 0)?$val['cachenbofdoc']:' ';
|
print (isset($val['cachenbofdoc']) && $val['cachenbofdoc'] >= 0)?$val['cachenbofdoc']:' ';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="left">';
|
print '<td align="left">';
|
||||||
if ($nbofsubdir > 0 && $nboffilesinsubdir > 0) print '<font color="#AAAAAA">+'.$nboffilesinsubdir.'</font> ';
|
if ($nbofsubdir > 0 && $nboffilesinsubdir > 0) print '<font color="#AAAAAA">+'.$nboffilesinsubdir.'</font> ';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Edit link
|
// Edit link
|
||||||
print '<td align="right" width="18"><a href="'.DOL_URL_ROOT.'/ecm/docmine.php?section='.$val['id'].'&relativedir='.urlencode($val['fullrelativename']).'">'.img_view($langs->trans("Edit").' - '.$langs->trans("View"), 0, 'class="valignmiddle"').'</a></td>';
|
print '<td align="right" width="18"><a href="'.DOL_URL_ROOT.'/ecm/docmine.php?section='.$val['id'].'&relativedir='.urlencode($val['fullrelativename']).'">'.img_view($langs->trans("Edit").' - '.$langs->trans("View"), 0, 'class="valignmiddle"').'</a></td>';
|
||||||
|
|
||||||
// Add link
|
// Add link
|
||||||
//print '<td align="right"><a href="'.DOL_URL_ROOT.'/ecm/docdir.php?action=create&catParent='.$val['id'].'">'.img_edit_add().'</a></td>';
|
//print '<td align="right"><a href="'.DOL_URL_ROOT.'/ecm/docdir.php?action=create&catParent='.$val['id'].'">'.img_edit_add().'</a></td>';
|
||||||
//print '<td align="right" width="14"> </td>';
|
//print '<td align="right" width="14"> </td>';
|
||||||
|
|
||||||
// Info
|
// Info
|
||||||
print '<td align="right" width="18">';
|
print '<td align="right" width="18">';
|
||||||
$userstatic->id=isset($val['fk_user_c'])?$val['fk_user_c']:0;
|
$userstatic->id=isset($val['fk_user_c'])?$val['fk_user_c']:0;
|
||||||
$userstatic->lastname=isset($val['login_c'])?$val['login_c']:0;
|
$userstatic->lastname=isset($val['login_c'])?$val['login_c']:0;
|
||||||
$htmltooltip='<b>'.$langs->trans("ECMSection").'</b>: '.$val['label'].'<br>';
|
$htmltooltip='<b>'.$langs->trans("ECMSection").'</b>: '.$val['label'].'<br>';
|
||||||
$htmltooltip='<b>'.$langs->trans("Type").'</b>: '.$langs->trans("ECMSectionManual").'<br>';
|
$htmltooltip='<b>'.$langs->trans("Type").'</b>: '.$langs->trans("ECMSectionManual").'<br>';
|
||||||
$htmltooltip.='<b>'.$langs->trans("ECMCreationUser").'</b>: '.$userstatic->getNomUrl(1, '', false, 1).'<br>';
|
$htmltooltip.='<b>'.$langs->trans("ECMCreationUser").'</b>: '.$userstatic->getNomUrl(1, '', false, 1).'<br>';
|
||||||
$htmltooltip.='<b>'.$langs->trans("ECMCreationDate").'</b>: '.(isset($val['date_c'])?dol_print_date($val['date_c'],"dayhour"):$langs->trans("NeedRefresh")).'<br>';
|
$htmltooltip.='<b>'.$langs->trans("ECMCreationDate").'</b>: '.(isset($val['date_c'])?dol_print_date($val['date_c'],"dayhour"):$langs->trans("NeedRefresh")).'<br>';
|
||||||
$htmltooltip.='<b>'.$langs->trans("Description").'</b>: '.$val['description'].'<br>';
|
$htmltooltip.='<b>'.$langs->trans("Description").'</b>: '.$val['description'].'<br>';
|
||||||
$htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInDir").'</b>: '.((isset($val['cachenbofdoc']) && $val['cachenbofdoc'] >= 0)?$val['cachenbofdoc']:$langs->trans("NeedRefresh")).'<br>';
|
$htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInDir").'</b>: '.((isset($val['cachenbofdoc']) && $val['cachenbofdoc'] >= 0)?$val['cachenbofdoc']:$langs->trans("NeedRefresh")).'<br>';
|
||||||
if ($nboffilesinsubdir > 0) $htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInSubDir").'</b>: '.$nboffilesinsubdir;
|
if ($nboffilesinsubdir > 0) $htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInSubDir").'</b>: '.$nboffilesinsubdir;
|
||||||
else $htmltooltip.='<b>'.$langs->trans("ECMNbOfSubDir").'</b>: '.($nbofsubdir >= 0 ? $nbofsubdir : $langs->trans("NeedRefresh")).'<br>';
|
else $htmltooltip.='<b>'.$langs->trans("ECMNbOfSubDir").'</b>: '.($nbofsubdir >= 0 ? $nbofsubdir : $langs->trans("NeedRefresh")).'<br>';
|
||||||
print $form->textwithpicto('',$htmltooltip,1,"info");
|
print $form->textwithpicto('',$htmltooltip,1,"info");
|
||||||
print "</td>";
|
print "</td>";
|
||||||
|
|
||||||
print "</tr></table>\n";
|
print "</tr></table>\n";
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
//print '<div> </div>';
|
//print '<div> </div>';
|
||||||
print "</li>\n";
|
print "</li>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable jquery handlers on new generated HTML objects
|
// Enable jquery handlers on new generated HTML objects
|
||||||
print "\n<!-- JS CODE TO ENABLE Tooltips on all object with class classfortooltip -->\n";
|
print "\n<!-- JS CODE TO ENABLE Tooltips on all object with class classfortooltip -->\n";
|
||||||
print '<script type="text/javascript">
|
print '<script type="text/javascript">
|
||||||
jQuery(document).ready(function () {
|
jQuery(document).ready(function () {
|
||||||
jQuery(".classfortooltip").tooltip({
|
jQuery(".classfortooltip").tooltip({
|
||||||
show: { collision: "flipfit", effect:\'toggle\', delay:50 },
|
show: { collision: "flipfit", effect:\'toggle\', delay:50 },
|
||||||
hide: { effect:\'toggle\', delay: 50 },
|
hide: { effect:\'toggle\', delay: 50 },
|
||||||
tooltipClass: "mytooltip",
|
tooltipClass: "mytooltip",
|
||||||
content: function () {
|
content: function () {
|
||||||
return $(this).prop(\'title\'); /* To force to get title as is */
|
return $(this).prop(\'title\'); /* To force to get title as is */
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/* TODO Remove this. Is replaced with function as 3rd parameter of fileTree */
|
/* TODO Remove this. Is replaced with function as 3rd parameter of fileTree */
|
||||||
jQuery(".fmdirlia").click(function(e) {
|
jQuery(".fmdirlia").click(function(e) {
|
||||||
id=jQuery(this).attr(\'id\').substr(12);
|
id=jQuery(this).attr(\'id\').substr(12);
|
||||||
jQuery("#formuserfile_section_dir").val(jQuery(this).attr(\'rel\'));
|
jQuery("#formuserfile_section_dir").val(jQuery(this).attr(\'rel\'));
|
||||||
jQuery("#formuserfile_section_id").val(id);
|
jQuery("#formuserfile_section_id").val(id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>';
|
</script>';
|
||||||
|
|
||||||
echo "</ul>\n";
|
echo "</ul>\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else print "PermissionDenied";
|
else print "PermissionDenied";
|
||||||
|
}
|
||||||
|
|
||||||
|
// This ajax service is called only when a directory $selecteddir is opened but not when closed.
|
||||||
|
//print '<script language="javascript">';
|
||||||
|
//print "loadandshowpreview('".dol_escape_js($selecteddir)."');";
|
||||||
|
//print '</script>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// This ajax service is called only when a directory $selecteddir is opened but not when closed.
|
|
||||||
//print '<script language="javascript">';
|
|
||||||
//print "loadandshowpreview('".dol_escape_js($selecteddir)."');";
|
|
||||||
//print '</script>';
|
|
||||||
|
|
||||||
if (is_object($db)) $db->close();
|
if (empty($conf->use_javascript_ajax) || ! empty($conf->global->MAIN_ECM_DISABLE_JS))
|
||||||
|
{
|
||||||
|
print '<ul class="ecmjqft">';
|
||||||
|
|
||||||
|
// Load full tree from database. We will use it to define nbofsubdir and nboffilesinsubdir
|
||||||
|
if (empty($sqltree)) $sqltree=$ecmdirstatic->get_full_arbo(0); // Slow
|
||||||
|
|
||||||
|
// ----- This section will show a tree from a fulltree array -----
|
||||||
|
// $section must also be defined
|
||||||
|
// ----------------------------------------------------------------
|
||||||
|
|
||||||
|
// Define fullpathselected ( _x_y_z ) of $section parameter (!! not into ajaxdirtree)
|
||||||
|
$fullpathselected='';
|
||||||
|
foreach($sqltree as $key => $val)
|
||||||
|
{
|
||||||
|
//print $val['id']."-".$section."<br>";
|
||||||
|
if ($val['id'] == $section)
|
||||||
|
{
|
||||||
|
$fullpathselected=$val['fullpath'];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//print "fullpathselected=".$fullpathselected."<br>";
|
||||||
|
|
||||||
|
// Update expandedsectionarray in session
|
||||||
|
$expandedsectionarray=array();
|
||||||
|
if (isset($_SESSION['dol_ecmexpandedsectionarray'])) $expandedsectionarray=explode(',',$_SESSION['dol_ecmexpandedsectionarray']);
|
||||||
|
|
||||||
|
if ($section && GETPOST('sectionexpand') == 'true')
|
||||||
|
{
|
||||||
|
// We add all sections that are parent of opened section
|
||||||
|
$pathtosection=explode('_',$fullpathselected);
|
||||||
|
foreach($pathtosection as $idcursor)
|
||||||
|
{
|
||||||
|
if ($idcursor && ! in_array($idcursor,$expandedsectionarray)) // Not already in array
|
||||||
|
{
|
||||||
|
$expandedsectionarray[]=$idcursor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$_SESSION['dol_ecmexpandedsectionarray']=join(',',$expandedsectionarray);
|
||||||
|
}
|
||||||
|
if ($section && GETPOST('sectionexpand') == 'false')
|
||||||
|
{
|
||||||
|
// We removed all expanded sections that are child of the closed section
|
||||||
|
$oldexpandedsectionarray=$expandedsectionarray;
|
||||||
|
$expandedsectionarray=array(); // Reset
|
||||||
|
foreach($oldexpandedsectionarray as $sectioncursor)
|
||||||
|
{
|
||||||
|
// TODO is_in_subtree(fulltree,sectionparent,sectionchild) does nox exists. Enable or remove this...
|
||||||
|
//if ($sectioncursor && ! is_in_subtree($sqltree,$section,$sectioncursor)) $expandedsectionarray[]=$sectioncursor;
|
||||||
|
}
|
||||||
|
$_SESSION['dol_ecmexpandedsectionarray']=join(',',$expandedsectionarray);
|
||||||
|
}
|
||||||
|
//print $_SESSION['dol_ecmexpandedsectionarray'].'<br>';
|
||||||
|
|
||||||
|
$nbofentries=0;
|
||||||
|
$oldvallevel=0;
|
||||||
|
$var=true;
|
||||||
|
foreach($sqltree as $key => $val)
|
||||||
|
{
|
||||||
|
$var=false;
|
||||||
|
|
||||||
|
$ecmdirstatic->id=$val['id'];
|
||||||
|
$ecmdirstatic->ref=$val['label'];
|
||||||
|
|
||||||
|
// Refresh cache
|
||||||
|
if (preg_match('/refresh/i',$action))
|
||||||
|
{
|
||||||
|
$result=$ecmdirstatic->fetch($val['id']);
|
||||||
|
$ecmdirstatic->ref=$ecmdirstatic->label;
|
||||||
|
|
||||||
|
$result=$ecmdirstatic->refreshcachenboffile(0);
|
||||||
|
$val['cachenbofdoc']=$result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//$fullpathparent=preg_replace('/(_[^_]+)$/i','',$val['fullpath']);
|
||||||
|
|
||||||
|
// Define showline
|
||||||
|
$showline=0;
|
||||||
|
|
||||||
|
// If directory is son of expanded directory, we show line
|
||||||
|
if (in_array($val['id_mere'],$expandedsectionarray)) $showline=4;
|
||||||
|
// If directory is brother of selected directory, we show line
|
||||||
|
elseif ($val['id'] != $section && $val['id_mere'] == $ecmdirstatic->motherof[$section]) $showline=3;
|
||||||
|
// If directory is parent of selected directory or is selected directory, we show line
|
||||||
|
elseif (preg_match('/'.$val['fullpath'].'_/i',$fullpathselected.'_')) $showline=2;
|
||||||
|
// If we are level one we show line
|
||||||
|
elseif ($val['level'] < 2) $showline=1;
|
||||||
|
|
||||||
|
if ($showline)
|
||||||
|
{
|
||||||
|
if (in_array($val['id'],$expandedsectionarray)) $option='indexexpanded';
|
||||||
|
else $option='indexnotexpanded';
|
||||||
|
//print $option;
|
||||||
|
|
||||||
|
print '<li class="directory collapsed">';
|
||||||
|
|
||||||
|
// Show tree graph pictos
|
||||||
|
$cpt=1;
|
||||||
|
while ($cpt < $sqltree[$key]['level'])
|
||||||
|
{
|
||||||
|
print ' ';
|
||||||
|
$cpt++;
|
||||||
|
}
|
||||||
|
$resarray=tree_showpad($sqltree,$key,1);
|
||||||
|
$a=$resarray[0];
|
||||||
|
$nbofsubdir=$resarray[1];
|
||||||
|
$nboffilesinsubdir=$resarray[2];
|
||||||
|
|
||||||
|
// Show link
|
||||||
|
print $ecmdirstatic->getNomUrl(0,$option,32,'class="fmdirlia jqft ecmjqft"');
|
||||||
|
|
||||||
|
print '<div class="ecmjqft">';
|
||||||
|
|
||||||
|
// Nb of docs
|
||||||
|
print '<table class="nobordernopadding"><tr><td>';
|
||||||
|
print $val['cachenbofdoc'];
|
||||||
|
print '</td>';
|
||||||
|
print '<td align="left">';
|
||||||
|
if ($nbofsubdir && $nboffilesinsubdir) print '<font color="#AAAAAA">+'.$nboffilesinsubdir.'</font> ';
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Info
|
||||||
|
print '<td align="center">';
|
||||||
|
$userstatic->id=$val['fk_user_c'];
|
||||||
|
$userstatic->lastname=$val['login_c'];
|
||||||
|
$htmltooltip='<b>'.$langs->trans("ECMSection").'</b>: '.$val['label'].'<br>';
|
||||||
|
$htmltooltip='<b>'.$langs->trans("Type").'</b>: '.$langs->trans("ECMSectionManual").'<br>';
|
||||||
|
$htmltooltip.='<b>'.$langs->trans("ECMCreationUser").'</b>: '.$userstatic->getNomUrl(1, '', false, 1).'<br>';
|
||||||
|
$htmltooltip.='<b>'.$langs->trans("ECMCreationDate").'</b>: '.dol_print_date($val['date_c'],"dayhour").'<br>';
|
||||||
|
$htmltooltip.='<b>'.$langs->trans("Description").'</b>: '.$val['description'].'<br>';
|
||||||
|
$htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInDir").'</b>: '.$val['cachenbofdoc'].'<br>';
|
||||||
|
if ($nbofsubdir) $htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInSubDir").'</b>: '.$nboffilesinsubdir;
|
||||||
|
else $htmltooltip.='<b>'.$langs->trans("ECMNbOfSubDir").'</b>: '.$nbofsubdir.'<br>';
|
||||||
|
print $form->textwithpicto('', $htmltooltip, 1, 'info');
|
||||||
|
print "</td>";
|
||||||
|
|
||||||
|
print '</tr></table>';
|
||||||
|
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
|
print "</li>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$oldvallevel=$val['level'];
|
||||||
|
$nbofentries++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If nothing to show
|
||||||
|
if ($nbofentries == 0)
|
||||||
|
{
|
||||||
|
print '<li class="directory collapsed">';
|
||||||
|
print '<div class="ecmjqft">';
|
||||||
|
print $langs->trans("ECMNoDirectoryYet");
|
||||||
|
print '</div>';
|
||||||
|
print "</li>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
print '</ul>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Close db if mode is not noajax
|
||||||
|
if ((! isset($mode) || $mode != 'noajax') && is_object($db)) $db->close();
|
||||||
|
|||||||
@@ -14,13 +14,14 @@
|
|||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* You can call this page with param module=medias to get a filemanager for medias.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/ecm/index.php
|
* \file htdocs/ecm/index.php
|
||||||
* \ingroup ecm
|
* \ingroup ecm
|
||||||
* \brief Main page for ECM section area
|
* \brief Main page for ECM section area
|
||||||
* \author Laurent Destailleur
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require '../main.inc.php';
|
require '../main.inc.php';
|
||||||
@@ -31,14 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/treeview.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php';
|
||||||
|
|
||||||
// Load traductions files
|
// Load traductions files
|
||||||
$langs->load("ecm");
|
$langs->loadLangs(array("ecm","companies","other","users","orders","propal","bills","contracts"));
|
||||||
$langs->load("companies");
|
|
||||||
$langs->load("other");
|
|
||||||
$langs->load("users");
|
|
||||||
$langs->load("orders");
|
|
||||||
$langs->load("propal");
|
|
||||||
$langs->load("bills");
|
|
||||||
$langs->load("contracts");
|
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if ($user->societe_id) $socid=$user->societe_id;
|
if ($user->societe_id) $socid=$user->societe_id;
|
||||||
@@ -145,7 +139,6 @@ if ($action == 'confirm_deletefile')
|
|||||||
{
|
{
|
||||||
// GETPOST('urlfile','alpha') is full relative URL from ecm root dir. Contains path of all sections.
|
// GETPOST('urlfile','alpha') is full relative URL from ecm root dir. Contains path of all sections.
|
||||||
//var_dump(GETPOST('urlfile'));exit;
|
//var_dump(GETPOST('urlfile'));exit;
|
||||||
$langs->load("other");
|
|
||||||
|
|
||||||
$upload_dir = $conf->ecm->dir_output.($relativepath?'/'.$relativepath:'');
|
$upload_dir = $conf->ecm->dir_output.($relativepath?'/'.$relativepath:'');
|
||||||
$file = $upload_dir . "/" . GETPOST('urlfile','alpha'); // Do not use urldecode here ($_GET and $_POST are already decoded by PHP).
|
$file = $upload_dir . "/" . GETPOST('urlfile','alpha'); // Do not use urldecode here ($_GET and $_POST are already decoded by PHP).
|
||||||
@@ -443,7 +436,7 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti
|
|||||||
{
|
{
|
||||||
print '<tr><td colspan="6">';
|
print '<tr><td colspan="6">';
|
||||||
|
|
||||||
// Show filemanager tree
|
// Show filemanager tree (will be filled by call of ajax enablefiletreeajax.tpl.php that execute ajaxdirtree.php)
|
||||||
print '<div id="filetree" class="ecmfiletree"></div>';
|
print '<div id="filetree" class="ecmfiletree"></div>';
|
||||||
|
|
||||||
if ($action == 'deletefile') print $form->formconfirm('eeeee', $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', '', 'deletefile');
|
if ($action == 'deletefile') print $form->formconfirm('eeeee', $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', '', 'deletefile');
|
||||||
@@ -453,164 +446,20 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<tr><td colspan="6" style="padding-left: 20px">';
|
print '<tr><td colspan="6" style="padding-left: 20px">';
|
||||||
|
|
||||||
|
if (empty($module)) $module='ecm';
|
||||||
|
|
||||||
|
$_POST['modulepart'] = $module;
|
||||||
|
$_POST['openeddir'] = GETPOST('openeddir');
|
||||||
|
$_POST['dir'] = empty($_POST['dir'])?'/':$_POST['dir'];
|
||||||
|
|
||||||
|
// Show filemanager tree (will be filled by direct include of ajaxdirtree.php in mode noajax, this will return all dir - all levels - to show)
|
||||||
print '<div id="filetree" class="ecmfiletree">';
|
print '<div id="filetree" class="ecmfiletree">';
|
||||||
print '<ul class="ecmjqft">';
|
|
||||||
|
|
||||||
// Load full tree
|
$mode='noajax';
|
||||||
if (empty($sqltree)) $sqltree=$ecmdirstatic->get_full_arbo(0); // Slow
|
$url=DOL_URL_ROOT.'/ecm/index.php';
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/ajax/ajaxdirtree.php';
|
||||||
|
|
||||||
// ----- This section will show a tree from a fulltree array -----
|
|
||||||
// $section must also be defined
|
|
||||||
// ----------------------------------------------------------------
|
|
||||||
|
|
||||||
// Define fullpathselected ( _x_y_z ) of $section parameter
|
|
||||||
$fullpathselected='';
|
|
||||||
foreach($sqltree as $key => $val)
|
|
||||||
{
|
|
||||||
//print $val['id']."-".$section."<br>";
|
|
||||||
if ($val['id'] == $section)
|
|
||||||
{
|
|
||||||
$fullpathselected=$val['fullpath'];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//print "fullpathselected=".$fullpathselected."<br>";
|
|
||||||
|
|
||||||
// Update expandedsectionarray in session
|
|
||||||
$expandedsectionarray=array();
|
|
||||||
if (isset($_SESSION['dol_ecmexpandedsectionarray'])) $expandedsectionarray=explode(',',$_SESSION['dol_ecmexpandedsectionarray']);
|
|
||||||
|
|
||||||
if ($section && GETPOST('sectionexpand') == 'true')
|
|
||||||
{
|
|
||||||
// We add all sections that are parent of opened section
|
|
||||||
$pathtosection=explode('_',$fullpathselected);
|
|
||||||
foreach($pathtosection as $idcursor)
|
|
||||||
{
|
|
||||||
if ($idcursor && ! in_array($idcursor,$expandedsectionarray)) // Not already in array
|
|
||||||
{
|
|
||||||
$expandedsectionarray[]=$idcursor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$_SESSION['dol_ecmexpandedsectionarray']=join(',',$expandedsectionarray);
|
|
||||||
}
|
|
||||||
if ($section && GETPOST('sectionexpand') == 'false')
|
|
||||||
{
|
|
||||||
// We removed all expanded sections that are child of the closed section
|
|
||||||
$oldexpandedsectionarray=$expandedsectionarray;
|
|
||||||
$expandedsectionarray=array(); // Reset
|
|
||||||
foreach($oldexpandedsectionarray as $sectioncursor)
|
|
||||||
{
|
|
||||||
// is_in_subtree(fulltree,sectionparent,sectionchild)
|
|
||||||
if ($sectioncursor && ! is_in_subtree($sqltree,$section,$sectioncursor)) $expandedsectionarray[]=$sectioncursor;
|
|
||||||
}
|
|
||||||
$_SESSION['dol_ecmexpandedsectionarray']=join(',',$expandedsectionarray);
|
|
||||||
}
|
|
||||||
//print $_SESSION['dol_ecmexpandedsectionarray'].'<br>';
|
|
||||||
|
|
||||||
$nbofentries=0;
|
|
||||||
$oldvallevel=0;
|
|
||||||
$var=true;
|
|
||||||
foreach($sqltree as $key => $val)
|
|
||||||
{
|
|
||||||
$var=false;
|
|
||||||
|
|
||||||
$ecmdirstatic->id=$val['id'];
|
|
||||||
$ecmdirstatic->ref=$val['label'];
|
|
||||||
|
|
||||||
// Refresh cache
|
|
||||||
if (preg_match('/refresh/i',$action))
|
|
||||||
{
|
|
||||||
$result=$ecmdirstatic->fetch($val['id']);
|
|
||||||
$ecmdirstatic->ref=$ecmdirstatic->label;
|
|
||||||
|
|
||||||
$result=$ecmdirstatic->refreshcachenboffile(0);
|
|
||||||
$val['cachenbofdoc']=$result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//$fullpathparent=preg_replace('/(_[^_]+)$/i','',$val['fullpath']);
|
|
||||||
|
|
||||||
// Define showline
|
|
||||||
$showline=0;
|
|
||||||
|
|
||||||
// If directory is son of expanded directory, we show line
|
|
||||||
if (in_array($val['id_mere'],$expandedsectionarray)) $showline=4;
|
|
||||||
// If directory is brother of selected directory, we show line
|
|
||||||
elseif ($val['id'] != $section && $val['id_mere'] == $ecmdirstatic->motherof[$section]) $showline=3;
|
|
||||||
// If directory is parent of selected directory or is selected directory, we show line
|
|
||||||
elseif (preg_match('/'.$val['fullpath'].'_/i',$fullpathselected.'_')) $showline=2;
|
|
||||||
// If we are level one we show line
|
|
||||||
elseif ($val['level'] < 2) $showline=1;
|
|
||||||
|
|
||||||
if ($showline)
|
|
||||||
{
|
|
||||||
if (in_array($val['id'],$expandedsectionarray)) $option='indexexpanded';
|
|
||||||
else $option='indexnotexpanded';
|
|
||||||
//print $option;
|
|
||||||
|
|
||||||
print '<li class="directory collapsed">';
|
|
||||||
|
|
||||||
// Show tree graph pictos
|
|
||||||
$cpt=1;
|
|
||||||
while ($cpt < $sqltree[$key]['level'])
|
|
||||||
{
|
|
||||||
print ' ';
|
|
||||||
$cpt++;
|
|
||||||
}
|
|
||||||
$resarray=tree_showpad($sqltree,$key,1);
|
|
||||||
$a=$resarray[0];
|
|
||||||
$nbofsubdir=$resarray[1];
|
|
||||||
$nboffilesinsubdir=$resarray[2];
|
|
||||||
|
|
||||||
// Show link
|
|
||||||
print $ecmdirstatic->getNomUrl(0,$option,32,'class="fmdirlia jqft ecmjqft"');
|
|
||||||
|
|
||||||
print '<div class="ecmjqft">';
|
|
||||||
|
|
||||||
// Nb of docs
|
|
||||||
print '<table class="nobordernopadding"><tr><td>';
|
|
||||||
print $val['cachenbofdoc'];
|
|
||||||
print '</td>';
|
|
||||||
print '<td align="left">';
|
|
||||||
if ($nbofsubdir && $nboffilesinsubdir) print '<font color="#AAAAAA">+'.$nboffilesinsubdir.'</font> ';
|
|
||||||
print '</td>';
|
|
||||||
|
|
||||||
// Info
|
|
||||||
print '<td align="center">';
|
|
||||||
$userstatic->id=$val['fk_user_c'];
|
|
||||||
$userstatic->lastname=$val['login_c'];
|
|
||||||
$htmltooltip='<b>'.$langs->trans("ECMSection").'</b>: '.$val['label'].'<br>';
|
|
||||||
$htmltooltip='<b>'.$langs->trans("Type").'</b>: '.$langs->trans("ECMSectionManual").'<br>';
|
|
||||||
$htmltooltip.='<b>'.$langs->trans("ECMCreationUser").'</b>: '.$userstatic->getNomUrl(1, '', false, 1).'<br>';
|
|
||||||
$htmltooltip.='<b>'.$langs->trans("ECMCreationDate").'</b>: '.dol_print_date($val['date_c'],"dayhour").'<br>';
|
|
||||||
$htmltooltip.='<b>'.$langs->trans("Description").'</b>: '.$val['description'].'<br>';
|
|
||||||
$htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInDir").'</b>: '.$val['cachenbofdoc'].'<br>';
|
|
||||||
if ($nbofsubdir) $htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInSubDir").'</b>: '.$nboffilesinsubdir;
|
|
||||||
else $htmltooltip.='<b>'.$langs->trans("ECMNbOfSubDir").'</b>: '.$nbofsubdir.'<br>';
|
|
||||||
print $form->textwithpicto('', $htmltooltip, 1, 'info');
|
|
||||||
print "</td>";
|
|
||||||
|
|
||||||
print '</tr></table>';
|
|
||||||
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
print "</li>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$oldvallevel=$val['level'];
|
|
||||||
$nbofentries++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If nothing to show
|
|
||||||
if ($nbofentries == 0)
|
|
||||||
{
|
|
||||||
print '<li class="directory collapsed">';
|
|
||||||
print '<div class="ecmjqft">';
|
|
||||||
print $langs->trans("ECMNoDirectoryYet");
|
|
||||||
print '</div>';
|
|
||||||
print "</li>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
print '</ul>';
|
|
||||||
print '</div>';
|
print '</div>';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,14 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/treeview.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php';
|
||||||
|
|
||||||
// Load traductions files
|
// Load traductions files
|
||||||
$langs->load("ecm");
|
$langs->loadLangs(array("ecm","companies","other","users","orders","propal","bills","contracts"));
|
||||||
$langs->load("companies");
|
|
||||||
$langs->load("other");
|
|
||||||
$langs->load("users");
|
|
||||||
$langs->load("orders");
|
|
||||||
$langs->load("propal");
|
|
||||||
$langs->load("bills");
|
|
||||||
$langs->load("contracts");
|
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if ($user->societe_id) $socid=$user->societe_id;
|
if ($user->societe_id) $socid=$user->societe_id;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ $(document).ready(function() {
|
|||||||
|
|
||||||
$('#filetree').fileTree({
|
$('#filetree').fileTree({
|
||||||
root: '<?php print dol_escape_js($openeddir); ?>',
|
root: '<?php print dol_escape_js($openeddir); ?>',
|
||||||
// Ajax called if we click to expand a dir (not a file). Parameter of dir is provided as a POST parameter.
|
// Ajax called if we click to expand a dir (not a file). Parameter 'dir' is provided as a POST parameter by fileTree code.
|
||||||
script: '<?php echo DOL_URL_ROOT.'/core/ajax/ajaxdirtree.php?modulepart='.$module.'&openeddir='.urlencode($openeddir); ?>',
|
script: '<?php echo DOL_URL_ROOT.'/core/ajax/ajaxdirtree.php?modulepart='.$module.'&openeddir='.urlencode($openeddir); ?>',
|
||||||
folderEvent: 'click', // 'dblclick'
|
folderEvent: 'click', // 'dblclick'
|
||||||
multiFolder: false },
|
multiFolder: false },
|
||||||
|
|||||||
Reference in New Issue
Block a user