forked from Wavyzz/dolibarr
Remove BlockUI js plugin. Replaced with few js/css lines.
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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).'">';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -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) ?>;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>';
|
||||||
|
|||||||
@@ -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"' : '').' /> ';
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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');
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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 || ' ')+'</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 || ' ')+'</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);
|
|
||||||
}
|
|
||||||
|
|
||||||
})();
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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...
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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');
|
||||||
|
|||||||
@@ -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({
|
||||||
|
|||||||
@@ -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 */
|
||||||
/* ============================================================================== */
|
/* ============================================================================== */
|
||||||
|
|||||||
@@ -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 */
|
||||||
/* ============================================================================== */
|
/* ============================================================================== */
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
Reference in New Issue
Block a user