dolButtonToOpenUrlInDialogPopup works better with nojs=1

This commit is contained in:
Laurent Destailleur
2022-08-23 12:25:44 +02:00
parent da01c7ea49
commit 6d80b6a710
2 changed files with 49 additions and 38 deletions

View File

@@ -1693,7 +1693,7 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename =
* @param string $name A name for the html component * @param string $name A name for the html component
* @param string $label Label shown in Popup title top bar * @param string $label Label shown in Popup title top bar
* @param string $buttonstring button string * @param string $buttonstring button string
* @param string $url Url to open * @param string $url Relative Url to open
* @param string $disabled Disabled text * @param string $disabled Disabled text
* @param string $morecss More CSS * @param string $morecss More CSS
* @param string $backtopagejsfields The back to page must be managed using javascript instead of a redirect. * @param string $backtopagejsfields The back to page must be managed using javascript instead of a redirect.
@@ -1702,6 +1702,8 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename =
*/ */
function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $disabled = '', $morecss = 'button bordertransp', $backtopagejsfields = '') function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $disabled = '', $morecss = 'button bordertransp', $backtopagejsfields = '')
{ {
global $conf;
if (strpos($url, '?') > 0) { if (strpos($url, '?') > 0) {
$url .= '&dol_hide_topmenu=1&dol_hide_leftmenu=1&dol_openinpopup='.urlencode($name); $url .= '&dol_hide_topmenu=1&dol_hide_leftmenu=1&dol_openinpopup='.urlencode($name);
} else { } else {
@@ -1725,44 +1727,50 @@ function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $di
} }
//print '<input type="submit" class="button bordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("MediaFiles")).'" name="file_manager">'; //print '<input type="submit" class="button bordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("MediaFiles")).'" name="file_manager">';
$out .= '<!-- a link for button to open url into a dialog popup backtopagejsfields = '.$backtopagejsfields.' -->'."\n"; $out .= '<!-- a link for button to open url into a dialog popup backtopagejsfields = '.$backtopagejsfields.' -->';
$out .= '<a class="cursorpointer classlink button_'.$name.($morecss ? ' '.$morecss : '').'"'.$disabled.' title="'.dol_escape_htmltag($label).'">'.$buttonstring.'</a>'; $out .= '<a class="cursorpointer classlink button_'.$name.($morecss ? ' '.$morecss : '').'"'.$disabled.' title="'.dol_escape_htmltag($label).'"';
$out .= '<div id="idfordialog'.$name.'" class="hidden">div for dialog</div>'; if (empty($conf->use_javascript_ajax)) {
$out .= '<div id="varforreturndialogid'.$name.'" class="hidden">div for returned id</div>'; $out .= ' href="'.DOL_URL_ROOT.$url.'" target="_blank"';
$out .= '<div id="varforreturndialoglabel'.$name.'" class="hidden">div for returned label</div>'; }
$out .= '<!-- Add js code to open dialog popup on dialog -->'; $out .= '>'.$buttonstring.'</a>';
$out .= '<script type="text/javascript"> if (!empty($conf->use_javascript_ajax)) {
jQuery(document).ready(function () { $out .= '<div id="idfordialog'.$name.'" class="hidden">div for dialog</div>';
jQuery(".button_'.$name.'").click(function () { $out .= '<div id="varforreturndialogid'.$name.'" class="hidden">div for returned id</div>';
console.log(\'Open popup with jQuery(...).dialog() on URL '.dol_escape_js(DOL_URL_ROOT.$url).'\'); $out .= '<div id="varforreturndialoglabel'.$name.'" class="hidden">div for returned label</div>';
var $tmpdialog = $(\'#idfordialog'.$name.'\'); $out .= '<!-- Add js code to open dialog popup on dialog -->';
$tmpdialog.html(\'<iframe class="iframedialog" id="iframedialog'.$name.'" style="border: 0px;" src="'.DOL_URL_ROOT.$url.'" width="100%" height="98%"></iframe>\'); $out .= '<script type="text/javascript">
$tmpdialog.dialog({ jQuery(document).ready(function () {
autoOpen: false, jQuery(".button_'.$name.'").click(function () {
modal: true, console.log(\'Open popup with jQuery(...).dialog() on URL '.dol_escape_js(DOL_URL_ROOT.$url).'\');
height: (window.innerHeight - 150), var $tmpdialog = $(\'#idfordialog'.$name.'\');
width: \'80%\', $tmpdialog.html(\'<iframe class="iframedialog" id="iframedialog'.$name.'" style="border: 0px;" src="'.DOL_URL_ROOT.$url.'" width="100%" height="98%"></iframe>\');
title: \''.dol_escape_js($label).'\', $tmpdialog.dialog({
open: function (event, ui) { autoOpen: false,
console.log("open popup name='.$name.', backtopagejsfields='.$backtopagejsfields.'"); modal: true,
}, height: (window.innerHeight - 150),
close: function (event, ui) { width: \'80%\',
returnedid = jQuery("#varforreturndialogid'.$name.'").text(); title: \''.dol_escape_js($label).'\',
returnedlabel = jQuery("#varforreturndialoglabel'.$name.'").text(); open: function (event, ui) {
console.log("popup has been closed. returnedid (js var defined into parent page)="+returnedid+" returnedlabel="+returnedlabel); console.log("open popup name='.$name.', backtopagejsfields='.$backtopagejsfields.'");
if (returnedid != "" && returnedid != "div for returned id") { },
jQuery("#'.(empty($backtopagejsfieldsid)?"none":$backtopagejsfieldsid).'").val(returnedid); close: function (event, ui) {
returnedid = jQuery("#varforreturndialogid'.$name.'").text();
returnedlabel = jQuery("#varforreturndialoglabel'.$name.'").text();
console.log("popup has been closed. returnedid (js var defined into parent page)="+returnedid+" returnedlabel="+returnedlabel);
if (returnedid != "" && returnedid != "div for returned id") {
jQuery("#'.(empty($backtopagejsfieldsid)?"none":$backtopagejsfieldsid).'").val(returnedid);
}
if (returnedlabel != "" && returnedlabel != "div for returned label") {
jQuery("#'.(empty($backtopagejsfieldslabel)?"none":$backtopagejsfieldslabel).'").val(returnedlabel);
}
} }
if (returnedlabel != "" && returnedlabel != "div for returned label") { });
jQuery("#'.(empty($backtopagejsfieldslabel)?"none":$backtopagejsfieldslabel).'").val(returnedlabel);
}
}
});
$tmpdialog.dialog(\'open\'); $tmpdialog.dialog(\'open\');
});
}); });
}); </script>';
</script>'; }
return $out; return $out;
} }

View File

@@ -2093,8 +2093,11 @@ if ($module == 'initmodule') {
print '<span class="opacitymedium">'.$langs->trans("IdModule").'</span> <input type="text" name="idmodule" class="width75" value="500000" placeholder="'.dol_escape_htmltag($langs->trans("IdModule")).'">'; print '<span class="opacitymedium">'.$langs->trans("IdModule").'</span> <input type="text" name="idmodule" class="width75" value="500000" placeholder="'.dol_escape_htmltag($langs->trans("IdModule")).'">';
print '<span class="opacitymedium">'; print '<span class="opacitymedium">';
print ' &nbsp; (<a href="'.DOL_URL_ROOT.'/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info" target="_blank" rel="noopener noreferrer">'.$langs->trans("SeeIDsInUse").'</a>'; print ' &nbsp; (';
print ' - <a href="https://wiki.dolibarr.org/index.php/List_of_modules_id" target="_blank" rel="noopener noreferrer external">'.$langs->trans("SeeReservedIDsRangeHere").'</a>)'; print dolButtonToOpenUrlInDialogPopup('popup_modules_id', $langs->transnoentitiesnoconv("SeeIDsInUse"), $langs->transnoentitiesnoconv("SeeIDsInUse"), '/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info', '', '');
print ' - ';
print '<a href="https://wiki.dolibarr.org/index.php/List_of_modules_id" target="_blank" rel="noopener noreferrer external">'.$langs->trans("SeeReservedIDsRangeHere").'</a>';
print ')';
print '</span>'; print '</span>';
print '<br>'; print '<br>';
print '<span class="opacitymedium">'.$langs->trans("Version").'</span> <input type="text" name="version" class="width75" value="1.0" placeholder="'.dol_escape_htmltag($langs->trans("Version")).'"><br>'; print '<span class="opacitymedium">'.$langs->trans("Version").'</span> <input type="text" name="version" class="width75" value="1.0" placeholder="'.dol_escape_htmltag($langs->trans("Version")).'"><br>';