Finalement le basculement depuis FluxBB vers Flarum pour le forum Dotclear ne sera pas envisagé — malgré tout le bien que j’en pense — parce que les pré-requis de Flarum ne sont pas remplis sur l’actuel serveur, d’une part, et que d’autre part les finances de l’association ne nous permettent pas de louer un second serveur. Rien de grave cependant, j’ai bien joué avec Flarum et maintenant l’intérêt est un peu retombé.
Me voilà de nouveau en train de jouer avec Ajax — oui, je sais, c’est une vieille techno, surtout comparée à ce qu’on fait maintenant, mais bon — pour lever les blocages consécutifs à un serveur aux abonnés absent une fois sur deux ; ce même serveur qu’on a pas les moyens de remplacer. Le contrôle de mise à jour de Dotclear est fait dorénavant de façon asynchrone et ne bloque plus la page d’accueil de l’administration.
La mécanique pour faire ça est super simple : vous prenez le bout de code PHP qui faisait le job avant et vous le collez dans une fonction serveur (REST) qui sera appelée par un script javascript inséré dans la page chargée, ici la page d’accueil de l’administration.
Comme le boulot fait par le javascript n’est pas bloquant, c’est-à-dire que le reste de la page est entièrement fonctionnel pendant qu’il bosse ou attend la réponse du serveur, plus rien ne bloque.
En détail, le code javascript dans la page d’accueil est celui-ci :
// check if core update available
var params = {
f: 'checkCoreUpdate',
xd_check: dotclear.nonce
};
$.post('services.php',params,function(data) {
if ($('rsp[status=failed]',data).length > 0) {
// Silently fail as a forced checked my be done with admin update page
} else {
if ($('rsp>update',data).attr('check') == 1) {
// Something has to be displayed
xml = $('rsp>update',data).attr('ret');
$('#content h2').after(xml);
}
}
});
Et le code appelé par le code javascript est celui-là :
public static function checkCoreUpdate($core,$get)
{
# Dotclear updates notifications
$rsp = new xmlTag('update');
$rsp->check = false;
$ret = __('Dotclear update not available');
if ($core->auth->isSuperAdmin() && !DC_NOT_UPDATE && is_readable(DC_DIGESTS) &&
!$core->auth->user_prefs->dashboard->nodcupdate)
{
$updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions');
$new_v = $updater->check(DC_VERSION);
$version_info = $new_v ? $updater->getInfoURL() : '';
if ($updater->getNotify() && $new_v) {
// Check PHP version required
if (version_compare(phpversion(),$updater->getPHPVersion()) >= 0) {
$ret =
'<div class="dc-update"><h3>'.sprintf(__('Dotclear %s is available!'),$new_v).'</h3> '.
'<p><a class="button submit" href="'.$core->adminurl->get("admin.update").'">'.sprintf(__('Upgrade now'),$new_v).'</a> '.
'<a class="button" href="'.$core->adminurl->get("admin.update", array('hide_msg' => 1)).'">'.__('Remind me later').'</a>'.
($version_info ? ' </p>'.
'<p class="updt-info"><a href="'.$version_info.'">'.__('Information about this version').'</a>' : '').'</p>'.
'</div>';
} else {
$ret = '<p class="info">'.
sprintf(__('A new version of Dotclear is available but needs PHP version ≥ %s, your\'s is currently %s'),
$updater->getPHPVersion(),phpversion()).
'</p>';
}
$rsp->check = true;
} else {
if (version_compare(phpversion(),DC_NEXT_REQUIRED_PHP,'<')) {
$ret = '<p class="info">'.
sprintf(__('The next versions of Dotclear will not support PHP version < %s, your\'s is currently %s'),
DC_NEXT_REQUIRED_PHP,phpversion()).
'</p>';
$rsp->check = true;
}
}
}
$rsp->ret = $ret;
return $rsp;
}
Vous noterez que si quelque chose se passe mal, ou ne se passe pas du tout, ou encore si aucune mise à jour n’est disponible ou si vous avez une version de PHP d’une version qui sera supportée par la prochaine version majeure de Dotclear eh bien aucun message ne sera affiché, soit dans la majorité des cas, en fait. Parce qu’en plus vous pourriez très bien ne pas être super-admin, ou si c’est le cas avoir désactivé dans vos préférences utilisateur le contrôle de mise à jour.
Quoi qu’il en soit, si vous êtes super-admin vous avez toujours la possibilité de faire un contrôle direct en utilisant l’entrée de menu correspondante (« Mise à jour » dans le groupe « Réglages système »).
Il me reste à faire de même pour la récupération des nouvelles de Dotclear, ce que je coderai ce week-end ou en début de semaine prochaine, et on sera enfin tranquille de ce point de vue ! Pour info, ça sera dans la future 2.13 de Dotclear.
En fait on pourrait même pousser plus loin ce principe, à savoir utiliser du javascript côté client (sur vos navigateurs) et des fonctions serveurs en PHP pour toute l’administration ; c’est d’ailleurs très exactement ce que fait Flarum, qui pousse même le bouchon jusqu’à gérer aussi la partie publique de cette manière (avec tout de même un mode dégradé basique si javascript est désactivé). C’est tout l’intérêt d’avoir maintenant des navigateurs qui intègrent du javascript efficace et qui ne nuit pas à l’accessibilité, alors que ce n’était pas le cas au début des années 2000 où le javascript tenait plus de la cerise sur le klafoutis qu’autre chose !
Ah mais au fait, maintenant que j’y pense, je n’avais pas dit que je sortirai une 2.12.2 ces prochains jours ? Faut que j’aille voir ce qu’il reste potentiellement à y mettre… À moins que j’aille jouer avec mon nouveau joujou pour développer mes photos en attente :-)
Mon projet préféré ? C’est le prochain.
Frank
1 De mirovinben -
Combien ça coûte un serveur kivabien pour remplacer le kivapabien ?
2 De Franck -
D’un point de vue strictement financier, environ 150€ par an, sans compter le temps à passer dessus pour migrer l’ensemble, mettre à jour ce qui doit l’être (ou plutôt ce qui peut l’être), et éventuellement migrer sur des nouvelles solutions comme Flarum, soit pas mal de temps, ce que personne — à ma connaissance — n’a.
Pour être tout à fait transparent côté finances, on [l’association Dotclear] reçoit environ 460€ de dons/cotisations par an (de mémoire, sachant que kozlika et moi-même participons pour la quasi moitié de ça), et un serveur de plus ferait monter notre facture annuelle à plus de 500€.
Par ailleurs je dépense aussi 150€ par an pour un autre serveur qui héberge l’instance Mastodon Café des blogueurs, sans compter le serveur qui héberge ce blog (et d’autres)… Je ne compte donc pas, même si ça m’avait un temps effleuré l’esprit, dépenser plus sur ce poste.
Il faut aussi tenir compte du fait que ce sont des dépenses récurrentes, et que si on lance un appel de fond, pour peu qu’il soit suivi, il ne vaudra probablement que pour le très court-terme ; il est difficile de demander aux gens de s’engager durablement, ce que je comprends tout à fait.
3 De mirovinben -
Je ne demandais pas ça pour te pousser à dépenser plus. Par contre, moi…
Le seul hic est, en effet, la pérenisation de ce genre de don pour les années suivantes… Et la surcharge de travail (paramétrage, migration et maintenance) que ça représente pour celui/celle qui voudra s’y coller.
4 De Franck -
Et je ne parlais pas de finances pour pousser à faire donner plus. On a une rentrée régulière, celle que j’ai mentionnée plus haut, et je pense qu’il est sage de ne pas prévoir qu’elle s’accroisse dans les années à venir. Du coup notre budget doit en tenir compte, c’est tout.
Je n’ai pas l’intention de faire quoi que ce soit dans ce domaine, surtout pour un projet qui n’est plus dans l’air du temps et qui a fini depuis longtemps d’être sexy. On va juste faire avec ce qu’on a et baste. Aucune importance.
5 De i_love_dc -
De quoi donc, qui n’est plus dans l’air du temps ?
6 De Franck -
Faut être réaliste i_love_dc ! Il a été précurseur et même copié, mais ce n’est plus cas depuis quelques années.
7 De i_love_dc -
je suis en parti d’accord avec toi Franck.
Dotclear est toujours compétitif en matière de SEO, suffit de changer quelques balises pour être dans les “standards du SEO et rentrer dans les clous”.
En ce qui concerne sont admin, sa sécurité, son ergonomie, sa rapidité…
C’est toujours un vrai régale.
Par contre, la ou je te rejoint, c’est sur le manque de communauté, de main d’œuvre, codeur, designeur, themeur, plugineur.
Dotclear à TOUJOURS tout d’un cms digne de ce nom.
Il lui manque juste quelque plugins et thème “à la mode” pour être au TOP.