From 9e2e3393c6202dae27664d8628627830cc7ea5e8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 19 May 2022 21:32:17 +0200 Subject: [PATCH] Work on popup create pages --- htdocs/core/lib/functions.lib.php | 17 +++++++---- htdocs/projet/card.php | 10 +++++-- htdocs/societe/card.php | 47 ++++++++++++++++--------------- 3 files changed, 42 insertions(+), 32 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 85cccf6ac2b..e09ab803353 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1584,8 +1584,7 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename = * @param string $disabled Disabled text * @param string $morecss More CSS * @param string $backtopagejsfields The back to page must be managed using javascript instead of a redirect. - * Value is 'Name of html component to set with id:Name of html component to set with label' - * TODO Support this mode, for example when used from the page create a project on thirdparty creation. + * Value is 'keyforpopupid:Name_of_html_component_to_set_with id,Name_of_html_component_to_set_with_label' * @return string HTML component with button */ function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $disabled = '', $morecss = 'button bordertransp', $backtopagejsfields = '') @@ -1600,10 +1599,16 @@ function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $di $backtopagejsfieldsid = ''; $backtopagejsfieldslabel = ''; if ($backtopagejsfields) { - $url .= '&backtopagejsfields='.urlencode($backtopagejsfields); $tmpbacktopagejsfields = explode(':', $backtopagejsfields); - $backtopagejsfieldsid = empty($tmpbacktopagejsfields[0]) ? '' : $tmpbacktopagejsfields[0]; - $backtopagejsfieldslabel = empty($tmpbacktopagejsfields[1]) ? '' : $tmpbacktopagejsfields[1]; + if (empty($tmpbacktopagejsfields[1])) { // If the part 'keyforpopupid:' is missing, we add $name for it. + $backtopagejsfields = $name.":".$backtopagejsfields; + $tmp2backtopagejsfields = explode(',', $tmpbacktopagejsfields[0]); + } else { + $tmp2backtopagejsfields = explode(',', $tmpbacktopagejsfields[1]); + } + $backtopagejsfieldsid = empty($tmp2backtopagejsfields[0]) ? '' : $tmp2backtopagejsfields[0]; + $backtopagejsfieldslabel = empty($tmp2backtopagejsfields[1]) ? '' : $tmp2backtopagejsfields[1]; + $url .= '&backtopagejsfields='.urlencode($backtopagejsfields); } //print ''; @@ -1626,7 +1631,7 @@ function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $di width: \'80%\', title: \''.dol_escape_js($label).'\', open: function (event, ui) { - console.log("open popup"); + console.log("open popup name='.$name.', backtopagejsfields='.$backtopagejsfields.'"); }, close: function (event, ui) { returnedid = jQuery("#varforreturndialogid'.$name.'").text(); diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 1ad09aa421f..23980d8d1df 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -46,6 +46,7 @@ $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'aZ09'); $backtopage = GETPOST('backtopage', 'alpha'); +$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); $backtopagejsfields = GETPOST('backtopagejsfields', 'alpha'); $cancel = GETPOST('cancel', 'alpha'); $confirm = GETPOST('confirm', 'aZ09'); @@ -620,9 +621,12 @@ if ($action == 'create' && $user->rights->projet->creer) { $url = '/societe/card.php?action=create&client=3&fournisseur=0&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create'); $newbutton = ''; // TODO @LDR Implement this - //$tmpbacktopagejsfields = 'socid:search_socid'; - //print dolButtonToOpenUrlInDialogPopup('addthirdparty', $langs->transnoentitiesnoconv('AddThirdParty'), $newbutton, $url, '', '', $tmpbacktopagejsfields); - print ' '.$newbutton.''; + if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) { + $tmpbacktopagejsfields = 'addthirdparty:socid,search_socid'; + print dolButtonToOpenUrlInDialogPopup('addthirdparty', $langs->transnoentitiesnoconv('AddThirdParty'), $newbutton, $url, '', '', $tmpbacktopagejsfields); + } else { + print ' '.$newbutton.''; + } } print ''; } diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 9591efc6f05..51c307c6c6e 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -84,8 +84,8 @@ $error = 0; $errors = array(); $action = (GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'); $cancel = GETPOST('cancel', 'alpha'); $backtopage = GETPOST('backtopage', 'alpha'); -$backtopagejsfields = GETPOST('backtopagejsfields', 'alpha'); $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); +$backtopagejsfields = GETPOST('backtopagejsfields', 'alpha'); $dol_openinpopup = GETPOST('dol_openinpopup', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); @@ -689,6 +689,27 @@ if (empty($reshook)) { if ($result >= 0 && !$error) { $db->commit(); + if ($backtopagejsfields) { + llxHeader('', '', ''); + + $tmpbacktopagejsfields = explode(':', $backtopagejsfields); + $dol_openinpopup = $tmpbacktopagejsfields[0]; + + $retstring = ''; + print $retstring; + + llxFooter(); + exit; + } + if (!empty($backtopage)) { $backtopage = preg_replace('/--IDFORBACKTOPAGE--/', $object->id, $backtopage); // New method to autoselect project after a New on another form object creation if (preg_match('/\?/', $backtopage)) { @@ -704,28 +725,8 @@ if (empty($reshook)) { $url = DOL_URL_ROOT."/fourn/card.php?socid=".$object->id; } - // TODO @LDR - if ($dol_openinpopup && $backtopagejsfields) { - // TODO @LDR for the save button, in action "add", set parent var to return data and close the window - //$retstring .= 'setid '; - //$retstring .= 'setlabel'; - $retstring = ''; - $retstring .= ''; - $retstring .= 'Set js var of parent with id of object created then close popup.'; - print $retstring; - exit; - } else { - header("Location: ".$url); - exit; - } + header("Location: ".$url); + exit; } } else { $db->rollback();