Ticket #2250 (closed defect: fixed)
Erreur de parsing wiki des liens de la mediateque
| Reported by: | Gvx | Owned by: | team | 
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | module:core | Version: | 2.11.2 | 
| Severity: | normal | Keywords: | |
| Cc: | 
Description
Lors de l'upload d'un media, dotclear remplace les caractères "interdits" dans le nom de fichier par le caractère "_". Hors en mode wiki ce caractère doublé est utilisé pour l'emphase forte (<strong>).
Dans le cas ou un media à 2 caractères interdits consécutifs, le remplacement est interprété par le parsing wiki comme emphase forte.
Exemple avec le nom original du fichier suivant:
image (2).jpg
donne en syntaxe wiki ceci:
[((/dotclear/public/.image__2__m.jpg|image__2_.jpg|C))|/dotclear/public/image__2_.jpg||image__2_.jpg]
et le parsing wiki de dotclear donne ceci
<a href="/dotclear/public/image<strong>2_.jpg" title="image</strong>2_.jpg"><img src="/dotclear/public/.image__2__m.jpg" alt="image__2_.jpg" style="display:block; margin:0 auto;" /></a>
Je suis conscient qu'il s'agit d'un cas un peu particulier, mais mieux faut le connaitre.
Un solution possible serait de réduire les "_" multiples du nom de fichier par un seul dans la fonction tidyFileName du fichier /inc/libs/clearbricks/common/lib.files.php
Change History
comment:2 Changed 8 years ago by Gvx
Un peu plus propre que la solution précédente (on utilse le nom de fichier original sans filtrage pour le titre)
# Adding a file
if ($dir && !empty($_FILES['upfile'])) {
	// only one file per request : @see option singleFileUploads in admin/js/jsUpload/jquery.fileupload
	$upfile = array('name' => $_FILES['upfile']['name'][0],
		'type' => $_FILES['upfile']['type'][0],
		'tmp_name' => $_FILES['upfile']['tmp_name'][0],
		'error' => $_FILES['upfile']['error'][0],
		'size' => $_FILES['upfile']['size'][0],
		'title' => html::escapeHTML($_FILES['upfile']['name'][0])           // new item
		);
	if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])) {
		header('Content-type: application/json');
		$message = array();
		try {
			files::uploadStatus($upfile);
			$new_file_id = $core->media->uploadFile($upfile['tmp_name'], $upfile['name'],$upfile['title']);      // use new item "title"
    comment:4 Changed 8 years ago by Franck Paul <carnet.franck.paul@…>
- Status changed from new to closed
- Resolution set to fixed
(In [943d901d2c76]) Merged in Gvx_/dotclear/Ticket_2250 (pull request #112). Title of the image without filtering, fixes #2250

Solution beaucoup moins intrusive:
Remplacer dans le fichier /admin/media.php la ligne
par
$new_file_id = $core->media->uploadFile($upfile['tmp_name'], $upfile['name'],preg_replace('/_{2,}/u','_',$upfile['name']));