diff --git a/htdocs/categories/index.php b/htdocs/categories/index.php index de8d727c657..4da7f4e3f6b 100644 --- a/htdocs/categories/index.php +++ b/htdocs/categories/index.php @@ -236,8 +236,7 @@ foreach($fulltree as $key => $val) $resarray=tree_showpad($fulltree,$key); $a=$resarray[0]; $nbofsubdir=$resarray[1]; - $c=$resarray[2]; - $nboffilesinsubdir=$resarray[3]; + $nboffilesinsubdir=$resarray[2]; print ''; // Show picto diff --git a/htdocs/core/ajax/ajaxfiletree.php b/htdocs/core/ajax/ajaxfiletree.php new file mode 100644 index 00000000000..c29408dcd08 --- /dev/null +++ b/htdocs/core/ajax/ajaxfiletree.php @@ -0,0 +1,217 @@ + + * + * 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 "\n"; + + } + } + else print "PermissionDenied"; +} + +// This ajax service is called only when a directory $selecteddir is opened but not closed. +//print ''; + +if (is_object($db)) $db->close(); +?> \ No newline at end of file diff --git a/htdocs/ecm/docmine.php b/htdocs/ecm/docmine.php index 6254e3ad147..0a09d83a5fb 100644 --- a/htdocs/ecm/docmine.php +++ b/htdocs/ecm/docmine.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2008-2012 Laurent Destailleur * * 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 @@ -74,11 +74,9 @@ $upload_dir = $conf->ecm->dir_output.'/'.$relativepath; -/******************************************************************* -* 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)) @@ -156,7 +154,7 @@ if (GETPOST('action') == 'update' && ! GETPOST('cancel')) $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) diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php index 4258632f8c2..0b552c72162 100644 --- a/htdocs/ecm/index.php +++ b/htdocs/ecm/index.php @@ -582,10 +582,10 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti if (! empty($conf->global->MAIN_ECM_TRY_JS)) { - print ''; + print ''; // Show filemanager tree - print '
'; + print '
'; print '
'; print ''; @@ -599,6 +599,7 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti { //alert('filename='+filename); //jQuery('#fileview').empty(); + return; url='?action=preview&rootpath=id ?>&modulepart=filemanager&type=auto&file='+urlencode(filedirname); @@ -622,12 +623,12 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti jQuery(document).ready( function() { jQuery('#filetree').fileTree({ root: '', - script: '', - folderEvent: 'click', - multiFolder: false }, + script: '', + folderEvent: 'click', + multiFolder: false }, function(file) { - jQuery("#mesg").hide(); - loadandshowpreview(file); + jQuery("#mesg").hide(); + loadandshowpreview(file); } ); }); @@ -737,8 +738,7 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti $resarray=tree_showpad($sqltree,$key); $a=$resarray[0]; $nbofsubdir=$resarray[1]; - $c=$resarray[2]; - $nboffilesinsubdir=$resarray[3]; + $nboffilesinsubdir=$resarray[2]; print ''; // Show picto @@ -963,9 +963,9 @@ else // 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 ' '; diff --git a/htdocs/theme/auguria/style.css.php b/htdocs/theme/auguria/style.css.php index d3d7578d7c0..83436ab5300 100644 --- a/htdocs/theme/auguria/style.css.php +++ b/htdocs/theme/auguria/style.css.php @@ -1618,46 +1618,6 @@ table.cal_event td { border: 0px; padding-: 0px; padding-: 0px; padding-: 0px; padding-) 15 height: browser->phone)?'54':'21'); ?>px !important; } + /* ECM */ #containerlayout .ecm-layout-pane { /* all 'panes' */ @@ -1666,6 +1667,31 @@ div.titre { #divsubscribe { width: 700px; } #tablesubscribe { width: 100%; } +div.table-border { + display:table; + width: 100%; + border-collapse: collapse; + border: 1px solid #9CACBB; +} +div.table-border-row { + display:table-row; +} +div.table-key-border-col { + display:table-cell; + width: 25%; + vertical-align:top; + padding: 1px 2px 1px 1px; + border: 1px solid #9CACBB; + border-collapse: collapse; +} +div.table-val-border-col { + display:table-cell; + width:auto; + padding: 1px 2px 1px 1px; + border: 1px solid #9CACBB; + border-collapse: collapse; +} + /* ============================================================================== */ /* Formulaire confirmation (When Ajax JQuery is used) */ @@ -1793,14 +1819,14 @@ table.dp { /* Bouton X fermer */ .dpInvisibleButtons { -border-style:none; -background-color:transparent; -padding:0px; -font-size:9px; -border-width:0px; -color:#0B63A2; -vertical-align:middle; -cursor: pointer; + border-style:none; + background-color:transparent; + padding:0px; + font-size:9px; + border-width:0px; + color:#0B63A2; + vertical-align:middle; + cursor: pointer; } @@ -1842,45 +1868,6 @@ table.cal_event td { border: 0px; padding-: 0px; padding-: 0px; padding-; + border: solid 1px #DDDDDD; +} + +ui-layout-north { + +} + +ul.jqueryFileTree { + font-family: Verdana, sans-serif; + font-size: 11px; + line-height: 18px; + padding: 0px; + margin: 0px; + font-weight: normal; +} + +ul.jqueryFileTree li { + list-style: none; + padding: 0px; + padding-left: 20px; + margin: 0px; + white-space: nowrap; +} + +ul.jqueryFileTree a { + display: float; + padding: 0px 0px; + font-weight:normal; +} +ul.jqueryFileTree a:active { + font-weight: bold !important; +} + +ul.jqueryFileTree a:hover { + text-decoration: underline; +} + +/* Core Styles */ +.jqueryFileTree LI.directory { font-weight:normal; background: url() left top no-repeat; } +.jqueryFileTree LI.expanded { font-weight:normal; background: url() left top no-repeat; } +.jqueryFileTree LI.file { font-weight:normal; background: url() left top no-repeat; } +.jqueryFileTree LI.wait { font-weight:normal; background: url() left top no-repeat; } +/* File Extensions*/ +.jqueryFileTree LI.ext_3gp { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_afp { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_afpa { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_asp { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_aspx { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_avi { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_bat { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_bmp { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_c { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_cfm { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_cgi { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_com { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_cpp { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_css { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_doc { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_exe { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_gif { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_fla { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_h { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_htm { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_html { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_jar { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_jpg { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_jpeg { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_js { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_lasso { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_log { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_m4p { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_mov { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_mp3 { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_mp4 { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_mpg { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_mpeg { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_ogg { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_ogv { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_pcx { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_pdf { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_php { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_png { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_ppt { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_psd { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_pl { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_py { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_rb { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_rbx { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_rhtml { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_rpm { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_ruby { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_sql { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_swf { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_tif { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_tiff { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_txt { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_vb { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_wav { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_webm { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_wmv { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_xls { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_xml { background: url() left top no-repeat; } +.jqueryFileTree LI.ext_zip { background: url() left top no-repeat; } + +/* Right panel */ + +.fmvalue { + color: #001166; +} + + close();