Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 Re : [dc2] Questions et aide » Choisir un template par catégorie ? » 2016-04-30 14:45:25

Philippe a écrit :

C'est possible en copiant le code suivant dans le fichier _public.php de ton thème :

#Bricoland code for category and posts templates according to cat_id

$core->url->register('category','category','^category/(.+)$',array('myURLHandlers','category'));
$core->url->register('post','post','^post/(.+)$',array('myURLHandlers','post'));
$core->url->register('preview','preview','^preview/(.+)$',array('myURLHandlers','preview'));

class myURLHandlers extends dcUrlHandlers
{
	public static function category($args)
	{
		$_ctx =& $GLOBALS['_ctx'];
		$core =& $GLOBALS['core'];
		
		$n = self::getPageNumber($args);
		
		if ($args == '' && !$n) {
			self::p404();
		}
		
		$params['cat_url'] = $args;
		$params['post_type'] = 'post';
		
		$_ctx->categories = $core->blog->getCategories($params);
		
		if ($_ctx->categories->isEmpty()) {
			self::p404();
		} else {
			if ($n) {
				$GLOBALS['_page_number'] = $n;
			}
			$tpl = 'category-'.$_ctx->categories->cat_id.'.html';
			if (!$core->tpl->getFilePath($tpl)) {
				$tpl = 'category.html';
			}
			self::serveDocument($tpl);
			exit;
		}
	}
	
	public static function post($args)
	{
		if ($args == '') {
			self::p404();
		}
		
		$_ctx =& $GLOBALS['_ctx'];
		$core =& $GLOBALS['core'];
		
		$core->blog->withoutPassword(false);
		
		$params = new ArrayObject();
		$params['post_url'] = $args;
		
		$_ctx->posts = $core->blog->getPosts($params);
		
		$_ctx->comment_preview = new ArrayObject();
		$_ctx->comment_preview['content'] = '';
		$_ctx->comment_preview['rawcontent'] = '';
		$_ctx->comment_preview['name'] = '';
		$_ctx->comment_preview['mail'] = '';
		$_ctx->comment_preview['site'] = '';
		$_ctx->comment_preview['preview'] = false;
		$_ctx->comment_preview['remember'] = false;
		
		$core->blog->withoutPassword(true);
		
		
		if ($_ctx->posts->isEmpty())
		{
			# No entry
			self::p404();
		}
		
		$post_id = $_ctx->posts->post_id;
		$post_password = $_ctx->posts->post_password;
		
		# Password protected entry
		if ($post_password != '')
		{
			# Get passwords cookie
			if (isset($_COOKIE['dc_passwd'])) {
				$pwd_cookie = unserialize($_COOKIE['dc_passwd']);
			} else {
				$pwd_cookie = array();
			}
			
			# Check for match
			if ((!empty($_POST['password']) && $_POST['password'] == $post_password)
			|| (isset($pwd_cookie[$post_id]) && $pwd_cookie[$post_id] == $post_password))
			{
				$pwd_cookie[$post_id] = $post_password;
				setcookie('dc_passwd',serialize($pwd_cookie),0,'/');
			}
			else
			{
				self::serveDocument('password-form.html','text/html',false);
				exit;
			}
		}
		
		$post_comment =
			isset($_POST['c_name']) && isset($_POST['c_mail']) &&
			isset($_POST['c_site']) && isset($_POST['c_content']) &&
			$_ctx->posts->commentsActive();
		
		# Posting a comment
		if ($post_comment)
		{
			# Spam trap
			if (!empty($_POST['f_mail'])) {
				http::head(412,'Precondition Failed');
				header('Content-Type: text/plain');
				echo "So Long, and Thanks For All the Fish";
				exit;
			}
			
			$name = $_POST['c_name'];
			$mail = $_POST['c_mail'];
			$site = $_POST['c_site'];
			$content = $_POST['c_content'];
			$preview = !empty($_POST['preview']);
			
			if ($content != '')
			{
				if ($core->blog->settings->wiki_comments) {
					$core->initWikiComment();
				} else {
					$core->initWikiSimpleComment();
				}
				$content = $core->wikiTransform($content);
				$content = $core->HTMLfilter($content);
			}
			
			$_ctx->comment_preview['content'] = $content;
			$_ctx->comment_preview['rawcontent'] = $_POST['c_content'];
			$_ctx->comment_preview['name'] = $name;
			$_ctx->comment_preview['mail'] = $mail;
			$_ctx->comment_preview['site'] = $site;
			
			if ($preview)
			{
				$_ctx->comment_preview['preview'] = true;
			}
			else
			{
				# Post the comment
				$cur = $core->con->openCursor($core->prefix.'comment');
				$cur->comment_author = $name;
				$cur->comment_site = html::clean($site);
				$cur->comment_email = html::clean($mail);
				$cur->comment_content = $content;
				$cur->post_id = $_ctx->posts->post_id;
				$cur->comment_status = $core->blog->settings->comments_pub ? 1 : -1;
				$cur->comment_ip = http::realIP();
				
				$redir = $_ctx->posts->getURL();
				$redir .= strpos($redir,'?') !== false ? '&' : '?';
				
				try
				{
					if (!text::isEmail($cur->comment_email)) {
						throw new Exception(__('You must provide a valid email address.'));
					}

					# --BEHAVIOR-- publicBeforeCommentCreate
					$core->callBehavior('publicBeforeCommentCreate',$cur);
					if ($cur->post_id) {					
						$comment_id = $core->blog->addComment($cur);
					
						# --BEHAVIOR-- publicAfterCommentCreate
						$core->callBehavior('publicAfterCommentCreate',$cur,$comment_id);
					}
					
					if ($cur->comment_status == 1) {
						$redir_arg = 'pub=1';
					} else {
						$redir_arg = 'pub=0';
					}
					
					header('Location: '.$redir.$redir_arg);
					exit;
				}
				catch (Exception $e)
				{
					$_ctx->form_error = $e->getMessage();
					$_ctx->form_error;
				}
			}
		}
		
		# The entry
		$tpl = 'post.html';
		if ($_ctx->posts->cat_id) {
			$alt_tpl = 'post-cat-'.strtolower($_ctx->posts->cat_id).'.html';
			if ($core->tpl->getFilePath($alt_tpl)) {
				$tpl = $alt_tpl;
			}
		}
		self::serveDocument($tpl);
		exit;
	}
	
	public static function preview($args)
	{
		$core = $GLOBALS['core'];
		if (!preg_match('#^(.+?)/([0-9a-z]{40})/(.+?)$#',$args,$m)) {
			self::p404();
		}
		$user_id = $m[1];
		$user_key = $m[2];
		$post_url = $m[3];
		if (!$core->auth->checkUser($user_id,null,$user_key)) {
			self::p404();
		}
		
		self::post($post_url);
		exit;
	}
}

Ensuite, il faut copier le fichier category.html et le nommer category-x.html où x est l'identifiant de la catégorie. Ça marche aussi pour post-x.html.

Dans ces fichiers, tu peux traiter ensuite la catégorie (ou le billet appartenant à la catégorie) comme tu le souhaites

Testé et approuvé.
Merci !

#3 [dc2] Questions et aide » Choisir un template par catégorie ? » 2016-04-30 07:38:26

dme69
Réponses : 7

Bonjour,

Est-il possible de définir des affichages différents pour les pages de catégories : par exemple, une catégorie sera affichée sous forme de tableau, une autre avec les résumés sur 2 colonnes, une autre, avec les billets complets, et les autres avec le Template par défaut.

Il y a bien la balise tpl:CategoryIf mais on ne peut mettre qu'une seule url ; avec des {{tpl:else}} imbriqués mais ça peut vite devenir illisible.

Dominique.

#4 Re : [dc2] Questions et aide » statistiques sur l'utilisation de dotclear » 2016-04-29 16:36:43

Je sais bien que je devrais arrêter de me prendre la tête mais c'est parce que j'aime bien Drupal aussi (et les deux ne jouent pas dans la même cour).
Je sais aussi que la vérité d'un jour n'est pas celle du lendemain, etc. :-)

Mais voilà, un petit besoin d'être rassuré ...

#5 [dc2] Questions et aide » statistiques sur l'utilisation de dotclear » 2016-04-28 19:37:38

dme69
Réponses : 4

Bonsoir,
Je n'arrête pas de tourner autour de dotclear : je m'éloigner puis je reviens, j'aime puis je me dis que c'est pas ce que je veux ...
J'ai travaillé avec et j'utilise régulièrement drupal (et maintenant backdropcms). Et du coup je trouve que dotclear n'est pas aussi puissant. Mais je le trouve vraiment agréable à utiliser.
Et puis je sais que je ne pourrai sans doute jamais l'utiliser au boulot.
Comme vous le voyez je me pose bcp de questions là où il ne faut pas sans doute :-)

Je crois que je suis inquiet sur la pérennité du projet (je sais qu'il a qq années derrière lui). Je crois que l'équipe de dev est petite ( 1 seule personne ?).

Est-ce qu'il existe des stats sur l'utilisation de dotclear dans le vrai monde ?
Je pense que si je me lance réellement je ferai en sorte de participer plus activement à la communauté.
Et puis c'est un projet français et dans le monde du web c'est bien !

Voilà. Un peu décousu et sans doute inutile mais ...

Bonne soirée.
Dominique.

#6 Re : [dc2] Plugins » [Cartes Google] support et discussion » 2015-09-06 16:17:57

J'ai réinstallé dotclear puis le module et maintenant, cela semble bien fonctionner ?
Je crois que la seule vraie différence est que la première fois la base de données était sqlite.

Bon en tout cas, ça semble bien se passer.

Merci pour votre aide.

#7 Re : [dc2] Plugins » [Cartes Google] support et discussion » 2015-09-06 08:36:25

Bonjour,
Merci pour vos réponses (matinales :-) ).
C'est vrai que je n'ai pas donné toutes les infos :
- dernière version de Wamp (2.5)
- PHP 5.5.12
- dotclear 2.8
- le thème par défaut
- jquery : 1.4.2 ou 1.11.3 = même combat

Ce qui est bizarre aussi, c'est que dans l'admin sur la page d'édition du billet, le marker apparait bien.

J'espère que l'un de vous va m'aiguiller du bon côté pour résoudre ce soucis parce que je trouve ce plugin super pratique et j'aime bien son fonctionnement.

Dominique.

#8 Re : [dc2] Plugins » [Cartes Google] support et discussion » 2015-09-05 21:43:51

Bonjour,

Avec la dernière version de dotclear et du plugin, à chaque fois que j'ajoute un marker sur un élément de carte, j'ai un gros et vilain message d'erreur sur mon billet

( ! ) Notice: Undefined offset: 1 in C:\wamp\www\dotclear\plugins\myGmaps\_public.php on line 222
Call Stack
#    Time    Memory    Function    Location
1    0.0005    247240    {main}( )    ..\index.php:0
2    0.0013    299264    require( 'C:\wamp\www\dotclear\inc\public\prepend.php' )    ..\index.php:22
3    1.5180    7590040    dcUrlHandlers->getDocument( )    ..\prepend.php:156
4    1.5182    7595032    urlHandler->callHandler( )    ..\lib.urlhandlers.php:187
5    1.5182    7595080    call_user_func:{C:\wamp\www\dotclear\inc\libs\clearbricks\url.handler\class.url.handler.php:166} ( )    ..\class.url.handler.php:166
6    1.5190    7596672    dcUrlHandlers::post( )    ..\class.url.handler.php:166
....

Dans la console de debug, j'ai : SyntaxError: expected expression, got ','
quand je regarde le script concerné (depuis la console) :
marker = new google.maps.Marker({
    icon : "",
    position: new google.maps.LatLng(,),
    title: title_3,
    map: map_1
});
le marker ne semble pas être géolocalisé ?

Si je ne mets pas de marker, la carte s'affiche.

Je suis en local avec Wamp.

Dominique.

#9 Re : [dc2] Questions et aide » Question polémique ou pas ... Dotclear pour remplacer Drupal » 2014-04-30 09:08:53

Bon, je vais regarder tout ça durant ce mois de Mai (un peu de temps libre avec les ponts).

J'espère que je vais arriver à faire ce que je veux parce que même si j'adore travailler sur Drupal, j'aimerais bien participer à un projet sympa et dotclear me semble pas mal :-)

Et même si dans le titre de la discussion, je parle de polémique, je suis surtout plein d'interrogations et d'envie de "savoir" ...

Encore merci pour vos retours. Je ferai le mien une fois le tour du propriétaire fait. Et si je me sens bien ici, je pense que je travaillerai surtout autour des thèmes.

#10 Re : [dc2] Questions et aide » Question polémique ou pas ... Dotclear pour remplacer Drupal » 2014-04-29 21:27:04

Merci pour vos retours.
Quand je parlais sécurité, je ne voulais énerver personne ; je crois que j'ai vu ça en cherchant sur internet. Et c'est d'ailleurs pour ça que j'ai posé la question.
Un moteur de blog, c'est bien ; c'est même très bien d'ailleurs.
Pour les mises à jours, même si je suis complètement d'accord sur le fait qu'il vaut mieux de la qualité que de la quantité, il est important de montrer que les choses avancent (le dernier message date de janvier).

Ce que je pense déceler de mon premier regard sur dotclear et de vos réponses, c'est que dotclear fait des blogs mais que je ne pourrai pas faire une application Web avec : RSE (avec gestion des groupes utilisateurs, droits complexes en lecture/ecriture dans ces groupes, forum, wiki, ...), gestion (simplifiée) du personnel (gestion des congés avec workflow par exemple), GED, ...

Mais je pourrai faire des blogs et des sites de présentation.

Le mieux c'est que je plonge dans dotclear et que j'essaye un peu mieux.

Mais encore merci pour vos retours.
Dominique.

#11 [dc2] Questions et aide » Question polémique ou pas ... Dotclear pour remplacer Drupal » 2014-04-29 19:37:25

dme69
Réponses : 7

Bonsoir,

J'utilise Drupal depuis maintenant 6 ans et je suis en pleine crise de la quarantaine et je veux étudier la possibilité de mettre en avant les produits français face aux grosses cylindrées étrangères.
J'ai donc plusieurs petites questions sur Dotclear :
- je pense que Dotclear ne peut pas lutter contre Drupal sur l'étendu des possibilités et la création d'applications web complexes (comme un  Réseau Social d'Entreprise). Est-ce que je me trompe complètement ?
- En terme de mise à jour, où en est dotclear ? Je crois savoir que l'équipe est petite et du coup il n'est pas trop possible d'avancer vite ?
- Je crois qu'à une époque dotclear avait une mauvaise réputation en terme de sécurité ? Justifiée ? Où en est-on ?
- Est-ce qu'il est possible de faire (avec un plugin ? ) un formulaire pour faire des quizz (ou autre dans le genre) ?
- Je ne suis pas un développeur pur. Comment aider ?
- Est-ce qu'il peut exister un écosystème dotclear dans le milieu professionnel ?

J'aurais beaucoup de questions à poser mais ... beaucoup trop et pas très intéressantes.

Par avance merci pour votre aide.
Dominique.

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

Pied de page des forums

Propulsé par FluxBB

Sites map