Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2014-02-22 15:18:44

fix
Membre
Inscription : 2005-01-20
Site Web

Passage 2.4 à 2.6.2

Bonjour,

Je viens d'effectuer la mise à jour d'un Dotclear 2.4 vers Dotclear 2.6.2.

Tout s'est déroulé sans problème, et rien n'a l'air d'être cassé côté public.

Ça fait un moment que j'ai quitté le navire, et j'ai du mal à trouver le temps que je voudrais pour m'y remettre... Je me demandais donc s'il y avait certains changements à apporter aux thèmes pour éviter les problèmes de compatibilité avec la dernière version, et assurer l'évolution pour les prochaines mises à jour. Merci d'avance pour votre aide !

Hors ligne

#2 2014-02-22 15:30:57

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Passage 2.4 à 2.6.2

Je ne pense pas qu'il y ait eu des modifications côté public entre les deux versions. La version 2.6 en tout cas portait sur l'admin uniquement. Si rien n'est cassé, c'est que ton thème est encore compatible ;)

Hors ligne

#3 2014-02-22 15:38:07

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Passage 2.4 à 2.6.2

On dit ça, on dit ça, et puis finalement, à la version suivante on se rend compte que la rétro-compatibilité n'est plus assurée ;)

Je pensais avoir vu passer, il y a longtemps (1 an, ou peut-être plus ?), un billet indiquant des mises à jour à effectuer dans les thèmes et/ou dans les plugins...

Ça me fait penser que j'ai également un plugin maison qui tourne sur mon blog : de ce côté-là non plus, il n'y a pas eu de changement ?

Hors ligne

#4 2014-02-22 15:42:55

Mathieu M.
Membre
Lieu : Rhône-Alpes
Inscription : 2009-09-14

Re : Passage 2.4 à 2.6.2

Les changements ont eu lieu entre DC 2.1.6 et DC 2.2 de mémoire si ça peut t'aider :-)

Hors ligne

#5 2014-02-22 15:59:14

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Passage 2.4 à 2.6.2

fix a écrit :

Ça me fait penser que j'ai également un plugin maison qui tourne sur mon blog : de ce côté-là non plus, il n'y a pas eu de changement ?

Si, et beaucoup ;) C'est documenté sur cette page : http://fr.dotclear.org/documentation/2. … otclear-26

Mais en gros, si ton plugin ne construit pas des listes de billets avec des filtres ou n'ajoute pas de code dans la page d'édition d'un billet, il devrait continuer à fonctionner.

Hors ligne

#6 2014-02-22 17:18:34

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Passage 2.4 à 2.6.2

Effectivement, ça plante sacrément. Pourtant, ça n'a pas l'air d'être dû à ce qui est indiqué dans la doc dont tu m'as fourni le lien...

Ce sont les onglets de mon plugin qui ne fonctionnent pas. En effet, DC veut créer des liens de la forme suivante : plugin.php?p=monplugin#onglet1, ou #onglet2, etc.
Alors que j'ai besoin de liens de la forme : plugin.php?p=monplugin&m=onglet1, ou &m=onglet2, etc.

Le responsable de ça dans mon plugin, c'est le code suivant :

<?php if ($default_tab == 'onglet1') { ?>
	<div class="multi-part" id="onglet1" title="<?php echo __('Onglet 1'); ?>"></div>
<?php } else { ?>
	<p><a href="plugin.php?p=monPlugin&m=onglet1" class="multi-part"><?php echo(__('Onglet 1')); ?></a></p>
<?php }
if ($default_tab == 'onglet2') { ?>
	<div class="multi-part" id="onglet2" title="<?php echo __('Onglet 2'); ?>"></div>
<?php } else { ?>
	<p><a href="plugin.php?p=monPlugin&m=onglet2" class="multi-part"><?php echo(__('Onglet 2')); ?></a></p>
<?php } ?>

Résultat : DC me crée des onglets avec le titre "Undefined", et m'affiche, en-dessous, de simples liens vers les pages "Onglet 1", "Onglet 2", etc.

Y a-t-il moyen d'adapter ça sans revoir toute l'administration de mon plugin ?

Hors ligne

#7 2014-02-22 18:24:57

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Passage 2.4 à 2.6.2

Ah oui, il y a aussi les tabs ^^

Sans revoir l'administration du plugin, je crois que ça va être dur... Je viens de passer par là pour plusieurs de mes plugins, je sais :(

Hors ligne

#8 2014-02-22 18:48:53

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Passage 2.4 à 2.6.2

OK, j'ai revu mon admin, mais je bloque encore sur un point, qui me paraît délicat : j'affiche une liste de billets côté admin, avec possibilité de les éditer si l'on clique sur le titre d'un billet. Pour éditer le billet, j'ajoute un onglet "Édition du billet"... mais il faudrait que cet onglet disparaisse lorsque je clique sur l'onglet "Liste des billets".

Comment peut-on gérer cela avec le nouveau système ?

Hors ligne

#9 2014-02-22 18:54:18

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Passage 2.4 à 2.6.2

Si j'ai bien compris, l'édition du billet n'est pas la même que celle des billets normaux ? Dans ce cas, je pense qu'il faut passer par une page d'édition spécifique pour ces billets (qui n'en sont peut-être pas ?)

Hors ligne

#10 2014-02-22 19:46:30

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Passage 2.4 à 2.6.2

Non. Je me suis mal expliqué.

Je recommence, donc :
. si, dans mon plugin, je suis sur la page d'admin. qui liste les billets, alors il n'y a qu'un seul onglet ;
. si je clique sur le titre d'un billet de la liste, j'ajoute un onglet "Édition du billet" ;
. si je clique sur l'onglet "Liste des billets", il faut que l'onglet "Édition du billet" disparaisse.

Suis-je plus clair ?

Hors ligne

#11 2014-02-22 22:08:25

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Passage 2.4 à 2.6.2

Bon, j'ai contourné le problème : si je suis en mode d'édition de billet, j'affiche un simple lien "Retour à la liste des billets", sans aucun onglet.

Il me reste encore un problème de taille : plus aucun javaScript n'est appliqué à mes listes. J'ai pourtant ceci dans le fichier index.php de mon plugin :

<html>
<head>
<title>Mon plugin</title>
<?php
echo dcPage::jsToolMan();
echo dcPage::jsToolBar();
echo dcPage::jsLoad('index.php?pf=monPlugin/js/_page.js');
echo dcPage::jsPageTabs($default_tab);
echo dcPage::jsDatePicker();
?>
<script type="text/javascript" src="index.php?pf=metadata/post.js"></script><script type="text/javascript">
//<![CDATA[
metaEditor.prototype.text_confirm_remove = 'Êtes vous certain de vouloir supprimer ce %s ?';
metaEditor.prototype.text_add_meta = 'Ajouter un %s à ce billet';
metaEditor.prototype.text_choose = 'Choisir depuis la liste';
metaEditor.prototype.text_more = 'plus';
metaEditor.prototype.text_all = 'tous';
jsToolBar.prototype.elements.tag.title = 'Tag';
//]]>
</script>
<link rel="stylesheet" type="text/css" href="index.php?pf=metadata/style.css" /><script type="text/javascript" src="index.php?pf=pings/post.js"></script>
</head>
<body>

Quelqu'un aurait-il une piste ? D'avance merci pour votre aide !

Dernière modification par fix (2014-02-22 22:09:09)

Hors ligne

#12 2014-02-23 00:36:01

pierrevg
Membre
Inscription : 2005-04-13
Site Web

Re : Passage 2.4 à 2.6.2

Me semble que metadata est à remplacer par tags :
<script type="text/javascript" src="index.php?pf=tags/js/post.js"></script>
...
<link rel="stylesheet" type="text/css" href="index.php?pf=tags/style.css" />

Non ?

Hors ligne

#13 2014-02-23 06:44:24

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Passage 2.4 à 2.6.2

C'est juste.

Mais le problème semble être plus général : j'ai remplacé le contenu du fichier post.php servant à l'édition des billets dans mon plugin par le contenu du fichier dotclear/admin/post.php : le résultat est le même. Autrement dit, aucun javaScript n'est appliqué aux champs d'édition (pas de barre de mise en forme pour le champ Contenu, pas de calendrier pour le champ Date, etc.)

Dernière modification par fix (2014-02-23 06:44:53)

Hors ligne

#14 2014-02-23 09:38:31

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Passage 2.4 à 2.6.2

Je pense malheureusement qu'il va te falloir comparer tes fichiers avec post.php et posts.php pour t'inspirer de leurs fichiers javascript et de leur structure html, mais je ne crois pas que tu puisses les recopier tels quels.

Si tu veux t'en inspirer, le fichier map.php du plugin Cartes Google, qui permet d'éditer un type de billet, pourrait peut-être t'aider...

Hors ligne

#15 2014-02-23 15:14:33

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Passage 2.4 à 2.6.2

Je m'arrache les cheveux depuis ce matin.

Merci pour ton fichier map.php. En partant de ce fichier et en l'adaptant petit à petit à mes besoins, je suis parvenu à créer une page de création de billet satisfaisante, appliquant le javaScript et tout et tout ;) Par contre, en cliquant sur "Enregistrer", je me retrouve avec un magnifique "Precondition failed". Pourquoi ?

Je disposais auparavant de ce code, qui fonctionnait très bien :

<?php $dateecheance = '';
$format = '';
$lang = '';
$titre = '';
$extrait = '';
$contenu = ''; ?>
<form action="<?php echo $this_url; ?>" method="post" id="add_echeance">
	<fieldset>
		<legend><?php echo __('New Event'); ?></legend>
		<div id="entry-sidebar">
			<p><label><?php echo __('Event status:'); echo form::combo('post_status',$status_combo,$statut,'',3,!$can_publish); ?></label></p>
			<p><label class="classic required" title="<?php echo __('Required field'); ?>"><?php echo __('Date Echeance:').'<br />'; echo dcPage::help("agenda", 'dateecheance'); ?> <?php echo form::field('agenda_dateecheance',16,16,$dateecheance,'',3); ?></label></p>	
			<p><label><?php echo __('Text formating:'); echo dcPage::help('post','p_format'); echo form::combo('post_format',$formaters_combo,$format,'',3); ?></label></p>
			<p><label class="classic"><?php echo form::checkbox('post_open_comment',1,$post_open_comment,'',3).' '.__('Accept comments'); ?></label></p>
			<p><label class="classic"><?php echo form::checkbox('post_open_tb',1,$post_open_tb,'',3).' '.__('Accept trackbacks'); ?></label></p>
			<p><label><?php echo __('Page lang:'); echo dcPage::help('post','p_lang'); echo form::field('post_lang',5,255,html::escapeHTML($lang),'',3); ?></label></p>
		</div>
		<div id="entry-content">
			<p class="col"><label class="required" title="<?php echo __('Required field');?>"><?php echo __('Title:'); echo dcPage::help('post','p_title'); echo form::field('post_title',20,255,html::escapeHTML($titre),'maximal',2); ?></label></p>
			<p class="area" id="excerpt-area"><label for="post_excerpt"><?php echo __('Excerpt:'); echo dcPage::help('post','p_excerpt'); ?></label><?php echo form::textarea('post_excerpt',50,5, html::escapeHTML($extrait),'',2); ?></p>
			<p class="area" id="content-area"><label for="post_content"><?php echo __('Content:'); echo dcPage::help('post','p_content'); ?></label><?php echo form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($contenu),'',2); ?></p>
			<p>
				<?php 
				echo form::hidden(array('p'),'agendaPlugin');
				echo $core->formNonce(); 
				?>
				<input type="submit" value="<?php echo __('save');?> (s)" tabindex="4" accesskey="s" name="save" /> 
			</p>
		</div>
	</fieldset>
</form>

En l'adaptant aux exigences de DC 2.6, je suis parvenu à ceci :

<?php
require_once DC_ROOT.'/inc/admin/prepend.php';

dcPage::check('usage,contentadmin');

$dateecheance = '';
$format = '';
$lang = '';
$titre = '';
$extrait = '';
$contenu = '';
$sidebar_items = new ArrayObject(array(
		'status-box' => array(
			'title' => __('Status'),
			'items' => array(
				'post_status' =>
					'<p class="entry-status"><label for="post_status">'.__('Event status').' '.$img_status.'</label>'.
					form::combo('post_status',$status_combo,$statut,'',3,!$can_publish).
					'</p>',
				'post_dt' =>
					'<p><label for="post_dt">'.__('Date Echeance').'</label>'.
					form::field('post_dt',16,16,$dateecheance,'',3).
					'</p>',
				'post_format' =>
					'<div>'.
					'<h5 id="label_format"><label for="post_format" class="classic">'.__('Text formatting').'</label></h5>'.
					'<p>'.form::combo('post_format',$formaters_combo,$format,'',3).
					'</p>'.
					'<p class="format_control control_no_xhtml">'.
					'<a id="convert-xhtml" class="button'.($post_id && $post_format != 'wiki' ? ' hide' : '').'" href="post.php?id='.$post_id.'&amp;xconv=1">'.
					__('Convert to XHTML').'</a></p></div>'))));

	$main_items = new ArrayObject(array(
		"post_title" =>
			'<p class="col">'.
			'<label class="required no-margin bold"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'.
			form::field('post_title',20,255,html::escapeHTML($titre),'maximal',2).
			'</p>',

		"post_excerpt" =>
			'<p class="area" id="excerpt-area"><label for="post_excerpt" class="bold">'.__('Excerpt:').' <span class="form-note">'.
			__('Introduction to the post.').'</span></label> '.
			form::textarea('post_excerpt',50,5, html::escapeHTML($extrait),'',2).
			'</p>',

		"post_content" =>
			'<p class="area" id="content-area"><label class="bold" '.
			'for="post_content">'.__('Description:').'</label> '.
			form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($contenu),'',2).
			'</p>'
		)
	);

	# --BEHAVIOR-- adminPostFormItems
	$core->callBehavior('adminPostFormItems',$main_items,$sidebar_items, isset($post) ? $post : null);

	echo '<div class="multi-part" title="'.__('New Event').'" id="edit-entry">';
	echo '<form action="'.$p_url.'&amp;do=edit" method="post" id="add_echeance">';
	echo '<div id="entry-wrapper">';
	echo '<div id="entry-content"><div class="constrained">';

	foreach ($main_items as $id => $item) {
		echo $item;
	}
	
	$meta =& $GLOBALS['core']->meta;
	
	<input type="submit" value="<?php echo __('save');?> (s)" tabindex="4" accesskey="s" name="save" />

	echo '</div></div>';		// End #entry-content
	echo '</div>';		// End #entry-wrapper

	echo '<div id="entry-sidebar">';

	foreach ($sidebar_items as $id => $c) {
		echo '<div id="'.$id.'" class="sb-box">'.
			'<h4>'.$c['title'].'</h4>';
		foreach ($c['items'] as $e_name=>$e_content) {
			echo $e_content;
		}
		echo '</div>';
	}
	
	echo '</div>';		// End #entry-sidebar
	echo '</form>';
	
	echo '</div>';
?>

Ai-je encore raté quelque chose ? Un petit coup de pouce serait vraiment bienvenu...

Dernière modification par fix (2014-02-23 15:16:02)

Hors ligne

#16 2014-02-23 15:52:42

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Passage 2.4 à 2.6.2

Je crois que le message Precondition failed arrive quand on a oublié le nonce dans le formulaire

Hors ligne

#17 2014-02-23 16:52:00

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Passage 2.4 à 2.6.2

C'était bien ça. Ça n'aura pas été une mince affaire, mais tout semble maintenant fonctionner... grâce à toi : merci beaucoup !

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map