Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2008-01-15 22:54:31

battor77
Membre
Inscription : 2008-01-15

Permettre la création de billets par tout le monde

Bonjour,

J'aimerai que tout le monde puisse poster un billet, avec une publication par activation par un admin dans le pannel.
Est ce possible ?

Merci d'avance.

Hors ligne

#2 2008-01-18 05:17:57

battor77
Membre
Inscription : 2008-01-15

Re : Permettre la création de billets par tout le monde

N'y a t'il pas de pluguin pour ca ?

Hors ligne

#3 2008-01-18 07:41:24

fjandot
Membre
Lieu : Rhone
Inscription : 2005-04-24
Site Web

Re : Permettre la création de billets par tout le monde

A ma connaissance il n'y a pas de plug-in pour cela.

Il y a quelques temps j'avais fait cela :
http://www.dotclear.net/forum/viewtopic.php?id=12916

Je l'ai depuis un peu modifié pour fonctionner sous Dotclear 1.2.7 (voir en fonctionnement ici : http://passemontagne.sortira.info/dotcl … starticle)

C'est un formulaire appelé par le plug-in related.

Attention, il y a peut-être des failles de sécurité et adaptations à faire !!!

Voici le code du fichier connexe visitor-post.php :

<?php
#-----------------------------------------------------------------------------------
# Visitor_Post.php
#-----------------------------------------------------------------------------------
# Formulaire de post ouvert aux utilisateur
#-----------------------------------------------------------------------------------
# Les billets sont saisis à travers un formulaire et ajoutés dans le base de donnée
# de DotClear sous le nom d'un rédacteur prédéfinit.
#
# Les caractéristiques du billet sont définies dans le profil du rédacteur employé
# (format d'édition, adresse mail d'avertissement, etat de publication (en/hors ligne)
# Par défaut, cet utilisateur possède l'ID Robot. C'est modifiable ci dessous.
#
# Je n'ai pas réusssi à utiliser les fichier langue ! donc les textes sont codés en dur !!!
# 
# Have Fun whith this !!!!
#-----------------------------------------------------------------------------------
# Important : L'appel de ce fichier se fait à travers le plugin Related !!!
# Donc le plugin Related est indispensable !!!
#-----------------------------------------------------------------------------------
# Auteur : Franck Jandot.
# Site : http://sortira.info
# Contact : par le forum de DotClear( pseudo fjandot)
#-----------------------------------------------------------------------------------

#-----------------------------------------------------------------------------------
# Eléments à p personnaliser
#-----------------------------------------------------------------------------------
$titre_page = "Rédaction de votre article"; // Titre de la page
$user_id = "Visiteur"; // Id du rédacteur
$autorise_date_billets_passe = FALSE; // Autorise ou non les billets à une date passée
$emplacement_ecrire = '/dotclear/themes/default'; // Emplacement du theme pour utilisation de la wikibar de Kozlika
// La wikibar doit être installée dans le theme, cad :
// Les fichiers wikibar.js et wikihelp.html copiés dans la racine du thème (au même niveau que post.php)

#-----------------------------------------------------------------------------------
# Initialisaions diverses et automatiques. Ne rien modifier ci dessous !!!
#-----------------------------------------------------------------------------------
# L'utilisateur par défaut
$rsUser = $blog->getUser($user_id);
# Les catégories existantes du Blog
$cat_id = (!empty($_GET['cat_id'])) ? $_GET['cat_id'] : $rsUser->f('user_pref_cat');

$rsCat = $blog->getCat();
$arry_cat['----------'] = 0;
while (!$rsCat->EOF())
{
	$arry_cat[$rsCat->f('cat_libelle')] = $rsCat->f('cat_id');
	$rsCat->moveNext();
}
# Tableau des jours 
$arry_dt_d['--'] = 0;
for ($i=1; $i<=31; $i++) {
	$d = sprintf('%02d', $i);
	$arry_dt_d[$d] = $i;
}
# Tableau des mois de l'année
$arry_dt_m['---------'] = 0;
for ($i=1; $i<=12; $i++) {
	$m = sprintf('%02d', $i);
	$arry_dt_m[dt::str('%B', strtotime('2000-'.$m.'-01'))] = $m;
}
# Tableau des années 
$arry_dt_y['--'] = 0;
for ($i=2007; $i<=2010; $i++) {
	$y = sprintf('%04d', $i);
	$arry_dt_y[$y] = $i;
}

#-----------------------------------------------------------------------------------
# Valeurs par défaut
#-----------------------------------------------------------------------------------
$err = '';
$saved = '';
$titre = '';
$titre_url = '';
//$cat_id = 10;
$dt_m = $dt_d = $dt_y = '';
$chapo = $preview_chapo = '';
$content = $preview_content = '';
$notes = '';
$is_editable = true;
$format = $rsUser->f('user_post_format');;
$etat = $rsUser->f('user_post_pub'); 
$open_comment = 1;
$open_tb = 0;
$lang = DC_LANG;
$selected = 0;
$return_link = 'index.php';
$do_trackbacks = 0;
$delta = $rsUser->f('user_delta');;

$email_webmaster = $rsUser->f('user_email');
(!empty($POST['nom_expediteur']))?$p_nom_exp = $_POST['nom_expediteur']:$p_nom_exp='';
(!empty($POST['mail_expediteur']))?$p_mail_exp = $_POST['email_expediteur']:$p_mail_exp='';

$objWiki = new wiki2xhtml();
if (dc_encoding != 'UTF-8') {
	$objWiki->setOpt('active_fix_word_entities',1);
}
#-----------------------------------------------------------------------------------
# Validation des données pour insertion et prévisualisation
#-----------------------------------------------------------------------------------
if (!empty($_POST['preview']) || !empty($_POST['publish'])) 
{
	# Vérification que tous les champs requis soient biens remplis
	if(empty($_POST['nom_expediteur'])) $err .= "* Saisissez votre nom <br />";
	if(empty($_POST['email_expediteur'])) $err .= "* Saisissez votre email <br />";	
	if($_POST['p_cat'] == 0) $err .= "* Choisissez une catégorie <br />";
	if(empty($_POST['p_dt_d']) || $_POST['p_dt_m'] == 0 || empty($_POST['p_dt_y'])) $err .= "* Saisissez une date valide <br />";
	if(empty($_POST['p_titre'])) $err .= "* Saisissez un titre <br />";
	if(empty($_POST['p_content'])) $err .= "* Saisissez votre article <br />";
	# Vérfication de l'email
	if(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*.([a-z]{2,4})$`', $_POST['email_expediteur'])) 
	{
		$err.= "* Votre email ne semble pas valide. <br />";
	}
	# Vérfications de la date du billet
	if(!checkdate($_POST['p_dt_m'],$_POST['p_dt_d'],$_POST['p_dt_y']))
	{
		$err.= "* La date choisie n'existe pas.<br />";
	}
	# vérification de l'existance de l'id redacteur
	if ($blog->checkUser($user_id) === false ) 
	{
		$err .= "Le rédacteur .'$user_id'. n'existe pas !<br />";
	}
	# Vérification de la postérioritée de la date
	if(!$autorise_date_billets_passe)
	{
		$stamp_now = strtotime(date("d F Y"));
		$stamp_art = strtotime($_POST['p_dt_m'].'/'.$_POST['p_dt_d'].'/'.$_POST['p_dt_y']);
		if( $stamp_art < $stamp_now)
		{
			$err .= "* La date saisie est révolue. <br />";
		}
	}
}
# Valeurs pour la prévisualisation, la création ou la modification d'un billet
if (!empty($_POST['preview']) || !empty($_POST['publish']))
{
	$p_nom_exp = $_POST['nom_expediteur'];
  $p_mail_exp = $_POST['email_expediteur'];
	$titre = $_POST['p_titre'];
	$titre_url = $blog->str2url($titre);
	$cat_id = $_POST['p_cat'];
	$content = $_POST['p_content'];
	$notes = $_POST['p_notes'];
	$chapo = $_POST['p_chapo'];
	$dt_y = (string) sprintf('%04d',$_POST['p_dt_y']);
	$dt_m = (string) sprintf('%02d',$_POST['p_dt_m']);
	$dt_d = (string) sprintf('%02d',$_POST['p_dt_d']);
	$dt_h = (string) sprintf('%02d',0);
	$dt_i = (string) sprintf('%02d',0);
	$dt_s = (string) sprintf('%02d',0);
	$new_date = strtotime($dt_y.'-'.$dt_m.'-'.$dt_d.' '.$dt_h.':'.$dt_i.':'.$dt_s);
	
	if (strpos($lang,'fr') === 0) {
		$objWiki->setOpt('active_fr_syntax',1);
	}
	
	if (!empty($_POST['transform'])) {
		$format = 'html';
		$content = $objWiki->transform($content);
		$chapo = $objWiki->transform($chapo);
	}
	
	if ($format == 'wiki') {
		$preview_content = $objWiki->transform($content);
		$preview_chapo = $objWiki->transform($chapo);
	} else {
		$preview_content = $content;
		$preview_chapo = $chapo;
	}
}

else{
  # définition de la date du jour par défaut
  $dt_y = date('Y');
  $dt_m = date('m');
  $dt_d = date('d');
}

#-----------------------------------------------------------------------------------
# Gestion de l'insertion du billet
#-----------------------------------------------------------------------------------
if (!empty($_POST['publish']) && empty($err)) 
{
	# Sauvegarde dans la Base de donnée
	if (($post_id = $blog->addPost($user_id,$titre,$titre_url,$chapo,$content,
	$notes,$cat_id,$format,$etat,$open_comment,$open_tb,$lang,$selected,$delta)) !== false) {
		# Modification de la date 
		if ($blog->updPost($post_id,$titre,$titre_url,$chapo,$content,$notes,$cat_id,
			$format,$etat,$open_comment,$open_tb,$new_date,$lang,$selected,
			$_SESSION['sess_user_delta']) !== false )
		{
		$saved = 'ok';
		}
		
	} 
	if($saved != 'ok') 
	{
		$err .= "* Une erreur est survenue lors de l'enregistrement, veuiller réésayer. <br />" ;
	}
		
	
}
#-----------------------------------------------------------------------------------
# Affichage du message de confirmation de l'enregistrement
#-----------------------------------------------------------------------------------
if ($saved == 'ok')
{
	# Mail au contact mensionné dans le mail du rédacteur utilisé
	$rsCat = $blog->getCat($cat_id);
	@mail($email_webmaster, "Billet no ".$post_id." a valider", "Le billet \"".$titre."\" est a valider dans la categorie \"".$rsCat->f('cat_libelle')."\".\nhttp://passemontagne.sortira.info/dotclear/poster.php?post_id=".$post_id."\n\n".
	"L'auteur du billet est : ".$_POST['nom_expediteur']." (".
	$_POST['email_expediteur'].")\n\nCOMMENTAIRES : \n".$_POST['p_notes']);
	
	# Mail au visiteur
	// Non implémenté mais vous pouvez le faire ici si vous le souhaitez.
	
	# Page de confirmation 
	?>
	<div class="post">
	<h2 class="post-title"><?php echo $titre_page; ?></h2>
	<p>Votre article a bien été enregistré.<br />
	Il sera mis en ligne dans les 48 heures, lorsque nous aurons vérifié son contenu.</p>
	<p>
	Nous vous remercions de votre collaboration.
	</p>
	</div>
	<?php
}
#-----------------------------------------------------------------------------------
# Affichage par défaut de la page (formulaire de saisie)
#-----------------------------------------------------------------------------------
else 
{
?>
	<div class="post">
	<h2 class="post-title"><?php echo $titre_page; ?></h2>
	<?php
	# Si une prévisualisation est demandée et qu'il n'y a pas d'erreur
	if(!empty($_POST['preview']) && empty($err))
	{
		echo '<div class="preview">';
		printf('Expéditeur : <a href="mailto:%s">%s</a><br />',$_POST['email_expediteur'],$_POST['nom_expediteur']);
		echo '<hr class="thin"></div>';
		
		$preview_titre = htmlspecialchars($titre);
		$preview_titre = $titre;
		
		echo '<div id="preview">'.
			'<h2 class="post-title">'.$titre.'</h2>'.
			((trim($preview_chapo) != '') ? '<div class="post-chapo">'.$preview_chapo.'</div>' : '').
			'<div class="post-content">'.$preview_content.'</div></div>';
	}
	# Si une erreur existe, on affiche 
	if(!empty($err))
	{
		printf('<div class="warning"><h2 class="warning">Erreur(s) :</h2><p class="warning">%s</p></div>', $err);
	}
	
	?>
	<div>
	<form method="post" accept-charset="utf-8" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
	<!-- Informations (minimalistes) sur l'auteur du billet pour les confirmations par mail -->
	<fieldset class="contact">
		<p class="form-help"><a href="http://sms.informatiquefrance.com/" onclick="window.open(this.href,'popup'); return false;"><img src="<?php dcInfo('theme'); ?>/img/sms_11.png" alt="Stop au langage SMS et aux fautes volontaires sur internet !" title="Stop au langage SMS et aux fautes volontaires sur internet !" /></a><br />Utilisez la <a href="<?php dcInfo('theme'); ?>/wikihelp.html" onclick="window.open(this.href,'popup','location=0,directories=0,status=0,scrollbars=1,resizable=1,copyhistory=0,menuBar=0,width=380,height=380'); return false;">Syntaxe Wiki</a> pour la mise en forme de votre article.<br />Le code HTML sera affiché comme du texte.<br />Les adresses internet seront converties automatiquement.</p>
		<?php
		echo 
		'<p><br /><label for="nom_expediteur"><strong>Votre nom :</strong></label><br />'
		.form::field('nom_expediteur',30,255,htmlspecialchars($p_nom_exp, ENT_QUOTES),1).'</p>';
		# email
		echo 
		'<p><label for="email_expediteur"><strong>Votre email :</strong></label><br />'
		.form::field('email_expediteur',30,255,$p_mail_exp,2).'</p>';
		?>
	</fieldset> 
	<!-- Informations concernant le message -->
	<fieldset class="contact">
		<?php
		# Catégorie
		echo 
		'<p style="display:none"><label for="p_cat"><strong>Catégorie de l\'article : </strong></label>'
		.form::combo('p_cat',$arry_cat,$cat_id,'','',3).'</p>';
		#Date
		echo
		'<p><label class="inline" for="p_dt_d"><strong>Date : </strong></label>'.
		
		form::combo('p_dt_d',$arry_dt_d,$dt_d,'','',5).' '.
		form::combo('p_dt_m',$arry_dt_m,$dt_m,'','',5).' '.
		form::combo('p_dt_y',$arry_dt_y,$dt_y,'','',6).' </p>';
		# Bloc-note transformé en commentaire
		echo
		'<p><label for="p_notes">Commentaires pour le Webmaster (non affiché)</label><br />'.
		form::textArea('p_notes',45,6,htmlspecialchars($notes),7,'class="max"').'</p>';
		?>
	</fieldset>
	<!-- Maintenant le message -->
	<fieldset class="contact">
		<?php
		# titre
		echo
		'<p><label for="p_titre"><strong>Titre de l\'article :</strong></label><br />'.
		form::field('p_titre',50,255,$titre,8,'class="max"').'</p>';
		# chapo
		echo
		'<p><label for="p_chapo">Introduction (optionnel) : </label><br />'.
		form::textArea('p_chapo',45,4,htmlspecialchars($chapo),9,'class="max"').'</p>';
		# contenu 
		echo
		'<p id="message">'.
		'<label for="p_content"><strong>Contenu :</strong></label>'.
		form::textArea('p_content',45,10,
		htmlspecialchars($content),10,'class="max"').'</p>';
		
		echo
		'<p style="display:none"><label for="p_format">'.
		__('Format').'</label><br /> '.form::combo('p_format',array('HTML'=>'html','Wiki'=>'wiki'),$format,'','',2).'</p>';
		
		# Toolbar
		echo
		//SmiliesManager::smSmiliesToolbar('p_content').
		'<script type="text/javascript" src="'.$emplacement_ecrire.'/wikibar.js"></script>'.
		'<script type="text/javascript">'.
		"if (document.getElementById) {
			var tb = new dcWikiBar(document.getElementById('p_content'),'".$emplacement_ecrire."/img/wikibtns/');
			tb.btStrong('".str_replace("'","\'",__('Strong emphasis'))."');
			tb.btEm('".str_replace("'","\'",__('Emphasis'))."');
			tb.btIns('".str_replace("'","\'",__('Inserted'))."');
			tb.btDel('".str_replace("'","\'",__('Deleted'))."');
			tb.addSpace(10);
			tb.btQ('".str_replace("'","\'",__('Inline quote'))."');
			tb.btCode('".str_replace("'","\'",__('Code'))."');
			tb.btBr('".str_replace("'","\'",__('Line break'))."');
			tb.addSpace(10);
			tb.btBquote('".str_replace("'","\'",__('Blockquote'))."');
			tb.btPre('".str_replace("'","\'",__('Preformated text'))."');
			tb.btList('".str_replace("'","\'",__('Unordered list'))."','ul');
			tb.btList('".str_replace("'","\'",__('Ordered list'))."','ol');
			tb.addSpace(10);
			tb.btLink('".str_replace("'","\'",__('Link'))."',
				'".str_replace("'","\'",__('URL?'))."',
				'".str_replace("'","\'",__('Language?'))."',
				'".DC_LANG."');
			
			tb.draw('".str_replace("'","\'",'')."');
		}
		</script>";
		# Fin toolbar

		?>
	</fieldset>
	<!-- Boutons de soumission -->
	<?php
		echo 
		'<p>'.
		'<input name="preview" type="submit" class="submit" '.
		'value="Aperçu" accesskey="a" tabindex="11" />  ';
		
		if(!empty($_POST['preview']) && empty($err))
		{
		echo
		'<input name="publish" type="submit" class="submit" '.
		'value="Envoyer" accesskey="s" tabindex="12" />';
		}
		
		echo
		'</p>';
	?>
	</form>
	</div>
	</div>
	<?php
}

?>

Plus de réponse concernant ModifTri ou DefaultCat sans le rapport du plug AskingHelp !

Hors ligne

#4 2008-01-20 15:03:49

battor77
Membre
Inscription : 2008-01-15

Re : Permettre la création de billets par tout le monde

Merci :)

Hors ligne

#5 2008-01-26 10:37:15

seboun597
Membre
Inscription : 2007-09-14

Re : Permettre la création de billets par tout le monde

Et pour un DC2 il faudrait modifier quoi ? Je ne m'y connait pas trop, mais je veux bien mettre les mains dedans si je savais quoi faire pour l'adapter. Merci de votre aide.

Hors ligne

#6 2008-01-26 23:21:29

fjandot
Membre
Lieu : Rhone
Inscription : 2005-04-24
Site Web

Re : Permettre la création de billets par tout le monde

il "suffit" de voir comment sont créés les billets dans le DC2 et de reprendre le code en automatisant (rédacteur autoimatique, catégorie, etc.) et en contrôlant le plus possible afin de limiter au maximum les portes ouvertes ... Simple non ??


Plus de réponse concernant ModifTri ou DefaultCat sans le rapport du plug AskingHelp !

Hors ligne

#7 2008-01-27 01:25:04

seboun597
Membre
Inscription : 2007-09-14

Re : Permettre la création de billets par tout le monde

heu non, enfin pas pour moi je ne m'y connais pas assez, mais je vais essayer de déchiffrer ;) Merci quand même.

Hors ligne

#8 2010-07-17 16:52:11

fpicaut
Membre
Inscription : 2004-11-17

Re : Permettre la création de billets par tout le monde

Bonjour,

Je me permets de relancer ce sujet.
Est-ce quelqu'un à trouvé une solution ?

Merci,
Fabrice.

Hors ligne

#9 2010-07-17 17:00:18

pierrevg
Membre
Inscription : 2005-04-13
Site Web

Re : Permettre la création de billets par tout le monde

Bonjour et bienvenue,

Tu veux bien nous préciser la version de dotclear que tu utilises ?
Ceci étant, dc1 n'a plus de support depuis un an et on va te conseiller vivement de migrer vers dc2...

Hors ligne

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

Pied de page des forums

Sites map