Work on popup create pages

This commit is contained in:
Laurent Destailleur 2022-05-19 21:32:17 +02:00
parent ae34fd1498
commit 9e2e3393c6
3 changed files with 42 additions and 32 deletions

View File

@ -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 '<input type="submit" class="button bordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("MediaFiles")).'" name="file_manager">';
@ -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();

View File

@ -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 = '<span class="fa fa-plus-circle valignmiddle paddingleft" title="'.$langs->trans("AddThirdParty").'"></span>';
// TODO @LDR Implement this
//$tmpbacktopagejsfields = 'socid:search_socid';
//print dolButtonToOpenUrlInDialogPopup('addthirdparty', $langs->transnoentitiesnoconv('AddThirdParty'), $newbutton, $url, '', '', $tmpbacktopagejsfields);
print ' <a href="'.DOL_URL_ROOT.$url.'">'.$newbutton.'</a>';
if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) {
$tmpbacktopagejsfields = 'addthirdparty:socid,search_socid';
print dolButtonToOpenUrlInDialogPopup('addthirdparty', $langs->transnoentitiesnoconv('AddThirdParty'), $newbutton, $url, '', '', $tmpbacktopagejsfields);
} else {
print ' <a href="'.DOL_URL_ROOT.$url.'">'.$newbutton.'</a>';
}
}
print '</td></tr>';
}

View File

@ -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 = '<script>';
$retstring .= 'jQuery(document).ready(function() {
console.log(\'We execute action to create. We save id and go back - '.$dol_openinpopup.'\');
console.log(\'id = '.$object->id.'\');
$(\'#varforreturndialogid'.$dol_openinpopup.'\', window.parent.document).text(\''.$object->id.'\');
$(\'#varforreturndialoglabel'.$dol_openinpopup.'\', window.parent.document).text(\''.$object->name.'\');
window.parent.jQuery(\'#idfordialog'.$dol_openinpopup.'\').dialog(\'close\');
});';
$retstring .= '</script>';
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 .= '<a onclick="javascript:$(\'#varforreturndialogid'.$dol_openinpopup.'\', window.parent.document).text(\'setid\');">setid</a> ';
//$retstring .= '<a onclick="javascript:$(\'#varforreturndialoglabel'.$dol_openinpopup.'\', window.parent.document).text(\'setlabel\');">setlabel</a>';
$retstring = '';
$retstring .= '<script>';
$retstring .= 'jQuery(document).ready() {
console.log(\'We execute action to create. We save id and go back - '.$dol_openinpopup.'\');
console.log(\'id = '.$object->id.'\');
$(\'#varforreturndialogid'.$dol_openinpopup.'\', window.parent.document).text(\'newid\');
$(\'#varforreturndialoglabel'.$dol_openinpopup.'\', window.parent.document).text(\'newlabel\');
//window.parent.jQuery(\'#idfordialog'.$dol_openinpopup.'\').dialog(\'close\');
});';
$retstring .= '</script>';
$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();