Skip to content

Commit

Permalink
Prepare code to allow usage of ajax in ecm module
Browse files Browse the repository at this point in the history
  • Loading branch information
eldy committed Mar 21, 2012
1 parent ee1c507 commit f37e395
Show file tree
Hide file tree
Showing 8 changed files with 414 additions and 209 deletions.
3 changes: 1 addition & 2 deletions htdocs/categories/index.php
Expand Up @@ -236,8 +236,7 @@
$resarray=tree_showpad($fulltree,$key);
$a=$resarray[0];
$nbofsubdir=$resarray[1];
$c=$resarray[2];
$nboffilesinsubdir=$resarray[3];
$nboffilesinsubdir=$resarray[2];
print '</td>';

// Show picto
Expand Down
217 changes: 217 additions & 0 deletions htdocs/core/ajax/ajaxfiletree.php
@@ -0,0 +1,217 @@
<?php
/* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

/**
* \file htdocs/core/ajax/ajaxFileTree.php
* \ingroup ecm
* \brief This script returns content of a directory for filetree
* \version $Id: ajaxFileTree.php,v 1.8 2011/07/06 17:03:41 eldy Exp $
*/


// This script is called with a POST method.
// Directory to scan (full path) is inside POST['dir'].

if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1); // Disables token renewal
//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1');
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1');
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1');
if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');

// C'est un wrapper, donc header vierge
function llxHeader() { }

$res=0;
$res=@include("../../main.inc.php");
include_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.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');
$modulepart= GETPOST('modulepart');
$selecteddir = urldecode(GETPOST('dir')); // relative patch. We must keep the urldecode here because para comes from jqueyrFileTree that url encode it.
if ($selecteddir != '/') $selecteddir = preg_replace('/\/$/','',$selecteddir); // We removed last '/' except if it is '/'

$langs->load("ecm");

// Define selecteddir (fullpath).
if ($modulepart == 'ecm') $fullpathselecteddir=$conf->ecm->dir_output.'/'.($selecteddir != '/' ? $selecteddir : '');


// Security:
// On interdit les remontees de repertoire ainsi que les pipe dans
// les noms de fichiers.
if (preg_match('/\.\./',$fullpathselecteddir) || preg_match('/[<>|]/',$fullpathselecteddir))
{
dol_syslog("Refused to deliver file ".$original_file);
// Do no show plain path in shown error message
dol_print_error(0,$langs->trans("ErrorFileNameInvalid",GETPOST("file")));
exit;
}

// Check permissions
if ($modulepart == 'ecm')
{
if (! $user->rights->ecm->read) accessforbidden();
}



/*
* View
*/
$userstatic=new User($db);
$form=new Form($db);
$ecmdirstatic = new EcmDirectory($db);

// Load full tree. We will use it to define nbofsubdir and nboffilesinsubdir
if (empty($sqltree)) $sqltree=$ecmdirstatic->get_full_arbo(0);

// Try to find key into $sqltree
$current_ecmdir_id=-1;
foreach($sqltree as $keycursor => $val)
{
//print $val['fullrelativename']." == ".$selecteddir;
if ($val['fullrelativename'] == $selecteddir)
{
$current_ecmdir_id = $keycursor;
}
}

if( file_exists($fullpathselecteddir) )
{
$files = @scandir($fullpathselecteddir);
if ($files)
{
natcasesort($files);
if( count($files) > 2 ) /* The 2 accounts for . and .. */
{
echo "<ul class=\"jqueryFileTree\" style=\"display: none;\">\n";

// All dirs
foreach( $files as $file ) // $file can be '.', '..', or 'My dir'
{
$nbofsubdir=0;
$nboffilesinsubdir=0;

// Try to find key into $sqltree
$ecmdir_id=-1;
foreach($sqltree as $ecmdir_idcursor => $val)
{
//print "-- ".$val['fullrelativename']." vs ".(($selecteddir != '/'?$selecteddir.'/':'').$file).'<br>';
if ($val['fullrelativename'] == (($selecteddir != '/'?$selecteddir.'/':'').$file))
{
$ecmdir_id = $ecmdir_idcursor;
$resarray=tree_showpad($sqltree,$ecmdir_id,1);
$a=$resarray[0];
$nbofsubdir=$resarray[1];
$nboffilesinsubdir=$resarray[2];
}
}

//if (file_exists($fullpathselecteddir . $file) && $file != '.' && $file != '..' && is_dir($fullpathselecteddir . $file))
if ($file != '.' && $file != '..' && ($ecmdir_id >= 0 || dol_is_dir($fullpathselecteddir . $file)))
{
print '<li class="directory collapsed">';

print "<a class=\"fmdirlia jqft\" href=\"#\" rel=\"" . dol_escape_htmltag($file . '/') . "\"";
print " onClick=\"loadandshowpreview('".dol_escape_js($file)."')\">";
print dol_escape_htmltag($file);
print "</a>";

print '<div style="float: right;">';

print '<table class="nobordernopadding"><tr>';

/*print '<td align="left">';
print dol_escape_htmltag($file);
print '</td>';*/

// Nb of docs
print '<td align="right">';
print $val['cachenbofdoc'];
print '</td>';
print '<td align="left">';
if ($nbofsubdir && $nboffilesinsubdir) print '<font color="#AAAAAA">+'.$nboffilesinsubdir.'</font> ';
print '</td>';

// Edit link
print '<td align="right" width="18"><a href="'.DOL_URL_ROOT.'/ecm/docmine.php?section='.$val['id'].'">'.img_view().'</a></td>';

// Add link
//print '<td align="right"><a href="'.DOL_URL_ROOT.'/ecm/docdir.php?action=create&amp;catParent='.$val['id'].'">'.img_edit_add().'</a></td>';
//print '<td align="right" width="14">&nbsp;</td>';

// Info
print '<td align="right" width="18">';
$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).'<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,0);
print "</td>";

print "</tr></table>\n";
print '</div>';

print "</li>\n";
}
}

// All files
/*
foreach( $files as $file )
{
if( file_exists($fullpathselecteddir . $file) && $file != '.' && $file != '..' && !is_dir($fullpathselecteddir . $file) )
{
$ext = preg_replace('/^.*\./', '', $file);
print "<li class=\"file ext_".$ext."\">";
print "<a class=\"fmfilelia jqft\" href=\"#\" rel=\"" . dol_escape_htmltag($selecteddir . $file) . "\">" . dol_escape_htmltag($file) . "</a>";
print "</li>\n";
}
}
*/

// Enable tooltips
print '<script type="text/javascript">';
print 'jQuery(".classfortooltip").tipTip({ maxWidth: "600px", edgeOffset: 10, delay: 50, fadeIn: 50, fadeOut: 50});';
print 'jQuery(".fmdirlia").click(function(e) { jQuery("#userfile_section").val(jQuery(this).attr(\'rel\')); });';

print '</script>';

echo "</ul>\n";

}
}
else print "PermissionDenied";
}

// This ajax service is called only when a directory $selecteddir is opened but not closed.
//print '<script language="javascript">';
//print "loadandshowpreview('".dol_escape_js($selecteddir)."');";
//print '</script>';

if (is_object($db)) $db->close();
?>
12 changes: 5 additions & 7 deletions htdocs/ecm/docmine.php
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2008-2010 Laurent Destailleur <eldy@users.sourceforge.net>
/* Copyright (C) 2008-2012 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -74,11 +74,9 @@



/*******************************************************************
* ACTIONS
*
* Put here all code to do according to value of "action" parameter
********************************************************************/
/*
* Actions
*/

// Upload file
if (GETPOST("sendit") && ! empty($conf->global->MAIN_UPLOAD_DOC))
Expand Down Expand Up @@ -156,7 +154,7 @@
$olddir=$conf->ecm->dir_output.'/'.$olddir;

// Fetch was already done
$ecmdir->label = GETPOST("label");
$ecmdir->label = dol_sanitizeFileName(GETPOST("label"));
$ecmdir->description = GETPOST("description");
$result=$ecmdir->update($user);
if ($result > 0)
Expand Down
22 changes: 11 additions & 11 deletions htdocs/ecm/index.php
Expand Up @@ -582,10 +582,10 @@

if (! empty($conf->global->MAIN_ECM_TRY_JS))
{
print '<tr><td>';
print '<tr><td colspan="6" style="padding-left: 20px">';

// Show filemanager tree
print '<div id="filetree" class="filetree">';
print '<div id="filetree" class="ecmfiletree">';
print '</div>';

print '</td></tr>';
Expand All @@ -599,6 +599,7 @@ function loadandshowpreview(filedirname)
{
//alert('filename='+filename);
//jQuery('#fileview').empty();
return;

url='<?php echo dol_buildpath('/core/ajax/ajaxshowpreview.php',1); ?>?action=preview&rootpath=<?php echo $filemanagerroots->id ?>&modulepart=filemanager&type=auto&file='+urlencode(filedirname);

Expand All @@ -622,12 +623,12 @@ function loadandshowpreview(filedirname)

jQuery(document).ready( function() {
jQuery('#filetree').fileTree({ root: '<?php print dol_escape_js($openeddir); ?>',
script: '<?php echo DOL_URL_ROOT.'/core/ajax/ajaxfiletree.php?modulepart=ecm&openeddir='.urlencode($openeddir); ?>',
folderEvent: 'click',
multiFolder: false },
script: '<?php echo DOL_URL_ROOT.'/core/ajax/ajaxfiletree.php?modulepart=ecm&openeddir='.urlencode($openeddir); ?>',
folderEvent: 'click',
multiFolder: false },
function(file) {
jQuery("#mesg").hide();
loadandshowpreview(file);
jQuery("#mesg").hide();
loadandshowpreview(file);
}
);
});
Expand Down Expand Up @@ -737,8 +738,7 @@ function(file) {
$resarray=tree_showpad($sqltree,$key);
$a=$resarray[0];
$nbofsubdir=$resarray[1];
$c=$resarray[2];
$nboffilesinsubdir=$resarray[3];
$nboffilesinsubdir=$resarray[2];
print '</td>';

// Show picto
Expand Down Expand Up @@ -963,9 +963,9 @@ function(file) {


// To attach new file
if (! empty($section))
if (! empty($conf->global->MAIN_ECM_TRY_JS) || ! empty($section))
{
$formfile->form_attach_new_file(DOL_URL_ROOT.'/ecm/index.php', 'none', 0, $section,$user->rights->ecm->upload, 48);
$formfile->form_attach_new_file(DOL_URL_ROOT.'/ecm/index.php', 'none', 0, $section, $user->rights->ecm->upload, 48);
}
else print '&nbsp;';

Expand Down
40 changes: 0 additions & 40 deletions htdocs/theme/auguria/style.css.php
Expand Up @@ -1618,46 +1618,6 @@
.cal_event a:hover { color: #111111; font-size: 11px; font-weight: normal !important; }



/* ============================================================================== */
/* Afficher/cacher */
/* ============================================================================== */

#evolForm input.error {
font-weight: bold;
border: solid 1px #FF0000;
padding: 1px 1px 1px 1px;
margin: 1px 1px 1px 1px;
}

#evolForm input.focuserr {
font-weight: bold;
background: #FAF8E8;
color: black;
border: solid 1px #FF0000;
padding: 1px 1px 1px 1px;
margin: 1px 1px 1px 1px;
}


#evolForm input.focus { /*** Mise en avant des champs en cours d'utilisation ***/
background: #FAF8E8;
color: black;
border: solid 1px #000000;
padding: 1px 1px 1px 1px;
margin: 1px 1px 1px 1px;
}

#evolForm input.normal { /*** Retour a l'etat normal apres l'utilisation ***/
background: white;
color: black;
border: solid 1px white;
padding: 1px 1px 1px 1px;
margin: 1px 1px 1px 1px;
}



/* ============================================================================== */
/* Ajax - Liste deroulante de l'autocompletion */
/* ============================================================================== */
Expand Down

0 comments on commit f37e395

Please sign in to comment.