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();