Browse Source

Work on popup create pages

Laurent Destailleur 3 năm trước cách đây
mục cha
commit
9e2e3393c6
3 tập tin đã thay đổi với 42 bổ sung32 xóa
  1. 11 6
      htdocs/core/lib/functions.lib.php
  2. 7 3
      htdocs/projet/card.php
  3. 24 23
      htdocs/societe/card.php

+ 11 - 6
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 '<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();

+ 7 - 3
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 = '<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>';
 	}

+ 24 - 23
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 = '<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();