Valider 1cb0464b rédigé par esj's avatar esj
Parcourir les fichiers

Correction de la fonction {{{formulaires_editer_objet_charger}}}: si la...

Correction de la fonction {{{formulaires_editer_objet_charger}}}: si la fonction {{{_select}}} correspondant à l'objet a retourné vide, c'est qu'on a fourni un id inexistant ou interdit d'accès au demandeur, il ne faut donc pas proposer un formulaire d'édition comme si on créait un nouvel objet. Cas typique: un rédacteur veut revenir sur un article déjà publié, il n'a donc plus les droits et il est contre-intuitif de lui donner un formulaire sans pré-remplissage, qui lui fait croire que son article a disparu.

Avec cette modif, on retourne un bloc vide à la place du formulaire, mais il serait plus éloquent de retourner un message d'erreur. Il faudrait le faire dans {{{balise_FORMULAIRE__dyn}}}, en changeant {{{''}}} dans son {{{if ($valeurs===false) return '';}}} mais je ne suis pas sûr que ça n'ait pas des conséquences ailleurs.
parent 1e72ab3f
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+9 −22
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -55,34 +55,21 @@ function formulaires_editer_objet_charger($type, $id='new', $id_parent=0, $lier_
	$table_objet = table_objet($type);
	$table_objet_sql = table_objet_sql($type);
	$id_table_objet = id_table_objet($type);
	$new = $id;

	// nouveau ou pas ?
	if (is_numeric($id))
		$new = '';
	else
		$new = $id;
	$new = !is_numeric($id);

	// Appel direct dans un squelette
	if (!$row) {
		if ($select = charger_fonction($type."_select",'inc',true)){
		if  (!$new) {
			if ($select = charger_fonction($type."_select",'inc',true))
				$row = $select($id, $id_parent, $lier_trad);
		}
		else {
			$row = sql_fetsel('*',$table_objet_sql,$id_table_objet."=".intval($id));
		}
		if ($new OR !$row) {
			else $row = sql_fetsel('*',$table_objet_sql,$id_table_objet."=".intval($id));
			if (!$row) return false; // interdit a l'edition
			$md5 = controles_md5($row);
		} else {
			$trouver_table = charger_fonction('trouver_table','base');
			if ($desc = $trouver_table($table_objet))
				foreach($desc['field'] as $k=>$v)
					if (!isset($row[$k]))
						$row[$k]='';
				foreach($desc['field'] as $k=>$v) $row[$k]='';
		}

		// Ajouter les controles md5 si l'article existe
		// et n'a pas ete passe en valeur
		if (!$new)
			$md5 = controles_md5($row);
	}

	// Gaffe: sans ceci, on ecrase systematiquement l'article d'origine