2
0
forked from Wavyzz/dolibarr

Remove BlockUI js plugin. Replaced with few js/css lines.

This commit is contained in:
ldestailleur
2025-05-06 19:15:13 +02:00
parent 52acd2cfac
commit 095905670a
25 changed files with 149 additions and 813 deletions

View File

@@ -59,7 +59,6 @@ CKEditor 4.22.1 LGPL-2.1+ Yes
jQuery 3.6.4 MIT License Yes JS library jQuery 3.6.4 MIT License Yes JS library
jQuery UI 1.13.2 GPL and MIT License Yes JS library plugin UI jQuery UI 1.13.2 GPL and MIT License Yes JS library plugin UI
jQuery select2 4.0.13 GPL and Apache License Yes JS library plugin for sexier multiselect. Warning: 4.0.6+ create troubles without patching css jQuery select2 4.0.13 GPL and Apache License Yes JS library plugin for sexier multiselect. Warning: 4.0.6+ create troubles without patching css
jQuery blockUI 2.70.0 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups)
jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors
jQuery JCrop 0.9.8 GPL and MIT License Yes JS library plugin Crop (to crop images) jQuery JCrop 0.9.8 GPL and MIT License Yes JS library plugin Crop (to crop images)
jQuery Jeditable 1.7.1 GPL and MIT License Yes JS library plugin jeditable (to edit in place) jQuery Jeditable 1.7.1 GPL and MIT License Yes JS library plugin jeditable (to edit in place)

View File

@@ -51,6 +51,8 @@ if (!defined('NOREQUIREAJAX')) {
* *
* @var string $module * @var string $module
* @var string $mode * @var string $mode
* @var string $websitekey
* @var int $pageid
*/ */
if (!isset($mode) || $mode != 'noajax') { // For ajax call if (!isset($mode) || $mode != 'noajax') { // For ajax call
@@ -198,7 +200,7 @@ if (!dol_is_dir($upload_dir)) {
exit;*/ exit;*/
} }
print '<!-- ajaxdirpreview type='.$type.' module='.$module.' modulepart='.$modulepart.'-->'."\n"; print '<!-- ajaxdirpreview mode='.$mode.' type='.$type.' module='.$module.' modulepart='.$modulepart.'-->'."\n";
//print '<!-- Page called with mode='.dol_escape_htmltag(isset($mode)?$mode:'').' type='.dol_escape_htmltag($type).' module='.dol_escape_htmltag($module).' url='.dol_escape_htmltag($url).' '.dol_escape_htmltag($_SERVER["PHP_SELF"]).'?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]).' -->'."\n"; //print '<!-- Page called with mode='.dol_escape_htmltag(isset($mode)?$mode:'').' type='.dol_escape_htmltag($type).' module='.dol_escape_htmltag($module).' url='.dol_escape_htmltag($url).' '.dol_escape_htmltag($_SERVER["PHP_SELF"]).'?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]).' -->'."\n";
$param = ($sortfield ? '&sortfield='.urlencode($sortfield) : '').($sortorder ? '&sortorder='.urlencode($sortorder) : ''); $param = ($sortfield ? '&sortfield='.urlencode($sortfield) : '').($sortorder ? '&sortorder='.urlencode($sortorder) : '');
@@ -256,7 +258,7 @@ if ($type == 'directory') {
$upload_dir = $conf->societe->dir_output; $upload_dir = $conf->societe->dir_output;
$excludefiles[] = '^contact$'; // The subdir 'contact' contains files of contacts. $excludefiles[] = '^contact$'; // The subdir 'contact' contains files of contacts.
} elseif ($module == 'invoice') { } elseif ($module == 'invoice') {
$upload_dir = $conf->facture->dir_output; $upload_dir = $conf->invoice->dir_output;
} elseif ($module == 'invoice_supplier') { } elseif ($module == 'invoice_supplier') {
$upload_dir = $conf->fournisseur->facture->dir_output; $upload_dir = $conf->fournisseur->facture->dir_output;
} elseif ($module == 'propal') { } elseif ($module == 'propal') {
@@ -264,11 +266,11 @@ if ($type == 'directory') {
} elseif ($module == 'supplier_proposal') { } elseif ($module == 'supplier_proposal') {
$upload_dir = $conf->supplier_proposal->dir_output; $upload_dir = $conf->supplier_proposal->dir_output;
} elseif ($module == 'order') { } elseif ($module == 'order') {
$upload_dir = $conf->commande->dir_output; $upload_dir = $conf->order->dir_output;
} elseif ($module == 'order_supplier') { } elseif ($module == 'order_supplier') {
$upload_dir = $conf->fournisseur->commande->dir_output; $upload_dir = $conf->fournisseur->commande->dir_output;
} elseif ($module == 'contract') { } elseif ($module == 'contract') {
$upload_dir = $conf->contrat->dir_output; $upload_dir = $conf->contract->dir_output;
} elseif ($module == 'product') { } elseif ($module == 'product') {
$upload_dir = $conf->product->dir_output; $upload_dir = $conf->product->dir_output;
} elseif ($module == 'tax') { } elseif ($module == 'tax') {
@@ -339,6 +341,7 @@ if ($type == 'directory') {
$perm = $user->hasRight('ecm', 'upload'); $perm = $user->hasRight('ecm', 'upload');
// Print list of files
$formfile->list_of_autoecmfiles($upload_dir, $filearray, $module, $param, 1, '', $perm, 1, $textifempty, $maxlengthname, $url, 1); $formfile->list_of_autoecmfiles($upload_dir, $filearray, $module, $param, 1, '', $perm, 1, $textifempty, $maxlengthname, $url, 1);
} else { } else {
// Manual list // Manual list
@@ -432,8 +435,9 @@ if ($type == 'directory') {
// When we show list of files for ECM files, $filearray contains file list, and directory is defined with modulepart + section into $param // When we show list of files for ECM files, $filearray contains file list, and directory is defined with modulepart + section into $param
// When we show list of files for a directory, $filearray ciontains file list, and directory is defined with modulepart + $relativepath // When we show list of files for a directory, $filearray ciontains file list, and directory is defined with modulepart + $relativepath
// var_dump("section=".$section." title=".$title." modulepart=".$modulepart." useinecm=".$useinecm." perm(permtoeditline)=".$perm." relativepath=".$relativepath." param=".$param." url=".$url); //var_dump("section=".$section." title=".$title." modulepart=".$modulepart." useinecm=".$useinecm." perm(permtoeditline)=".$perm." relativepath=".$relativepath." upload_dir=".$upload_dir." param=".$param." url=".$url);
$formfile->list_of_documents($filearray, null, $modulepart, $param, 1, $relativepath, $perm, $useinecm, $textifempty, $maxlengthname, $title, $url, 0, $perm, '', $sortfield, $sortorder);
$formfile->list_of_documents($filearray, null, $modulepart, $param, 1, $relativepath, $perm, $useinecm, $textifempty, $maxlengthname, $title, $url, 0, $perm, $upload_dir, $sortfield, $sortorder);
} }
} }

View File

@@ -1336,6 +1336,7 @@ class FormFile
$relativedir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $upload_dir); $relativedir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $upload_dir);
$relativedir = preg_replace('/^[\\/]/', '', $relativedir); $relativedir = preg_replace('/^[\\/]/', '', $relativedir);
} }
// For example here $upload_dir = '/pathtodocuments/commande/SO2001-123/' // For example here $upload_dir = '/pathtodocuments/commande/SO2001-123/'
// For example here $upload_dir = '/pathtodocuments/tax/vat/1' // For example here $upload_dir = '/pathtodocuments/tax/vat/1'
// For example here $upload_dir = '/home/ldestailleur/git/dolibarr_dev/documents/fournisseur/facture/6/1/SI2210-0013' and relativedir='fournisseur/facture/6/1/SI2210-0013' // For example here $upload_dir = '/home/ldestailleur/git/dolibarr_dev/documents/fournisseur/facture/6/1/SI2210-0013' and relativedir='fournisseur/facture/6/1/SI2210-0013'
@@ -1438,7 +1439,7 @@ class FormFile
print "</tr>\n"; print "</tr>\n";
} }
// Get list of files stored into database for same relative directory // Get list of files stored into database for the same relative directory
if ($relativedir) { if ($relativedir) {
completeFileArrayWithDatabaseInfo($filearray, $relativedir, $object); completeFileArrayWithDatabaseInfo($filearray, $relativedir, $object);
'@phan-var-force array<array{name:string,path:string,level1name:string,relativename:string,fullname:string,date:string,size:int,perm:int,type:string,position_name:string,cover:string,keywords:string,acl:string,rowid:int,label:string,share:string}> $filearray'; '@phan-var-force array<array{name:string,path:string,level1name:string,relativename:string,fullname:string,date:string,size:int,perm:int,type:string,position_name:string,cover:string,keywords:string,acl:string,rowid:int,label:string,share:string}> $filearray';
@@ -1450,18 +1451,22 @@ class FormFile
} }
print '<tr class="liste_titre nodrag nodrop">'; print '<tr class="liste_titre nodrag nodrop">';
//print $url.' sortfield='.$sortfield.' sortorder='.$sortorder; // Name
print_liste_field_titre('Documents2', $url, "name", "", $param, '', $sortfield, $sortorder, 'left '); print_liste_field_titre('Documents2', $url, "name", "", $param, '', $sortfield, $sortorder, 'left ');
// Size
print_liste_field_titre('Size', $url, "size", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre('Size', $url, "size", "", $param, '', $sortfield, $sortorder, 'right ');
// Date
print_liste_field_titre('Date', $url, "date", "", $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre('Date', $url, "date", "", $param, '', $sortfield, $sortorder, 'center ');
// Preview
if (empty($useinecm) || $useinecm == 4 || $useinecm == 5 || $useinecm == 6) { if (empty($useinecm) || $useinecm == 4 || $useinecm == 5 || $useinecm == 6) {
print_liste_field_titre('', $url, "", "", $param, '', $sortfield, $sortorder, 'center '); // Preview print_liste_field_titre('', $url, "", "", $param, '', $sortfield, $sortorder, 'center '); // Preview
} }
// Shared or not - Hash of file // Shared or not - Hash of file
print_liste_field_titre(''); print_liste_field_titre('Shared');
// Action button // Action button
print_liste_field_titre(''); print_liste_field_titre('');
if (empty($disablemove) && count($filearray) > 1) { if (empty($disablemove) && count($filearray) > 1) {
// Move
print_liste_field_titre(''); print_liste_field_titre('');
} }
print "</tr>\n"; print "</tr>\n";
@@ -1645,8 +1650,9 @@ class FormFile
$fulllink = $urlwithroot.'/document.php'.($paramlink ? '?'.$paramlink : ''); $fulllink = $urlwithroot.'/document.php'.($paramlink ? '?'.$paramlink : '');
print '<!-- shared link -->';
print '<a href="'.$fulllink.'" target="_blank" rel="noopener">'.img_picto($langs->trans("FileSharedViaALink"), 'globe').'</a> '; print '<a href="'.$fulllink.'" target="_blank" rel="noopener">'.img_picto($langs->trans("FileSharedViaALink"), 'globe').'</a> ';
print '<input type="text" class="centpercentminusx minwidth200imp nopadding small" id="downloadlink'.$filearray[$key]['rowid'].'" name="downloadexternallink" title="'.dol_escape_htmltag($langs->trans("FileSharedViaALink")).'" value="'.dol_escape_htmltag($fulllink).'">'; print '<input type="text" class="centpercentminusx minwidth50imp nopadding small" id="downloadlink'.$filearray[$key]['rowid'].'" name="downloadexternallink" title="'.dol_escape_htmltag($langs->trans("FileSharedViaALink")).'" value="'.dol_escape_htmltag($fulllink).'">';
} else { } else {
//print '<span class="opacitymedium">'.$langs->trans("FileNotShared").'</span>'; //print '<span class="opacitymedium">'.$langs->trans("FileNotShared").'</span>';
} }
@@ -1846,11 +1852,15 @@ class FormFile
if (!empty($addfilterfields)) { if (!empty($addfilterfields)) {
print '<tr class="liste_titre nodrag nodrop">'; print '<tr class="liste_titre nodrag nodrop">';
// Ref
print '<td class="liste_titre"></td>'; print '<td class="liste_titre"></td>';
// Name
print '<td class="liste_titre"><input type="text" class="maxwidth100onsmartphone" name="search_doc_ref" value="'.dol_escape_htmltag($search_doc_ref).'"></td>'; print '<td class="liste_titre"><input type="text" class="maxwidth100onsmartphone" name="search_doc_ref" value="'.dol_escape_htmltag($search_doc_ref).'"></td>';
// Size
print '<td class="liste_titre"></td>'; print '<td class="liste_titre"></td>';
// Date
print '<td class="liste_titre"></td>'; print '<td class="liste_titre"></td>';
// Action column // Shared and action column
print '<td class="liste_titre right">'; print '<td class="liste_titre right">';
$searchpicto = $form->showFilterButtons(); $searchpicto = $form->showFilterButtons();
print $searchpicto; print $searchpicto;
@@ -2085,7 +2095,8 @@ class FormFile
print '<!-- Line list_of_autoecmfiles key='.$key.' -->'."\n"; print '<!-- Line list_of_autoecmfiles key='.$key.' -->'."\n";
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'; // Ref
print '<td class="tdoverflowmax150">';
if ($found > 0 && is_object($conf->cache['modulepartobject'][$modulepart.'_'.$id.'_'.$ref])) { if ($found > 0 && is_object($conf->cache['modulepartobject'][$modulepart.'_'.$id.'_'.$ref])) {
$tmpobject = $conf->cache['modulepartobject'][$modulepart.'_'.$id.'_'.$ref]; $tmpobject = $conf->cache['modulepartobject'][$modulepart.'_'.$id.'_'.$ref];
//if (! in_array($tmpobject->element, array('expensereport'))) { //if (! in_array($tmpobject->element, array('expensereport'))) {
@@ -2163,6 +2174,7 @@ class FormFile
$fulllink = $urlwithroot.'/document.php'.($paramlink ? '?'.$paramlink : ''); $fulllink = $urlwithroot.'/document.php'.($paramlink ? '?'.$paramlink : '');
print '<!-- shared link -->';
print img_picto($langs->trans("FileSharedViaALink"), 'globe').' '; print img_picto($langs->trans("FileSharedViaALink"), 'globe').' ';
print '<input type="text" class="quatrevingtpercent width100 nopadding nopadding small" id="downloadlink" name="downloadexternallink" value="'.dol_escape_htmltag($fulllink).'">'; print '<input type="text" class="quatrevingtpercent width100 nopadding nopadding small" id="downloadlink" name="downloadexternallink" value="'.dol_escape_htmltag($fulllink).'">';
} }

View File

@@ -1,105 +0,0 @@
// Copyright (C) 2012 Regis Houssin <regis.houssin@inodbox.com>
//
// 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 3 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, see <https://www.gnu.org/licenses/>.
// or see https://www.gnu.org/
//
//
// \file htdocs/core/js/blockUI.js
// \brief File that include javascript functions for blockUI default options
//
// Examples
$(document).ready(function() {
// override these in your code to change the default behavior and style
/*$.blockUI.events = {
// styles applied when using $.growlUI
dolEventValidCSS: {
width: '350px',
top: '10px',
left: '',
right: '10px',
border: 'none',
padding: '5px',
opacity: 0.8,
cursor: 'default',
color: '#fff',
backgroundColor: '#e3f0db',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
'border-radius': '10px'
},
// styles applied when using $.growlUI
dolEventErrorCSS: {
width: '350px',
top: '10px',
left: '',
right: '10px',
border: 'none',
padding: '5px',
opacity: 0.8,
cursor: 'default',
color: '#a72947',
backgroundColor: '#d79eac',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
'border-radius': '10px'
}
};*/
$.dolEventValid = function(title, message, timeout, onClose) {
var $m = $('<div class="dolEventValid"></div>');
if (title) $m.append('<h1>'+title+'</h1>');
if (message) $m.append('<h2>'+message+'</h2>');
if (timeout == undefined) timeout = 3000;
$.blockUI({
message: $m, fadeIn: 0, fadeOut: 0, centerY: false,
timeout: timeout, showOverlay: false,
onUnblock: onClose,
css: $.blockUI.events.dolEventValidCSS
});
};
$.dolEventError = function(title, message, timeout, onClose) {
var $m = $('<div class="dolEventError"></div>');
if (title) $m.append('<h1>'+title+'</h1>');
if (message) $m.append('<h2>'+message+'</h2>');
if (timeout == undefined) timeout = 0;
$.blockUI({
message: $m, fadeIn: 0, centerY: false,
timeout: timeout, showOverlay: false,
onUnblock: onClose,
css: $.blockUI.events.dolEventErrorCSS
});
$('.dolEventError').click($.unblockUI);
};
$.pleaseBePatient = function(message) {
$.blockUI({
message: message,
css: {
border: 'none',
padding: '15px',
background: '#000 url(' + indicatorBlockUI + ') no-repeat 10px center',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
'border-radius': '10px',
color: '#fff'
}
});
}
});

View File

@@ -148,6 +148,24 @@ if ($thousand == 'Space') {
?> ?>
// Javascript libraries for Dolibarr ERP CRM (https://www.dolibarr.org) // Javascript libraries for Dolibarr ERP CRM (https://www.dolibarr.org)
// To start/stop Block UI
function dolBlockUI(message = 'Loading...', indicatorUrl = '<?php echo DOL_URL_ROOT."/theme/".$conf->theme."/img/working.gif" ; ?>') {
const block = document.getElementById('dol-block-ui');
if (block != null) {
const msgDiv = block.querySelector('.message');
if (msgDiv != null) {
msgDiv.innerText = message;
msgDiv.style.backgroundImage = `url('${indicatorUrl}')`;
block.style.display = 'flex';
}
}
}
function dolUnblockUI() {
document.getElementById('dol-block-ui').style.display = 'none';
}
// For jQuery date picker // For jQuery date picker
var tradMonths = <?php echo json_encode($tradMonths) ?>; var tradMonths = <?php echo json_encode($tradMonths) ?>;
var tradMonthsShort = <?php echo json_encode($tradMonthsShort) ?>; var tradMonthsShort = <?php echo json_encode($tradMonthsShort) ?>;

View File

@@ -279,7 +279,7 @@ function dol_dir_list_in_database($path, $filter = "", $excludefilter = null, $s
$object = new stdClass(); $object = new stdClass();
} }
$sql = " SELECT rowid, label, entity, filename, filepath, fullpath_orig, keywords, cover, gen_or_uploaded, extraparams,"; $sql = "SELECT rowid, label, entity, filename, filepath, fullpath_orig, keywords, cover, gen_or_uploaded, extraparams,";
$sql .= " date_c, tms as date_m, fk_user_c, fk_user_m, acl, position, share"; $sql .= " date_c, tms as date_m, fk_user_c, fk_user_m, acl, position, share";
if ($mode) { if ($mode) {
$sql .= ", description"; $sql .= ", description";
@@ -374,7 +374,7 @@ function completeFileArrayWithDatabaseInfo(&$filearray, $relativedir, $object =
$object = new stdClass(); $object = new stdClass();
} }
$filearrayindatabase = dol_dir_list_in_database($relativedir, '', null, 'name', SORT_ASC, 0, '', $object); $filearrayindatabase = dol_dir_list_in_database(preg_replace('/[\\/]$/', '', $relativedir), '', null, 'name', SORT_ASC, 0, '', $object);
// TODO Remove this when PRODUCT_USE_OLD_PATH_FOR_PHOTO will be removed // TODO Remove this when PRODUCT_USE_OLD_PATH_FOR_PHOTO will be removed
global $modulepart; global $modulepart;

View File

@@ -10469,19 +10469,11 @@ function get_htmloutput_mesg($mesgstring = '', $mesgarray = [], $style = 'ok', $
if ($out) { if ($out) {
if (!empty($conf->use_javascript_ajax) && !getDolGlobalString('MAIN_DISABLE_JQUERY_JNOTIFY') && empty($keepembedded)) { if (!empty($conf->use_javascript_ajax) && !getDolGlobalString('MAIN_DISABLE_JQUERY_JNOTIFY') && empty($keepembedded)) {
$return = '<script nonce="'.getNonce().'"> $return = '<script nonce="'.getNonce().'">
$(document).ready(function() { $(document).ready(function() {
var block = '.(getDolGlobalString('MAIN_USE_JQUERY_BLOCKUI') ? "true" : "false").' /* jnotify(message, preset of message type, keepmessage) */
if (block) { $.jnotify("'.dol_escape_js($out).'", "'.($style == "ok" ? 3000 : $style).'", '.($style == "ok" ? "false" : "true").',{ remove: function (){} } );
$.dolEventValid("","'.dol_escape_js($out).'"); });
} else { </script>';
/* jnotify(message, preset of message type, keepmessage) */
$.jnotify("'.dol_escape_js($out).'",
"'.($style == "ok" ? 3000 : $style).'",
'.($style == "ok" ? "false" : "true").',
{ remove: function (){} } );
}
});
</script>';
} else { } else {
$return = $out; $return = $out;
} }

View File

@@ -50,6 +50,8 @@ $element = GETPOST('element', 'alpha');
$permissiontoread = $user->hasRight('ecm', 'read'); $permissiontoread = $user->hasRight('ecm', 'read');
$error = 0;
/* /*
* Actions * Actions
@@ -68,8 +70,6 @@ top_httphead();
// Load original field value // Load original field value
if (isset($action) && !empty($action)) { if (isset($action) && !empty($action)) {
$error = 0;
if ($action == 'build' && !empty($element) && $permissiontoread) { if ($action == 'build' && !empty($element) && $permissiontoread) {
require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php'; require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php';
@@ -82,11 +82,13 @@ if (isset($action) && !empty($action)) {
$diroutputslash = str_replace('\\', '/', $conf->$element->dir_output); $diroutputslash = str_replace('\\', '/', $conf->$element->dir_output);
$diroutputslash .= '/'; $diroutputslash .= '/';
// Scan directory tree on disk // Scan directory tree on disk to get list of all directories
$disktree = dol_dir_list($conf->$element->dir_output, 'directories', 1, '', array('^temp$'), '', 0, 0); $disktree = dol_dir_list($conf->$element->dir_output, 'directories', 1, '', array('^temp$'), '', 0, 0);
//dol_syslog("Found ".count($disktree)." directories on disk");
// Scan directory tree in database // Scan directory tree in database
$sqltree = $ecmdirstatic->get_full_arbo(0); $sqltree = $ecmdirstatic->get_full_arbo(0);
//dol_syslog("Found ".count($sqltree)." directories in database");
$adirwascreated = 0; $adirwascreated = 0;

View File

@@ -620,8 +620,8 @@ class EcmDirectory extends CommonObject
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/** /**
* Reconstruit l'arborescence des categories sous la forme d'un tableau à partir de la base de donnée * Rebuild the tree into an array from the database table llx_ecm_directories
* Renvoi un tableau de tableau('id','id_mere',...) trie selon arbre et avec: * Retruen an array('id','id_mere',...) sorted according to tree and with:
* id Id de la categorie * id Id de la categorie
* id_mere Id de la categorie mere * id_mere Id de la categorie mere
* id_children Tableau des id enfant * id_children Tableau des id enfant

View File

@@ -412,7 +412,7 @@ if ($module == 'ecm') {
if ($ecmdir->fk_user_c > 0) { if ($ecmdir->fk_user_c > 0) {
$userecm = new User($db); $userecm = new User($db);
$userecm->fetch($ecmdir->fk_user_c); $userecm->fetch($ecmdir->fk_user_c);
print $userecm->getNomUrl(1); print $userecm->getNomUrl(-1);
} }
print '</td></tr>'; print '</td></tr>';
} }
@@ -448,7 +448,7 @@ print $object->showOptionals($extrafields, ($action == 'edit' ? 'edit' : 'view')
print '</table>'; print '</table>';
if ($action == 'edit') { if ($action == 'edit') {
print $form->buttonsSaveCancel(); print '<br>'.$form->buttonsSaveCancel();
} }
print '</div>'; print '</div>';

View File

@@ -354,7 +354,7 @@ $rellink .= '&file='.urlencode($filepath);
$fulllink = $urlwithroot.$rellink; $fulllink = $urlwithroot.$rellink;
print img_picto('', 'globe').' '; print img_picto('', 'globe').' ';
if ($action != 'edit') { if ($action != 'edit') {
print '<input type="text" class="maxquatrevingtpercent widthcentpercentminusxx" id="downloadinternallink" name="downloadinternellink" value="'.dol_escape_htmltag($fulllink).'">'; print '<input type="text" class="maxquatrevingtpercent widthcentpercentminusxx small" id="downloadinternallink" name="downloadinternellink" value="'.dol_escape_htmltag($fulllink).'">';
} else { } else {
print $fulllink; print $fulllink;
} }
@@ -389,12 +389,12 @@ if (!empty($object->share)) {
print img_picto('', 'globe').' '; print img_picto('', 'globe').' ';
if ($action != 'edit') { if ($action != 'edit') {
print '<input type="text" class="quatrevingtpercent nopadding small" id="downloadlink" name="downloadexternallink" value="'.dol_escape_htmltag($fulllink).'">'; print '<input type="text" class="maxquatrevingtpercent widthcentpercentminusxx nopadding small" id="downloadlink" name="downloadexternallink" value="'.dol_escape_htmltag($fulllink).'">';
} else { } else {
print $fulllink; print $fulllink;
} }
if ($action != 'edit') { if ($action != 'edit') {
print ' <a href="'.$fulllink.'">'.$langs->trans("Download").'</a>'; // No target here print ' <a href="'.$fulllink.'">'.img_picto($langs->trans("Download"), 'download', 'class="opacitymedium paddingrightonly"').'</a>'; // No target here
} }
} else { } else {
print '<input type="checkbox" name="shareenabled"'.($object->share ? ' checked="checked"' : '').' /> '; print '<input type="checkbox" name="shareenabled"'.($object->share ? ' checked="checked"' : '').' /> ';

View File

@@ -329,20 +329,12 @@ if ($action == 'refreshmanual' && $permissiontoread) {
//print $_SESSION["dol_screenheight"]; //print $_SESSION["dol_screenheight"];
$maxheightwin = (isset($_SESSION["dol_screenheight"]) && $_SESSION["dol_screenheight"] > 466) ? ($_SESSION["dol_screenheight"] - 136) : 660; // Also into index_auto.php file $maxheightwin = (isset($_SESSION["dol_screenheight"]) && $_SESSION["dol_screenheight"] > 466) ? ($_SESSION["dol_screenheight"] - 136) : 660; // Also into index_auto.php file
$moreheadcss = ''; $morejs=array();
$moreheadjs = '';
//$morejs=array();
$morejs = array('includes/jquery/plugins/blockUI/jquery.blockUI.js', 'core/js/blockUI.js'); // Used by ecm/tpl/enabledfiletreeajax.tpl.pgp
if (!getDolGlobalString('MAIN_ECM_DISABLE_JS')) { if (!getDolGlobalString('MAIN_ECM_DISABLE_JS')) {
$morejs[] = "includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js"; $morejs[] = "includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js";
} }
$moreheadjs .= '<script type="text/javascript">'."\n"; llxHeader('', $langs->trans("ECMArea"), '', '', 0, 0, $morejs, '', '', 'mod-ecm page-index');
$moreheadjs .= 'var indicatorBlockUI = \''.DOL_URL_ROOT."/theme/".$conf->theme."/img/working.gif".'\';'."\n";
$moreheadjs .= '</script>'."\n";
llxHeader($moreheadcss.$moreheadjs, $langs->trans("ECMArea"), '', '', 0, 0, $morejs, '', '', 'mod-ecm page-index');
$head = ecm_prepare_dasboard_head(); $head = ecm_prepare_dasboard_head();

View File

@@ -301,16 +301,11 @@ $maxheightwin = (isset($_SESSION["dol_screenheight"]) && $_SESSION["dol_screenhe
$moreheadcss = ''; $moreheadcss = '';
$moreheadjs = ''; $moreheadjs = '';
//$morejs=array(); $morejs=array();
$morejs = array('includes/jquery/plugins/blockUI/jquery.blockUI.js', 'core/js/blockUI.js'); // Used by ecm/tpl/enabledfiletreeajax.tpl.pgp
if (!getDolGlobalString('MAIN_ECM_DISABLE_JS')) { if (!getDolGlobalString('MAIN_ECM_DISABLE_JS')) {
$morejs[] = "includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js"; $morejs[] = "includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js";
} }
$moreheadjs .= '<script type="text/javascript">'."\n";
$moreheadjs .= 'var indicatorBlockUI = \''.DOL_URL_ROOT."/theme/".$conf->theme."/img/working.gif".'\';'."\n";
$moreheadjs .= '</script>'."\n";
llxHeader($moreheadcss.$moreheadjs, $langs->trans("ECMArea"), '', '', 0, 0, $morejs, '', '', 'mod-ecm page-index_auto'); llxHeader($moreheadcss.$moreheadjs, $langs->trans("ECMArea"), '', '', 0, 0, $morejs, '', '', 'mod-ecm page-index_auto');

View File

@@ -300,16 +300,11 @@ $maxheightwin = (isset($_SESSION["dol_screenheight"]) && $_SESSION["dol_screenhe
$moreheadcss = ''; $moreheadcss = '';
$moreheadjs = ''; $moreheadjs = '';
//$morejs=array(); $morejs=array();
$morejs = array('includes/jquery/plugins/blockUI/jquery.blockUI.js', 'core/js/blockUI.js'); // Used by ecm/tpl/enabledfiletreeajax.tpl.pgp
if (!getDolGlobalString('MAIN_ECM_DISABLE_JS')) { if (!getDolGlobalString('MAIN_ECM_DISABLE_JS')) {
$morejs[] = "includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js"; $morejs[] = "includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js";
} }
$moreheadjs .= '<script type="text/javascript">'."\n";
$moreheadjs .= 'var indicatorBlockUI = \''.DOL_URL_ROOT."/theme/".$conf->theme."/img/working.gif".'\';'."\n";
$moreheadjs .= '</script>'."\n";
llxHeader($moreheadcss.$moreheadjs, $langs->trans("ECMArea"), '', '', 0, 0, $morejs, '', '', 'mod-ecm page-index_medias'); llxHeader($moreheadcss.$moreheadjs, $langs->trans("ECMArea"), '', '', 0, 0, $morejs, '', '', 'mod-ecm page-index_medias');
$head = ecm_prepare_dasboard_head(); $head = ecm_prepare_dasboard_head();

View File

@@ -81,15 +81,19 @@ $(document).ready(function() {
$('#refreshbutton').click( function() { $('#refreshbutton').click( function() {
console.log("Click on refreshbutton"); console.log("Click on refreshbutton");
$.pleaseBePatient("<?php echo $langs->trans('PleaseBePatient'); ?>");
dolBlockUI("<?php echo $langs->trans('PleaseBePatient'); ?>");
$.get("<?php echo DOL_URL_ROOT.'/ecm/ajax/ecmdatabase.php'; ?>", { $.get("<?php echo DOL_URL_ROOT.'/ecm/ajax/ecmdatabase.php'; ?>", {
action: 'build', action: 'build',
token: '<?php echo newToken(); ?>', token: '<?php echo newToken(); ?>',
element: 'ecm' element: 'ecm'
}, }, function(response) {
function(response) { setTimeout(() => {
$.unblockUI(); dolUnblockUI();
location.href='<?php echo $_SERVER['PHP_SELF']; ?>';
location.href='<?php echo $_SERVER['PHP_SELF']; ?>';
}, 1000); // delai 1s
}); });
}); });
}); });

View File

@@ -1,620 +0,0 @@
/*!
* jQuery blockUI plugin
* Version 2.70.0-2014.11.23
* Requires jQuery v1.7 or later
*
* Examples at: http://malsup.com/jquery/block/
* Copyright (c) 2007-2013 M. Alsup
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* https://www.gnu.org/licenses/gpl.html
*
* Thanks to Amir-Hossein Sobhi for some excellent contributions!
*/
;(function() {
/*jshint eqeqeq:false curly:false latedef:false */
"use strict";
function setup($) {
$.fn._fadeIn = $.fn.fadeIn;
var noOp = $.noop || function() {};
// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
// confusing userAgent strings on Vista)
var msie = /MSIE/.test(navigator.userAgent);
var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
var mode = document.documentMode || 0;
var setExpr = $.isFunction( document.createElement('div').style.setExpression );
// global $ methods for blocking/unblocking the entire page
$.blockUI = function(opts) { install(window, opts); };
$.unblockUI = function(opts) { remove(window, opts); };
// convenience method for quick growl-like notifications (http://www.google.com/search?q=growl)
$.growlUI = function(title, message, timeout, onClose) {
var $m = $('<div class="growlUI"></div>');
if (title) $m.append('<h1>'+title+'</h1>');
if (message) $m.append('<h2>'+message+'</h2>');
if (timeout === undefined) timeout = 3000;
// Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications
var callBlock = function(opts) {
opts = opts || {};
$.blockUI({
message: $m,
fadeIn : typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700,
fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000,
timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout,
centerY: false,
showOverlay: false,
onUnblock: onClose,
css: $.blockUI.defaults.growlCSS
});
};
callBlock();
var nonmousedOpacity = $m.css('opacity');
$m.mouseover(function() {
callBlock({
fadeIn: 0,
timeout: 30000
});
var displayBlock = $('.blockMsg');
displayBlock.stop(); // cancel fadeout if it has started
displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency
}).mouseout(function() {
$('.blockMsg').fadeOut(1000);
});
// End konapun additions
};
// plugin method for blocking element content
$.fn.block = function(opts) {
if ( this[0] === window ) {
$.blockUI( opts );
return this;
}
var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
this.each(function() {
var $el = $(this);
if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))
return;
$el.unblock({ fadeOut: 0 });
});
return this.each(function() {
if ($.css(this,'position') == 'static') {
this.style.position = 'relative';
$(this).data('blockUI.static', true);
}
this.style.zoom = 1; // force 'hasLayout' in ie
install(this, opts);
});
};
// plugin method for unblocking element content
$.fn.unblock = function(opts) {
if ( this[0] === window ) {
$.unblockUI( opts );
return this;
}
return this.each(function() {
remove(this, opts);
});
};
$.blockUI.version = 2.70; // 2nd generation blocking at no extra cost!
// override these in your code to change the default behavior and style
$.blockUI.defaults = {
// message displayed when blocking (use null for no message)
message: '<h1>Please wait...</h1>',
title: null, // title string; only used when theme == true
draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)
theme: false, // set to true to use with jQuery UI themes
// styles for the message when blocking; if you wish to disable
// these and use an external stylesheet then do this in your code:
// $.blockUI.defaults.css = {};
css: {
padding: 0,
margin: 0,
width: '30%',
top: '40%',
left: '35%',
textAlign: 'center',
color: '#000',
border: '3px solid #aaa',
backgroundColor:'#fff',
cursor: 'wait'
},
// minimal style set used when themes are used
themedCSS: {
width: '30%',
top: '40%',
left: '35%'
},
// styles for the overlay
overlayCSS: {
backgroundColor: '#000',
opacity: 0.6,
cursor: 'wait'
},
// style to replace wait cursor before unblocking to correct issue
// of lingering wait cursor
cursorReset: 'default',
// styles applied when using $.growlUI
growlCSS: {
width: '350px',
top: '10px',
left: '',
right: '10px',
border: 'none',
padding: '5px',
opacity: 0.6,
cursor: 'default',
color: '#fff',
backgroundColor: '#000',
'-webkit-border-radius':'10px',
'-moz-border-radius': '10px',
'border-radius': '10px'
},
// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
// (hat tip to Jorge H. N. de Vasconcelos)
/*jshint scripturl:true */
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
// force usage of iframe in non-IE browsers (handy for blocking applets)
forceIframe: false,
// z-index for the blocking overlay
baseZ: 1000,
// set these to true to have the message automatically centered
centerX: true, // <-- only effects element blocking (page block controlled via css above)
centerY: true,
// allow body element to be stetched in ie6; this makes blocking look better
// on "short" pages. disable if you wish to prevent changes to the body height
allowBodyStretch: true,
// enable if you want key and mouse events to be disabled for content that is blocked
bindEvents: true,
// be default blockUI will supress tab navigation from leaving blocking content
// (if bindEvents is true)
constrainTabKey: true,
// fadeIn time in millis; set to 0 to disable fadeIn on block
fadeIn: 200,
// fadeOut time in millis; set to 0 to disable fadeOut on unblock
fadeOut: 400,
// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
timeout: 0,
// disable if you don't want to show the overlay
showOverlay: true,
// if true, focus will be placed in the first available input field when
// page blocking
focusInput: true,
// elements that can receive focus
focusableElements: ':input:enabled:visible',
// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
// no longer needed in 2012
// applyPlatformOpacityRules: true,
// callback method invoked when fadeIn has completed and blocking message is visible
onBlock: null,
// callback method invoked when unblocking has completed; the callback is
// passed the element that has been unblocked (which is the window object for page
// blocks) and the options that were passed to the unblock call:
// onUnblock(element, options)
onUnblock: null,
// callback method invoked when the overlay area is clicked.
// setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
onOverlayClick: null,
// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
quirksmodeOffsetHack: 4,
// class name of the message block
blockMsgClass: 'blockMsg',
// if it is already blocked, then ignore it (don't unblock and reblock)
ignoreIfBlocked: false
};
// private data and functions follow...
var pageBlock = null;
var pageBlockEls = [];
function install(el, opts) {
var css, themedCSS;
var full = (el == window);
var msg = (opts && opts.message !== undefined ? opts.message : undefined);
opts = $.extend({}, $.blockUI.defaults, opts || {});
if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))
return;
opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
if (opts.onOverlayClick)
opts.overlayCSS.cursor = 'pointer';
themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
msg = msg === undefined ? opts.message : msg;
// remove the current block (if there is one)
if (full && pageBlock)
remove(window, {fadeOut:0});
// if an existing element is being used as the blocking content then we capture
// its current place in the DOM (and current display style) so we can restore
// it when we unblock
if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
var node = msg.jquery ? msg[0] : msg;
var data = {};
$(el).data('blockUI.history', data);
data.el = node;
data.parent = node.parentNode;
data.display = node.style.display;
data.position = node.style.position;
if (data.parent)
data.parent.removeChild(node);
}
$(el).data('blockUI.onUnblock', opts.onUnblock);
var z = opts.baseZ;
// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
// layer1 is the iframe layer which is used to supress bleed through of underlying content
// layer2 is the overlay layer which has opacity and a wait cursor (by default)
// layer3 is the message content that is displayed while blocking
var lyr1, lyr2, lyr3, s;
if (msie || opts.forceIframe)
lyr1 = $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>');
else
lyr1 = $('<div class="blockUI" style="display:none"></div>');
if (opts.theme)
lyr2 = $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>');
else
lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
if (opts.theme && full) {
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">';
if ( opts.title ) {
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>';
}
s += '<div class="ui-widget-content ui-dialog-content"></div>';
s += '</div>';
}
else if (opts.theme) {
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">';
if ( opts.title ) {
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>';
}
s += '<div class="ui-widget-content ui-dialog-content"></div>';
s += '</div>';
}
else if (full) {
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:'+(z+10)+';display:none;position:fixed"></div>';
}
else {
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:'+(z+10)+';display:none;position:absolute"></div>';
}
lyr3 = $(s);
// if we have a message, style it
if (msg) {
if (opts.theme) {
lyr3.css(themedCSS);
lyr3.addClass('ui-widget-content');
}
else
lyr3.css(css);
}
// style the overlay
if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
lyr2.css(opts.overlayCSS);
lyr2.css('position', full ? 'fixed' : 'absolute');
// make iframe layer transparent in IE
if (msie || opts.forceIframe)
lyr1.css('opacity',0.0);
//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
$.each(layers, function() {
this.appendTo($par);
});
if (opts.theme && opts.draggable && $.fn.draggable) {
lyr3.draggable({
handle: '.ui-dialog-titlebar',
cancel: 'li'
});
}
// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
if (ie6 || expr) {
// give body 100% height
if (full && opts.allowBodyStretch && $.support.boxModel)
$('html,body').css('height','100%');
// fix ie6 issue when blocked element has a border width
if ((ie6 || !$.support.boxModel) && !full) {
var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
var fixT = t ? '(0 - '+t+')' : 0;
var fixL = l ? '(0 - '+l+')' : 0;
}
// simulate fixed position
$.each(layers, function(i,o) {
var s = o[0].style;
s.position = 'absolute';
if (i < 2) {
if (full)
s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"');
else
s.setExpression('height','this.parentNode.offsetHeight + "px"');
if (full)
s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
else
s.setExpression('width','this.parentNode.offsetWidth + "px"');
if (fixL) s.setExpression('left', fixL);
if (fixT) s.setExpression('top', fixT);
}
else if (opts.centerY) {
if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
s.marginTop = 0;
}
else if (!opts.centerY && full) {
var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
s.setExpression('top',expression);
}
});
}
// show the message
if (msg) {
if (opts.theme)
lyr3.find('.ui-widget-content').append(msg);
else
lyr3.append(msg);
if (msg.jquery || msg.nodeType)
$(msg).show();
}
if ((msie || opts.forceIframe) && opts.showOverlay)
lyr1.show(); // opacity is zero
if (opts.fadeIn) {
var cb = opts.onBlock ? opts.onBlock : noOp;
var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
var cb2 = msg ? cb : noOp;
if (opts.showOverlay)
lyr2._fadeIn(opts.fadeIn, cb1);
if (msg)
lyr3._fadeIn(opts.fadeIn, cb2);
}
else {
if (opts.showOverlay)
lyr2.show();
if (msg)
lyr3.show();
if (opts.onBlock)
opts.onBlock.bind(lyr3)();
}
// bind key and mouse events
bind(1, el, opts);
if (full) {
pageBlock = lyr3[0];
pageBlockEls = $(opts.focusableElements,pageBlock);
if (opts.focusInput)
setTimeout(focus, 20);
}
else
center(lyr3[0], opts.centerX, opts.centerY);
if (opts.timeout) {
// auto-unblock
var to = setTimeout(function() {
if (full)
$.unblockUI(opts);
else
$(el).unblock(opts);
}, opts.timeout);
$(el).data('blockUI.timeout', to);
}
}
// remove the block
function remove(el, opts) {
var count;
var full = (el == window);
var $el = $(el);
var data = $el.data('blockUI.history');
var to = $el.data('blockUI.timeout');
if (to) {
clearTimeout(to);
$el.removeData('blockUI.timeout');
}
opts = $.extend({}, $.blockUI.defaults, opts || {});
bind(0, el, opts); // unbind events
if (opts.onUnblock === null) {
opts.onUnblock = $el.data('blockUI.onUnblock');
$el.removeData('blockUI.onUnblock');
}
var els;
if (full) // crazy selector to handle odd field errors in ie6/7
els = $('body').children().filter('.blockUI').add('body > .blockUI');
else
els = $el.find('>.blockUI');
// fix cursor issue
if ( opts.cursorReset ) {
if ( els.length > 1 )
els[1].style.cursor = opts.cursorReset;
if ( els.length > 2 )
els[2].style.cursor = opts.cursorReset;
}
if (full)
pageBlock = pageBlockEls = null;
if (opts.fadeOut) {
count = els.length;
els.stop().fadeOut(opts.fadeOut, function() {
if ( --count === 0)
reset(els,data,opts,el);
});
}
else
reset(els, data, opts, el);
}
// move blocking element back into the DOM where it started
function reset(els,data,opts,el) {
var $el = $(el);
if ( $el.data('blockUI.isBlocked') )
return;
els.each(function(i,o) {
// remove via DOM calls so we don't lose event handlers
if (this.parentNode)
this.parentNode.removeChild(this);
});
if (data && data.el) {
data.el.style.display = data.display;
data.el.style.position = data.position;
data.el.style.cursor = 'default'; // #59
if (data.parent)
data.parent.appendChild(data.el);
$el.removeData('blockUI.history');
}
if ($el.data('blockUI.static')) {
$el.css('position', 'static'); // #22
}
if (typeof opts.onUnblock == 'function')
opts.onUnblock(el,opts);
// fix issue in Safari 6 where block artifacts remain until reflow
var body = $(document.body), w = body.width(), cssW = body[0].style.width;
body.width(w-1).width(w);
body[0].style.width = cssW;
}
// bind/unbind the handler
function bind(b, el, opts) {
var full = el == window, $el = $(el);
// don't bother unbinding if there is nothing to unbind
if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
return;
$el.data('blockUI.isBlocked', b);
// don't bind events when overlay is not in use or if bindEvents is false
if (!full || !opts.bindEvents || (b && !opts.showOverlay))
return;
// bind anchors and inputs for mouse and key events
var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
if (b)
$(document).bind(events, opts, handler);
else
$(document).unbind(events, handler);
// former impl...
// var $e = $('a,:input');
// b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
}
// event handler to suppress keyboard/mouse events when blocking
function handler(e) {
// allow tab navigation (conditionally)
if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) {
if (pageBlock && e.data.constrainTabKey) {
var els = pageBlockEls;
var fwd = !e.shiftKey && e.target === els[els.length-1];
var back = e.shiftKey && e.target === els[0];
if (fwd || back) {
setTimeout(function(){focus(back);},10);
return false;
}
}
}
var opts = e.data;
var target = $(e.target);
if (target.hasClass('blockOverlay') && opts.onOverlayClick)
opts.onOverlayClick(e);
// allow events within the message content
if (target.parents('div.' + opts.blockMsgClass).length > 0)
return true;
// allow events for content that is not being blocked
return target.parents().children().filter('div.blockUI').length === 0;
}
function focus(back) {
if (!pageBlockEls)
return;
var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
if (e)
e.focus();
}
function center(el, x, y) {
var p = el.parentNode, s = el.style;
var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
if (x) s.left = l > 0 ? (l+'px') : '0';
if (y) s.top = t > 0 ? (t+'px') : '0';
}
function sz(el, p) {
return parseInt($.css(el,p),10)||0;
}
}
/*global define:true */
if (typeof define === 'function' && define.amd && define.amd.jQuery) {
define(['jquery'], setup);
} else {
setup(jQuery);
}
})();

View File

@@ -52,7 +52,7 @@ ConfirmGenerateChosenImgWebp=If you confirm, you will generate an image in .webp
ConfirmChosenImgWebpCreation=Confirm chosen images duplication ConfirmChosenImgWebpCreation=Confirm chosen images duplication
SucessConvertImgWebp=Images successfully duplicated SucessConvertImgWebp=Images successfully duplicated
SucessConvertChosenImgWebp=Chosen image successfully duplicated SucessConvertChosenImgWebp=Chosen image successfully duplicated
ECMDirName=Dir name ECMDirName=Directory name
ECMParentDirectory=Parent directory ECMParentDirectory=Parent directory
ShowFile=Show file ShowFile=Show file
FullPathOrig=Full path origin FullPathOrig=Full path origin

View File

@@ -1126,6 +1126,7 @@ KeyboardShortcut=Keyboard shortcut
AssignedTo=Assigned to AssignedTo=Assigned to
Deletedraft=Delete draft Deletedraft=Delete draft
ConfirmMassDraftDeletion=Draft mass delete confirmation ConfirmMassDraftDeletion=Draft mass delete confirmation
Shared=Shared
FileSharedViaALink=Public file shared via link FileSharedViaALink=Public file shared via link
LinkSharedViaALink=Public link shared via link LinkSharedViaALink=Public link shared via link
SelectAThirdPartyFirst=Select a third party first... SelectAThirdPartyFirst=Select a third party first...

View File

@@ -253,7 +253,7 @@ AddFiles=Ajouter des fichiers
StartUpload=Transférer StartUpload=Transférer
CancelUpload=Annuler le transfert CancelUpload=Annuler le transfert
FileIsTooBig=Le fichier est trop volumineux FileIsTooBig=Le fichier est trop volumineux
PleaseBePatient=Merci de patienter quelques instants PleaseBePatient=Merci de patienter quelques instants...
NewPassword=Nouveau mot de passe NewPassword=Nouveau mot de passe
ResetPassword=Réinitialiser le mot de passe ResetPassword=Réinitialiser le mot de passe
RequestToResetPasswordReceived=Une requête pour changer de mot de passe a été reçue. RequestToResetPasswordReceived=Une requête pour changer de mot de passe a été reçue.

View File

@@ -3750,6 +3750,11 @@ if (!function_exists("llxFooter")) {
print "\n<!-- A div to allow dialog popup by jQuery('#dialogforpopup').dialog() -->\n"; print "\n<!-- A div to allow dialog popup by jQuery('#dialogforpopup').dialog() -->\n";
print '<div id="dialogforpopup" style="display: none;"></div>'."\n"; print '<div id="dialogforpopup" style="display: none;"></div>'."\n";
// A div for the #uiblock
print "\n<!-- A div to allow uiblock by dolBlockUI(message) -->\n";
print '<div id="dol-block-ui" style="display: none;"><div class="message">Loading...</div></div>'."\n";
// Add code for the asynchronous anonymous first ping (for telemetry) // Add code for the asynchronous anonymous first ping (for telemetry)
// You can use &forceping=1 in parameters to force the ping if the ping was already sent. // You can use &forceping=1 in parameters to force the ping if the ping was already sent.
$forceping = GETPOST('forceping', 'alpha'); $forceping = GETPOST('forceping', 'alpha');

View File

@@ -746,7 +746,6 @@ if ($action == "dosign" && empty($cancel)) {
$("#signbutton").on("click",function(){ $("#signbutton").on("click",function(){
console.log("We click on button sign"); console.log("We click on button sign");
document.body.style.cursor = \'wait\'; document.body.style.cursor = \'wait\';
/* $("#signbutton").val(\''.dol_escape_js($langs->transnoentities('PleaseBePatient')).'\'); */
var signature = $("#signature").jSignature("getData", "image"); var signature = $("#signature").jSignature("getData", "image");
var name = document.getElementById("name").value; var name = document.getElementById("name").value;
$.ajax({ $.ajax({

View File

@@ -8449,6 +8449,32 @@ div.phpdebugbar-widgets-templates a.phpdebugbar-widgets-editor-link:before
} }
/* ============================================================================== */
/* For dolUIBlock() feature */
/* ============================================================================== */
#dol-block-ui {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.6);
z-index: 9999;
display: flex;
justify-content: center;
align-items: center;
}
#dol-block-ui .message {
padding: 15px 20px 15px 50px;
color: #fff;
background: #000 no-repeat 10px center;
border-radius: 10px;
font-family: sans-serif;
}
/* ============================================================================== */ /* ============================================================================== */
/* For copy-paste feature */ /* For copy-paste feature */
/* ============================================================================== */ /* ============================================================================== */

View File

@@ -8344,6 +8344,32 @@ div.phpdebugbar-widgets-templates a.phpdebugbar-widgets-editor-link:before
} }
/* ============================================================================== */
/* For dolUIBlock() feature */
/* ============================================================================== */
#dol-block-ui {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.6);
z-index: 9999;
display: flex;
justify-content: center;
align-items: center;
}
#dol-block-ui .message {
padding: 15px 20px 15px 50px;
color: #fff;
background: #000 no-repeat 10px center;
border-radius: 10px;
font-family: sans-serif;
}
/* ============================================================================== */ /* ============================================================================== */
/* For copy-paste feature */ /* For copy-paste feature */
/* ============================================================================== */ /* ============================================================================== */

View File

@@ -3103,18 +3103,18 @@ class User extends CommonObject
* Return a HTML link to the user card (with optionally the picto) * Return a HTML link to the user card (with optionally the picto)
* Use this->id,this->lastname, this->firstname * Use this->id,this->lastname, this->firstname
* *
* @param int $withpictoimg Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto, -1=Include photo into link, -2=Only picto photo, -3=Only photo very small) * @param int $withpictoimg Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto, -1=Include photo into link, -2=Only picto photo, -3=Only photo very small)
* @param string $option On what the link point to ('leave', 'accountancy', 'nolink', ) * @param string $option On what the link point to ('leave', 'accountancy', 'nolink', )
* @param integer $infologin 0=Add default info tooltip, 1=Add complete info tooltip, -1=No info tooltip * @param integer $infologin 0=Add default info tooltip, 1=Add complete info tooltip, -1=No info tooltip
* @param integer $notooltip 1=Disable tooltip on picto and name * @param integer $notooltip 1=Disable tooltip on picto and name
* @param int $maxlen Max length of visible user name * @param int $maxlen Max length of visible user name
* @param int $hidethirdpartylogo Hide logo of thirdparty if user is external user * @param int $hidethirdpartylogo Hide logo of thirdparty if user is external user
* @param string $mode ''=Show firstname and lastname, 'firstname'=Show only firstname, 'firstelselast'=Show firstname or lastname if not defined, 'login'=Show login * @param string $mode ''=Show firstname and lastname, 'firstname'=Show only firstname, 'firstelselast'=Show firstname or lastname if not defined, 'login'=Show login
* @param string $morecss Add more css on link * @param string $morecss Add more css on link
* @param int<-1,1> $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking * @param int<-1,1> $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
* @return string String with URL * @return string String with URL
*/ */
public function getNomUrl($withpictoimg = 0, $option = '', $infologin = 0, $notooltip = 0, $maxlen = 24, $hidethirdpartylogo = 0, $mode = '', $morecss = '', $save_lastsearch_value = -1) public function getNomUrl($withpictoimg = 0, $option = '', $infologin = 0, $notooltip = 0, $maxlen = 24, $hidethirdpartylogo = 0, $mode = '', $morecss = 'valignmiddle', $save_lastsearch_value = -1)
{ {
global $langs, $hookmanager, $user; global $langs, $hookmanager, $user;

View File

@@ -3069,20 +3069,11 @@ $arrayofjs = array(
); );
$arrayofcss = array(); $arrayofcss = array();
$moreheadcss = '';
$moreheadjs = '';
$arrayofjs[] = 'includes/jquery/plugins/blockUI/jquery.blockUI.js';
$arrayofjs[] = 'core/js/blockUI.js'; // Used by ecm/tpl/enabledfiletreeajax.tpl.php
if (!getDolGlobalString('MAIN_ECM_DISABLE_JS')) { if (!getDolGlobalString('MAIN_ECM_DISABLE_JS')) {
$arrayofjs[] = "includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js"; $arrayofjs[] = "includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js";
} }
$moreheadjs .= '<script type="text/javascript">'."\n"; llxHeader('', $langs->trans("Website").(empty($website->ref) ? '' : ' - '.$website->ref), $helpurl, '', 0, 0, $arrayofjs, $arrayofcss, '', 'mod-website page-index', '<!-- Begin div class="fiche" -->'."\n".'<div class="fichebutwithotherclass">');
$moreheadjs .= 'var indicatorBlockUI = \''.DOL_URL_ROOT."/theme/".$conf->theme."/img/working.gif".'\';'."\n";
$moreheadjs .= '</script>'."\n";
llxHeader($moreheadcss.$moreheadjs, $langs->trans("Website").(empty($website->ref) ? '' : ' - '.$website->ref), $helpurl, '', 0, 0, $arrayofjs, $arrayofcss, '', 'mod-website page-index', '<!-- Begin div class="fiche" -->'."\n".'<div class="fichebutwithotherclass">');
print "\n"; print "\n";
print '<!-- Open form for all page -->'."\n"; print '<!-- Open form for all page -->'."\n";