diff --git a/ecrire/action/joindre.php b/ecrire/action/joindre.php
index 447d4a6e2ead95bdccecf5fb4fd75e33dc4c6f96..f31145c139561d7ad47994ed48e02dccc07844a9 100644
--- a/ecrire/action/joindre.php
+++ b/ecrire/action/joindre.php
@@ -53,8 +53,8 @@ function action_joindre_dist()
      $documents_actifs = array();
 
      if (function_exists($sousaction))
-       $sousaction($path, $mode, $type, $id, $id_document, 
-	       $hash, $GLOBALS['auteur_session']['id_auteur'], $redirect, $documents_actifs);
+       $type_image = $sousaction($path, $mode, $type, $id, $id_document, 
+				 $hash, $redirect, $documents_actifs);
 
      else spip_log("spip_action: sousaction inconnue $sousaction");
 
@@ -62,9 +62,18 @@ function action_joindre_dist()
 	$redirect .= '&show_docs=' . join('-',$documents_actifs);
      }
      
-     if ($ancre) {
-	$redirect .= '#' . $ancre;
+     if (!$ancre) {
+
+		if ($mode=='vignette')
+			$ancre = 'images';
+		else if ($type_image)
+			$ancre = 'portfolio';
+		else
+			$ancre = 'documents';
+
+		$redirect .= '#' . $ancre;
      }
+
      if ($type == 'rubrique') {
 	include_spip('inc/rubriques');
 	calculer_rubriques();
@@ -77,9 +86,9 @@ function action_joindre_dist()
 // Cas d'un document distant reference sur internet
 
 // http://doc.spip.org/@spip_action_joindre2
-function spip_action_joindre2($path, $mode, $type, $id, $id_document,$hash, $id_auteur, $redirect, &$actifs)
+function spip_action_joindre2($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs)
 {
-	examiner_les_fichiers(array(
+	return examiner_les_fichiers(array(
 				   array('name' => basename($path),
 					 'tmp_name' => $path)
 				   ), 'distant', $type, $id, $id_document,
@@ -89,7 +98,7 @@ function spip_action_joindre2($path, $mode, $type, $id, $id_document,$hash, $id_
 // Cas d'un fichier transmis
 
 // http://doc.spip.org/@spip_action_joindre1
-function spip_action_joindre1($path, $mode, $type, $id, $id_document,$hash, $id_auteur, $redirect, &$actifs)
+function spip_action_joindre1($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs)
 {
 	$files = array();
 	if (is_array($path))
@@ -98,14 +107,14 @@ function spip_action_joindre1($path, $mode, $type, $id, $id_document,$hash, $id_
 			$files[]=$file;
 	}
 
-	examiner_les_fichiers($files, $mode, $type, $id, $id_document,
+	return examiner_les_fichiers($files, $mode, $type, $id, $id_document,
 			     $hash, $redirect, $actifs);
 } 
 
 // copie de tout ou partie du repertoire upload
 
 // http://doc.spip.org/@spip_action_joindre3
-function spip_action_joindre3($path, $mode, $type, $id, $id_document,$hash, $id_auteur, $redirect, &$actifs)
+function spip_action_joindre3($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs)
 {
 	if (!$path || strstr($path, '..')) return;
 	    
@@ -128,37 +137,38 @@ function spip_action_joindre3($path, $mode, $type, $id, $id_document,$hash, $id_
 	  }
 	}
 
-	examiner_les_fichiers($files, $mode, $type, $id, $id_document, $hash, $redirect, $actifs);
+	return examiner_les_fichiers($files, $mode, $type, $id, $id_document, $hash, $redirect, $actifs);
 }
 
 //  Zip avec confirmation "tel quel"
 
 // http://doc.spip.org/@spip_action_joindre5
-function spip_action_joindre5($path, $mode, $type, $id, $id_document,$hash, $id_auteur, $redirect, &$actifs)
+function spip_action_joindre5($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs)
 {
-  	ajouter_un_document($path, basename($path), $type, $id, $mode, $id_document, $actifs);
+	return ajouter_un_document($path, basename($path), $type, $id, $mode, $id_document, $actifs);
 }
 
 // Zip a deballer.
 
 // http://doc.spip.org/@spip_action_joindre6
-function spip_action_joindre6($path, $mode, $type, $id, $id_document,$hash, $id_auteur, $redirect, &$actifs)
+function spip_action_joindre6($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs)
 {
-	joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $id_auteur, $redirect, $actifs);
+	$x = joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, $actifs);
 	//  suppression de l'archive en zip
 	@unlink($path);
+	return $x;
 }
 
 // Zip avec les 2 options a la fois
 
-function spip_action_joindre4($path, $mode, $type, $id, $id_document,$hash, $id_auteur, $redirect, &$actifs)
+function spip_action_joindre4($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs)
 {
-	joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $id_auteur, $redirect, $actifs);
-	spip_action_joindre5($path, $mode, $type, $id, $id_document,$hash, $id_auteur, $redirect, $actifs);
+	joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, $actifs);
+	return spip_action_joindre5($path, $mode, $type, $id, $id_document,$hash, $redirect, $actifs);
 }
 
 // http://doc.spip.org/@spip_action_joindre6
-function joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $id_auteur, $redirect, &$actifs)
+function joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs)
 {
 	    define('_tmp_dir', creer_repertoire_documents($hash));
 	    if (_tmp_dir == _DIR_DOC) die(_L('Opération impossible'));
@@ -171,9 +181,10 @@ function joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $id_aute
 	    $contenu = verifier_compactes($archive);
 	    
 	    foreach ($contenu as $fichier)
-		ajouter_un_document(_tmp_dir.basename($fichier),
+		$x = ajouter_un_document(_tmp_dir.basename($fichier),
 				    basename($fichier),
 				    $type, $id, $mode, $id_document, $actifs);
 	    effacer_repertoire_temporaire(_tmp_dir);
+	    return $x;
 }
 ?>
diff --git a/ecrire/inc/getdocument.php b/ecrire/inc/getdocument.php
index 085d312bcc3b92dbc6d73539161997e4b5908970..7c5970b33265f5b7802e7e406c77113f690039b9 100644
--- a/ecrire/inc/getdocument.php
+++ b/ecrire/inc/getdocument.php
@@ -362,16 +362,6 @@ function ajouter_un_document ($source, $nom_envoye, $type_lien, $id_lien, $mode,
 		}
 	}
 
-	// regler l'ancre du retour
-	if (!$GLOBALS['ancre']) {
-		if ($mode=='vignette')
-			$GLOBALS['ancre'] = 'images';
-		else if ($type_image)
-			$GLOBALS['ancre'] = 'portfolio';
-		else
-			$GLOBALS['ancre'] = 'documents';
-	}
-
 	// Preparation vignette du document $id_document
 	$id_document=intval($id_document);
 	if ($mode == 'vignette' AND $id_document_lie = $id_document) {
@@ -424,7 +414,7 @@ function ajouter_un_document ($source, $nom_envoye, $type_lien, $id_lien, $mode,
 	include_spip('inc/indexation');
 	marquer_indexer('spip_documents', $id_document);
 
-	return true;
+	return $type_image;
 }
 
 // http://doc.spip.org/@traite_svg
@@ -523,9 +513,10 @@ function examiner_les_fichiers($files, $mode, $type, $id, $id_document, $hash, $
 	}
 	foreach ($files as $arg) {
 		check_upload_error($arg['error']);
-		ajouter_un_document($arg['tmp_name'], $arg['name'], 
+		$x = ajouter_un_document($arg['tmp_name'], $arg['name'], 
 				    $type, $id, $mode, $id_document, $actifs);
 	}
+	return $x;
 }
 
 // Afficher un formulaire de choix: decompacter et/ou garder tel quel.