Forum PHPBoost

   Le 18/01/12 à 12h01 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 17/01/12
Messages: 8
Bonjour,

Je suis actuellement en train de coder un chat ajax. Tout ce passe bien, mais étant nouveau dans l'univers phpboost, et même si jusqu'à présent j'ai su me débrouiller grâce au wiki, j'aimerais quelques renseignements assez précis sur le bbcode, et l'ajout de la "toolbar" dans une page.

J'ai eu beau chercher, je n'ai rien trouvé d'assez explicite sur le bbcode.
J'aimerais pouvoir ajouter cette toolbar au dessus de mon formulaire, en y enlevant certaines balises inutile.

Parser le bbcode n'est pas un problème, je le ferais moi même à part pour éviter qu'il prenne en compte les balises enlevées de cette toolbar. Le seul problème étant comment l'ajouter et la modifier facilement?

Quels sont les scripts à inclure si c'est pas déjà fait par défaut?
Quelles sont les class css et id css à ajouter au formulaire pourqu'il soit pris en charge?
Quelles sont les fichiers JS (ou php) à modifier pour personnaliser précisément cette toolbar?

Merci d'avance pour votre aide.

EDIT : J'allais oublié, quelle fonction permet de parser les smiley?



Edité par Stevens Le 18/01/12 à 12h06

pm    
   Le 18/01/12 à 13h31 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 9621
Lieu: Alsace
Salut et bienvenue à toi dans la communauté !

Pour pouvoir afficher la barre bbcode, il te faut utiliser la fonction display_editor().

En deuxième paramètre tu peux fournir un tableau avec les balises que tu ne souhaites pas afficher (et rendre fonctionnels).

Ensuite pour parser et unparser, tu as les fonctions directement ici : http://code.google.com/p/phpboost/source/browse/kernel/framework/functions.inc.php?name=3.0#681

ReidLos

pm http://www.phpboost.com    
   Le 18/01/12 à 14h56 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 17/01/12
Messages: 8
Ca n'a pas été une mince affaire, mais j'ai enfin réussi.

La fonction est pas mal, mais j'ai du la modifier un peu. Si ça intéresse des personnes :

kernerl/framecork/content/editor/bbcode_editor.class.php

Chercher :
Code PHP :
foreach($this->forbidden_tags as $forbidden_tag)
{
if($forbidden_tag=='fieldset')
$forbidden_tag='block';
 
$template->assign_vars(array(
'AUTH_'.strtoupper($forbidden_tag)=>'style="opacity:0.3;filter:alpha(opacity=30);cursor:default;"',
'DISABLED_'.strtoupper($forbidden_tag)=>'if (false) '
));
}


Remplacer par :
Code PHP :
 
$template->assign_vars(array(
'CHAT' => TRUE));
 
foreach($this->forbidden_tags as $forbidden_tag)
{
if(is_array($forbidden_tag)){
	foreach($forbidden_tag AS $tag){
		$template->assign_vars(array(
			'AUTH_'.strtoupper($tag)=>'style="display : none"',
			'DISABLED_'.strtoupper($tag)=>'if (false) ',
			'C_UPLOAD_MANAGEMENT' => FALSE, 
			'CHAT' => FALSE
	));
	}
}else{
if($forbidden_tag=='fieldset')
$forbidden_tag='block';
 
$template->assign_vars(array(
'AUTH_'.strtoupper($forbidden_tag)=>'style="opacity:0.3;filter:alpha(opacity=30);cursor:default;"',
'DISABLED_'.strtoupper($forbidden_tag)=>'if (false) '
));
}
}
 



Ensuite il faut modifier le template/default/framework/content/editor.tpl , en ajoutant des # IF CHAT # là ou vous ne voulez pas afficher certains élément inutile.

Ca c'est pour la partie toolbar, me reste plus qu'à parser maintenant.

Merci de m'avoir aiguiller x)

EDIT : pour l'appel à la fonction, j'ai fait comme ceci :

Code PHP :
$form .= display_editor('textarea', array('Chat' => array('title', 'fieldset', 'block', 'style', 'quote', 'hide', 'list'')));




Edité par Stevens Le 18/01/12 à 14h57

pm    
   Le 18/01/12 à 16h28 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 9621
Lieu: Alsace
J'avoue ne pas comprendre ... La fonction actuelle permet de faire tout ce que tu souhaites, tu es sûr que tu as bien regardé ? Pourquoi as tu fait ses modifications ? Peux tu me montrer un avant et un après ?

pm http://www.phpboost.com    
   Le 18/01/12 à 16h45 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 17/01/12
Messages: 8
La fonction actuelle permet de rendre inactif certaines balises bbcode.
Ce que je voulais, c'était supprimer (ou plutot rendre invisible) les balises inutile pour mon projet, afin qu'elle ne provoque pas une gêne visuelle.

Par défaut, les balises inactif sont visible (seule leur opacité est réduite), ce qui est plutôt gênant. Quel est l'intérêt de voir une balise qu'on ne peut pas utiliser?

Pour ce qui est de l'avant et de l'après, il est posté ci dessus. J'me suis d'ailleurs mal exprimé, je n'ai pas modifié la fonction à proprement parler, simplement les actions effectués sur $forbidden_tags.

pm    
   Le 18/01/12 à 20h25 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 9621
Lieu: Alsace
Et CHAT c'est quoi ?

pm http://www.phpboost.com    
   Le 18/01/12 à 21h50 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 17/01/12
Messages: 8
Une variable (true ou false) que j'assigne au template pour me dire si oui ou non nous sommes sur le chat. C'est plus pratique pour enlever des parties du code sans trop s'embêter.

Par défaut elle est à false pour ne pas gêner tous les autres bbcode, et quand j'appelle celui du chat elle passe à true.

Pour avoir une plus gros apercu, voici le templates/default/framework/content/editor.tpl :
Code TPL :
		<script type="text/javascript">
		<!--
		var displayed = new Array();
		displayed['{FIELD}'] = false;
		function XMLHttpRequest_preview(field)
		{
			if( XMLHttpRequest_preview.arguments.length == 0 )
 			    field = '{FIELD}';
 
			{TINYMCE_TRIGGER}
			var contents = document.getElementById(field).value;
 
			if( contents != "" )
			{
				if( !displayed[field] ) 
					Effect.BlindDown('xmlhttprequest_preview' + field, { duration: 0.5 });
 
				if( document.getElementById('loading_preview' + field) )
					document.getElementById('loading_preview' + field).style.display = 'block';
				displayed[field] = true;			
 
				new Ajax.Request(
					'{PATH_TO_ROOT}/kernel/framework/ajax/content_xmlhttprequest.php',
					{
						method: 'post',
						parameters: {
							token: '{TOKEN}',
							path_to_root: '{PHP_PATH_TO_ROOT}',
							editor: '{EDITOR_NAME}',
							page_path: '{PAGE_PATH}',  
							contents: contents,
							ftags: '{FORBIDDEN_TAGS}'
						 },
						onSuccess: function(response)
						{
							document.getElementById('xmlhttprequest_preview' + field).innerHTML = response.responseText;
							if( document.getElementById('loading_preview' + field) )
								document.getElementById('loading_preview' + field).style.display = 'none';
						}
					}
				);
			}	
			else
				alert("{L_REQUIRE_TEXT}");
		}
		function insertTinyMceContent(content)
		{ 
			# IF C_BBCODE_TINYMCE_MODE #
			tinyMCE.execCommand('mceInsertContent', false, content, {skip_undo : 1});
			# ENDIF #
		}
		-->
		</script>
		<div style="position:relative;display:none;" id="loading_preview{FIELD}"><div style="margin:auto;margin-top:90px;width:100%;text-align:center;position:absolute;"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/loading.gif" alt="" /></div></div>
		<div style="display:none;" class="xmlhttprequest_preview" id="xmlhttprequest_preview{FIELD}"></div>
 
		# IF C_BBCODE_TINYMCE_MODE #			
		<script language="javascript" type="text/javascript">
		<!--
		tinyMCE.init({
			mode : "exact",
			elements : "{FIELD}", 
			theme : "advanced",
			language : "fr",
			content_css : "{PATH_TO_ROOT}/templates/{THEME}/theme/tinymce.css",
			theme_advanced_buttons1 : "{THEME_ADVANCED_BUTTONS1}", 
			theme_advanced_buttons2 : "{THEME_ADVANCED_BUTTONS2}", 
			theme_advanced_buttons3 : "{THEME_ADVANCED_BUTTONS3}",
			theme_advanced_toolbar_location : "top", 
			theme_advanced_toolbar_align : "center", 
			theme_advanced_statusbar_location : "bottom",
			plugins : "table,flash,searchreplace,inlinepopups,fullscreen,emotions",
			extended_valid_elements : "font[face|size|color|style],span[class|align|style],a[href|name]",
			theme_advanced_resize_horizontal : false, 
			theme_advanced_resizing : true
		});
		-->
		</script>
 
			# IF C_UPLOAD_MANAGEMENT #
				<div style="float:right;margin-left:5px;">
					<a style="font-size: 10px;" title="{L_BB_UPLOAD}" href="#" onclick="window.open('{PATH_TO_ROOT}/member/upload.php?popup=1&amp;fd={IDENTIFIER}', '', 'height=500,width=720,resizable=yes,scrollbars=yes');return false;"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/upload/files_add.png" alt="" /></a>
				</div>
			# ENDIF #
 
		# ENDIF #
 
		# IF C_BBCODE_NORMAL_MODE #
		# IF C_EDITOR_NOT_ALREADY_INCLUDED # <script type="text/javascript" src="{PATH_TO_ROOT}/kernel/framework/js/bbcode.js"></script> # ENDIF #
		<script type="text/javascript">
		<!--
		function bbcode_color_{FIELD}()
		{
			var i;
			var br;
			var contents;
			var color = new Array(
			'black', 'maroon', '#333300', '#003300', '#003366', '#000080', '#333399', '#333333',
			'#800000', 'orange', '#808000', 'green', '#008080', 'blue', '#666699', '#808080',
			'red', '#FF9900', '#99CC00', '#339966', '#33CCCC', '#3366FF', '#800080', '#ACA899',
			'pink', '#FFCC00', 'yellow', '#00FF00', '#00FFFF', '#00CCFF', '#993366', '#C0C0C0',
			'#FF99CC', '#FFCC99', '#FFFF99', '#CCFFCC', '#CCFFFF', '#CC99FF', '#CC99FF', 'white');							
 
			contents = '<table style="border-collapse:collapse;margin:auto;"><tr>';
			for(i = 0; i < 40; i++)
			{
				br = (i+1) % 8;
				br = (br == 0 && i != 0 && i < 39) ? '</tr><tr>' : '';
				contents += '<td style="padding:2px;"><a onclick="insertbbcode(\'[color=' + color[i] + ']\', \'[/color]\', \'{FIELD}\');" class="bbcode_hover"><span style="background:' + color[i] + ';padding:0px 4px;border:1px solid #ACA899;">&nbsp;</span></a></td>' + br;								
			}
			document.getElementById("bbcolor{FIELD}").innerHTML = contents + '</tr></table>';
		}		
		function bbcode_table_{FIELD}()
		{
			var cols = document.getElementById('bb_cols{FIELD}').value;
			var lines = document.getElementById('bb_lines{FIELD}').value;
			var head = document.getElementById('bb_head{FIELD}').checked;
			var code = '';
 
			if( cols >= 0 && lines >= 0 )
			{
				var colspan = cols > 1 ? ' colspan="' + cols + '"' : '';
				var pointor = head ? (59 + colspan.length) : 22;
				code = head ? '[table]\n\t[row]\n\t\t[head' + colspan + ']{L_TABLE_HEAD}[/head]\n\t[/row]\n' : '[table]\n';
 
				for(var i = 0; i < lines; i++)
				{
					code += '\t[row]\n';
					for(var j = 0; j < cols; j++)
						code += '\t\t[col][/col]\n';
					code += '\t[/row]\n';
				}				
				code += '[/table]';
 
				insertbbcode(code.substring(0, pointor), code.substring(pointor, code.length), '{FIELD}');
			}
		}
		function bbcode_list_{FIELD}()
		{
			var elements = document.getElementById('bb_list{FIELD}').value;
			var ordered_list = document.getElementById('bb_ordered_list{FIELD}').checked;
			if( elements <= 0 )
				elements = 1;
 
			var pointor = ordered_list ? 19 : 11;
 
			code = '[list' + (ordered_list ? '=ordered' : '') + ']\n';
			for(var j = 0; j < elements; j++)
				code += '\t[*]\n';
			code += '[/list]';
			insertbbcode(code.substring(0, pointor), code.substring(pointor, code.length), '{FIELD}');
		}
		function bbcode_url_{FIELD}()
		{
			var url = prompt("{L_URL_PROMPT}");
			if( url != null && url != '' )
				insertbbcode('[url=' + url + ']', '[/url]', '{FIELD}');
			else
				insertbbcode('[url]', '[/url]', '{FIELD}');
		}
		-->
		</script>		
		<table # IF CHAT # style="margin:4px;margin-left:auto;margin-right:auto;" # ENDIF #>
			<tr>
				<td>
					<table class="bbcode">
						<tr>
							<td style="padding:1px;">
							# IF CHAT #
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />
							# ENDIF #
								<div style="position:relative;z-index:100;margin-left:-50px;float:left;display:none;" id="bb_block1{FIELD}">
									<div class="bbcode_block" style="width:130px;" onmouseover="bb_hide_block('1', '{FIELD}', 1);" onmouseout="bb_hide_block('1', '{FIELD}', 0);">
										# START smiley #
										<a onclick="insertbbcode('{smiley.CODE}', 'smile', '{FIELD}');" class="bbcode_hover" title="{smiley.CODE}">{smiley.IMG}</a>{smiley.END_LINE}
										# END smiley #
										# IF C_BBCODE_SMILEY_MORE #
										<br />
										<a style="font-size: 10px;" href="#" onclick="window.open('{PATH_TO_ROOT}/kernel/framework/content/editor/smileys.php?field={FIELD}', '{more.L_SMILEY}', 'height=550,width=650,resizable=yes,scrollbars=yes');return false;">{L_ALL_SMILEY}</a>
										# ENDIF #
									</div>
								</div>
								<a href="javascript:bb_display_block('1', '{FIELD}');" onmouseover="bb_hide_block('1', '{FIELD}', 1);" onmouseout="bb_hide_block('1', '{FIELD}', 0);" class="bbcode_hover" title="{L_BB_SMILEYS}"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/smileys.png"  {AUTH_SMILEYS} alt="{L_BB_SMILEYS}" /></a>
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/bold.png" class="bbcode_hover" {AUTH_B} onclick="{DISABLED_B}insertbbcode('[b]', '[/b]', '{FIELD}');" alt="{L_BB_BOLD}" title="{L_BB_BOLD}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/italic.png" class="bbcode_hover" {AUTH_I} onclick="{DISABLED_I}insertbbcode('[i]', '[/i]', '{FIELD}');" alt="{L_BB_ITALIC}" title="{L_BB_ITALIC}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/underline.png" class="bbcode_hover" {AUTH_U} onclick="{DISABLED_U}insertbbcode('[u]', '[/u]', '{FIELD}');" alt="{L_BB_UNDERLINE}" title="{L_BB_UNDERLINE}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/strike.png" class="bbcode_hover" {AUTH_S} onclick="{DISABLED_S}insertbbcode('[s]', '[/s]', '{FIELD}');" alt="{L_BB_STRIKE}" title="{L_BB_STRIKE}" />
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />
 
								<div style="position:relative;z-index:100;float:left;display:none;" id="bb_block2{FIELD}">
									<div style="margin-left:110px;" class="bbcode_block" onmouseover="bb_hide_block('2', '{FIELD}', 1);" onmouseout="bb_hide_block('2', '{FIELD}', 0);">
										<select id="title{FIELD}" onchange="insertbbcode_select('title', '[/title]', '{FIELD}')">
											<option value="" selected="selected" disabled="disabled">{L_TITLE}</option>
											<option value="1">{L_TITLE}1</option>
											<option value="2">{L_TITLE}2</option>
											<option value="3">{L_TITLE}3</option>
											<option value="4">{L_TITLE}4</option>
										</select>	
									</div>
								</div>
								<a href="javascript:{DISABLED_TITLE}bb_display_block('2', '{FIELD}');" onmouseout="{DISABLED_TITLE}bb_hide_block('2', '{FIELD}', 0);" class="bbcode_hover" title="{L_BB_TITLE}"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/title.png" {AUTH_TITLE} alt="{L_BB_TITLE}" /></a>
 
								<div style="position:relative;z-index:100;float:left;display:none;" id="bb_block3{FIELD}">
									<div style="margin-left:135px;" class="bbcode_block" onmouseover="bb_hide_block('3', '{FIELD}', 1);" onmouseout="bb_hide_block('3', '{FIELD}', 0);">
										<select id="blocks{FIELD}" onchange="insertbbcode_select2('blocks', '{FIELD}')">
											<option value="" selected="selected" disabled="disabled">{L_CONTAINER}</option>
											<option value="block">{L_BLOCK}</option>
											<option value="fieldset">{L_FIELDSET}</option>
										</select>	
									</div>
								</div>
								<a href="javascript:{DISABLED_BLOCK}bb_display_block('3', '{FIELD}');" onmouseout="{DISABLED_BLOCK}bb_hide_block('3', '{FIELD}', 0);" class="bbcode_hover" title="{L_BB_CONTAINER}"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/subtitle.png" {AUTH_BLOCK} alt="{L_BB_CONTAINER}" /></a>
 
								<div style="position:relative;z-index:100;float:left;display:none;" id="bb_block4{FIELD}">
									<div style="margin-left:160px;" class="bbcode_block" onmouseover="bb_hide_block('4', '{FIELD}', 1);" onmouseout="bb_hide_block('4', '{FIELD}', 0);">
										<select id="style{FIELD}" onchange="insertbbcode_select('style', '[/style]', '{FIELD}')">
											<option value="" selected="selected" disabled="disabled">{L_STYLE}</option>
											<option value="success">{L_SUCCESS}</option>
											<option value="question">{L_QUESTION}</option>
											<option value="notice">{L_NOTICE}</option>
											<option value="warning">{L_WARNING}</option>
											<option value="error">{L_ERROR}</option>
										</select>	
									</div>
								</div>
								<a href="javascript:{DISABLED_STYLE}bb_display_block('4', '{FIELD}');" onmouseout="{DISABLED_STYLE}bb_hide_block('4', '{FIELD}', 0);" class="bbcode_hover" title="{L_BB_STYLE}"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/style.png" {AUTH_STYLE} alt="{L_BB_STYLE}" /></a>
 
								# IF CHAT #
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />								
								# ENDIF #
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/url.png" class="bbcode_hover" {AUTH_URL} onclick="{DISABLED_URL}bbcode_url_{FIELD}();" alt="{L_BB_URL}" title="{L_BB_URL}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/image.png" class="bbcode_hover" {AUTH_IMG} onclick="{DISABLED_IMG}insertbbcode('[img]', '[/img]', '{FIELD}');" alt="{L_BB_IMG}" title="{L_BB_IMG}" />			
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/quote.png" class="bbcode_hover" {AUTH_QUOTE} onclick="{DISABLED_QUOTE}insertbbcode('[quote]', '[/quote]', '{FIELD}');" alt="{L_BB_QUOTE}" title="{L_BB_QUOTE}" />		
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/hide.png" class="bbcode_hover" {AUTH_HIDE} onclick="{DISABLED_HIDE}insertbbcode('[hide]', '[/hide]', '{FIELD}');" alt="{L_BB_HIDE}" title="{L_BB_HIDE}" />	
 
								<div style="position:relative;z-index:100;float:right;display:none;" id="bb_block9{FIELD}">
									<div class="bbcode_block" style="margin-left:-220px;width:180px;" onmouseover="bb_hide_block('9', '{FIELD}', 1);" onmouseout="bb_hide_block('9', '{FIELD}', 0);">
										<p><label style="font-size:10px;font-weight:normal">* {L_LINES} <input size="3" type="text" class="text" name="bb_list{FIELD}" id="bb_list{FIELD}" maxlength="3" value="3" /></label></p>
										<p><label style="font-size:10px;font-weight:normal">{L_ORDERED_LIST} <input size="3" type="checkbox" name="bb_ordered_list{FIELD}" id="bb_ordered_list{FIELD}" /></label></p>
										<p style="text-align:center;"><a class="small_link" href="javascript:bbcode_list_{FIELD}();"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/list.png" alt="{L_BB_LIST}" title="{L_BB_LIST}" class="valign_middle" /> {L_INSERT_LIST}</a></p>
									</div>
								</div>
								<a href="javascript:{DISABLED_LIST}bb_display_block('9', '{FIELD}');" onmouseout="{DISABLED_LIST}bb_hide_block('9', '{FIELD}', 0);" class="bbcode_hover" title="{L_BB_LIST}"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/list.png" {AUTH_LIST} alt="{L_BB_LIST}" title="{L_BB_LIST}" /></a>
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />
 
								<div style="position:relative;z-index:100;float:right;display:none;" id="bb_block5{FIELD}">
									<div id="bbcolor{FIELD}" class="bbcode_block" style="margin-left:-170px;background:white;" onmouseover="bb_hide_block('5', '{FIELD}', 1);" onmouseout="bb_hide_block('5', '{FIELD}', 0);">
									</div>
								</div>
								<a href="javascript:{DISABLED_COLOR}bbcode_color_{FIELD}();{DISABLED_COLOR}bb_display_block('5', '{FIELD}');" onmouseout="{DISABLED_COLOR}bb_hide_block('5', '{FIELD}', 0);" class="bbcode_hover" title="{L_BB_COLOR}"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/color.png" {AUTH_COLOR} alt="{L_BB_COLOR}" /></a>					
 
								<div style="position:relative;z-index:100;margin-left:-70px;float:right;display:none;" id="bb_block6{FIELD}">
									<div style="margin-left:-120px;" class="bbcode_block" onmouseover="bb_hide_block('6', '{FIELD}', 1);" onmouseout="bb_hide_block('6', '{FIELD}', 0);">
										<select id="size{FIELD}" onchange="insertbbcode_select('size', '[/size]', '{FIELD}')">
											<option value="" selected="selected" disabled="disabled">{L_SIZE}</option>
											<option value="5">5</option>
											<option value="10">10</option>
											<option value="15">15</option>
											<option value="20">20</option>
											<option value="25">25</option>
											<option value="30">30</option>
											<option value="35">35</option>
											<option value="40">40</option>
											<option value="45">45</option>
										</select>
									</div>
								</div>
								<a href="javascript:{DISABLED_SIZE}bb_display_block('6', '{FIELD}');" onmouseout="{DISABLED_SIZE}bb_hide_block('6', '{FIELD}', 0);" class="bbcode_hover" title="{L_BB_SIZE}"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/size.png" {AUTH_SIZE} alt="{L_BB_SIZE}" /></a>			
 
								# IF CHAT #
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />								
								&nbsp;
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/minus.png" style="cursor: pointer;cursor:hand;" onclick="textarea_resize('{FIELD}', -100, 'height');textarea_resize('xmlhttprequest_preview', -100, 'height');" alt="{L_BB_SMALL}" title="{L_BB_SMALL}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/plus.png" style="cursor: pointer;cursor:hand;" onclick="textarea_resize('{FIELD}', 100, 'height');textarea_resize('xmlhttprequest_preview', 100, 'height');" alt="{L_BB_LARGE}" title="{L_BB_LARGE}" />
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/more.png" alt="" class="bbcode_hover" onclick="show_bbcode_div('bbcode_more{FIELD}', 1);" />
								# ENDIF #
							</td>
						</tr>	
					</table>
					<table class="bbcode2" id="bbcode_more{FIELD}">
						<tr>
							<td style="width:100%;padding:1px;">
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/left.png" class="bbcode_hover" {AUTH_ALIGN} onclick="{DISABLED_ALIGN}insertbbcode('[align=left]', '[/align]', '{FIELD}');" alt="{L_BB_LEFT}" title="{L_BB_LEFT}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/center.png" class="bbcode_hover" {AUTH_ALIGN} onclick="{DISABLED_ALIGN}insertbbcode('[align=center]', '[/align]', '{FIELD}');" alt="{L_BB_CENTER}" title="{L_BB_CENTER}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/right.png" class="bbcode_hover" {AUTH_ALIGN} onclick="{DISABLED_ALIGN}insertbbcode('[align=right]', '[/align]', '{FIELD}');" alt="{L_BB_RIGHT}" title="{L_BB_RIGHT}" />	
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/justify.png" class="bbcode_hover" {AUTH_ALIGN} onclick="{DISABLED_ALIGN}insertbbcode('[align=justify]', '[/align]', '{FIELD}');" alt="{L_BB_JUSTIFY}" title="{L_BB_JUSTIFY}" />	
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/float_left.png" class="bbcode_hover" {AUTH_FLOAT} onclick="{DISABLED_FLOAT}insertbbcode('[float=left]', '[/float]', '{FIELD}');" alt="{L_BB_FLOAT_LEFT}" title="{L_BB_FLOAT_LEFT}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/float_right.png" class="bbcode_hover" {AUTH_FLOAT} onclick="{DISABLED_FLOAT}insertbbcode('[float=right]', '[/float]', '{FIELD}');" alt="{L_BB_FLOAT_RIGHT}" title="{L_BB_FLOAT_RIGHT}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/sup.png" class="bbcode_hover" {AUTH_SUP} onclick="{DISABLED_SUP}insertbbcode('[sup]', '[/sup]', '{FIELD}');" alt="{L_BB_SUP}" title="{L_BB_SUP}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/sub.png" class="bbcode_hover" {AUTH_SUB} onclick="{DISABLED_SUB}insertbbcode('[sub]', '[/sub]', '{FIELD}');" alt="{L_BB_SUB}" title="{L_BB_SUB}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/indent.png" class="bbcode_hover" {AUTH_INDENT} onclick="{DISABLED_INDENT}insertbbcode('[indent]', '[/indent]', '{FIELD}');" alt="{L_BB_INDENT}" title="{L_BB_INDENT}" />
 
								<div style="position:relative;z-index:100;float:left;display:none;" id="bb_block7{FIELD}">
									<div id="bbtable{FIELD}" class="bbcode_block" style="margin-left:130px;width:180px;" onmouseover="bb_hide_block('7', '{FIELD}', 1);" onmouseout="bb_hide_block('7', '{FIELD}', 0);">
										<p><label style="font-size:10px;font-weight:normal">* {L_LINES} <input size="3" type="text" class="text" name="bb_lines{FIELD}" id="bb_lines{FIELD}" maxlength="3" value="2" /></label></p>
										<p><label style="font-size:10px;font-weight:normal">* {L_COLS} <input size="3" type="text" class="text" name="bb_cols{FIELD}" id="bb_cols{FIELD}" maxlength="3" value="2" /></label></p>
										<p><label style="font-size:10px;font-weight:normal">{L_ADD_HEAD} <input size="3" type="checkbox" name="bb_head{FIELD}" id="bb_head{FIELD}" /></label></p>
										<p style="text-align:center;"><a class="small_link" href="javascript:{DISABLED_TABLE}bbcode_table_{FIELD}();"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/table.png" alt="{L_BB_TABLE}" title="{L_BB_TABLE}" class="valign_middle" /> {L_INSERT_TABLE}</a></p>
									</div>
								</div>
								<a href="javascript:{DISABLED_TABLE}bb_display_block('7', '{FIELD}');" onmouseover="{DISABLED_TABLE}bb_hide_block('7', '{FIELD}', 1);" class="bbcode_hover" title="{L_BB_TABLE}"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/table.png" {AUTH_TABLE} alt="{L_BB_TABLE}" title="{L_BB_TABLE}" /></a>
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/flash.png" class="bbcode_hover" {AUTH_SWF} onclick="{DISABLED_SWF}insertbbcode('[swf=425,344]', '[/swf]', '{FIELD}');" alt="{L_BB_SWF}" title="{L_BB_SWF}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/movie.png" class="bbcode_hover" {AUTH_MOVIE} onclick="{DISABLED_MOVIE}insertbbcode('[movie=100,100]', '[/movie]', '{FIELD}');" alt="{L_BB_MOVIE}" title="{L_BB_MOVIE}" />
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/sound.png" class="bbcode_hover" {AUTH_SOUND} onclick="{DISABLED_SOUND}insertbbcode('[sound]', '[/sound]', '{FIELD}');" alt="{L_BB_SOUND}" title="{L_BB_SOUND}" />
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />
 
								<div style="position:relative;z-index:100;margin-left:-70px;float:right;display:none;" id="bb_block8{FIELD}">
									<div style="margin-left:-120px;" class="bbcode_block" onmouseover="bb_hide_block('8', '{FIELD}', 1);" onmouseout="bb_hide_block('8', '{FIELD}', 0);">
										<select id="code{FIELD}" onchange="insertbbcode_select('code', '[/code]', '{FIELD}')">
											<option value="" selected="selected" disabled="disabled">{L_CODE}</option>
											<optgroup label="{L_TEXT}">
												<option value="text">Text</option>
												<option value="sql">Sql</option>
												<option value="xml">Xml</option>										
											</optgroup>
											<optgroup label="{L_PHPBOOST_LANGUAGES}">
												<option value="bbcode">BBCode</option>
												<option value="tpl">Template</option>
											</optgroup>
											<optgroup label="{L_SCRIPT}">
												<option value="php">PHP</option>
												<option value="asp">Asp</option>
												<option value="python">Python</option>
												<option value="perl">Perl</option>
												<option value="ruby">Ruby</option>
												<option value="bash">Bash</option>
											</optgroup>
											<optgroup label="{L_WEB}">	
												<option value="html">Html</option>
												<option value="css">Css</option>
												<option value="javascript">Javascript</option>
											</optgroup>
											<optgroup label="{L_PROG}">
												<option value="c">C</option>
												<option value="cpp">C++</option>
												<option value="c#">C#</option>
												<option value="d">D</option>
												<option value="java">Java</option>
												<option value="pascal">Pascal</option>
												<option value="delphi">Delphi</option>
												<option value="fortran">Fortran</option>
												<option value="vb">Vb</option>
												<option value="asm">Asm</option>
											</optgroup>
										</select>
									</div>
								</div>
								<a href="javascript:{DISABLED_CODE}bb_display_block('8', '{FIELD}');" onmouseout="{DISABLED_CODE}bb_hide_block('8', '{FIELD}', 0);" class="bbcode_hover" title="{L_BB_CODE}"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/code.png" {AUTH_CODE} alt="{L_BB_CODE}" /></a>
 
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/math.png" class="bbcode_hover" {AUTH_MATH} onclick="{DISABLED_MATH}insertbbcode('[math]', '[/math]', '{FIELD}');" alt="{L_BB_MATH}" title="{L_BB_MATH}" />	
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/html.png" class="bbcode_hover" {AUTH_HTML} onclick="{DISABLED_HTML}insertbbcode('[html]', '[/html]', '{FIELD}');" alt="{L_BB_HTML}" title="{L_BB_HTML}" />
							</td>
							<td style="width:3px;">
								<img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/separate.png" alt="" />
							</td>
							<td style="padding:0px 2px;width:22px;">
								<a href="http://www.phpboost.com/wiki/bbcode" title="{L_BB_HELP}"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/form/help.png" alt="{L_BB_HELP}" /></a>
							</td>
						</tr>	
					</table>
				</td>				
				<td style="vertical-align:top;padding-left:8px;padding-top:5px;">
					# IF C_UPLOAD_MANAGEMENT #
					<a title="{L_BB_UPLOAD}" href="#" onclick="window.open('{PATH_TO_ROOT}/member/upload.php?popup=1&amp;fd={FIELD}&amp;edt={EDITOR_NAME}', '', 'height=500,width=720,resizable=yes,scrollbars=yes');return false;"><img src="{PATH_TO_ROOT}/templates/{THEME}/images/upload/files_add.png" alt="" /></a>
					# ENDIF #
				</td>				
			</tr>
		</table>
 
		<script type="text/javascript">
		<!--
		set_bbcode_preference('bbcode_more{FIELD}');
		-->
		</script>
		# ENDIF #
 


Par contre je me heurte à 2 problème.

Tout d'abord la fonction parse et unparse n'ont aucun effet sur le bbcode, donc j'utilise la fonction strparse() cependant c'est tout ou rien. Qu'en j'envoie et récupère les messages en ajax, le bbcode est interprété. Mais par défaut (c'est à dire en chargeant la page) il ne l'est pas.
J'ai d'abord pensé à une erreur d'encodage, mais ce n'était pas le cas. C'est comme si les résultats étaient déjà parsé au préalable avec un htmlspecialchars() (ou équivalent)

Et ensuite, les smiley eux, ne sont jamais interprété :/

pm    
   Le 18/01/12 à 21h57 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 9621
Lieu: Alsace
D'accord, je viens de comprendre.

Concernant ton problème, tu pourrais m'expliquer un peu plus ?

Pour les smileys, si tu utilises unparse(), ça devrait marcher ?

pm http://www.phpboost.com    
   Le 19/01/12 à 09h35 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 17/01/12
Messages: 8
J'avais fait une erreur, j’enregistrais les messages en html dans la bdd, alors qu'il fallait les laisser en bbcode..

Bref, le problème n'est pas résolu concernant unparse().
Pour faire simple, j'utilise une fonction bbcode() sur mon texte afin d'en tirer d'autre fonction spécifique au chat :

Code PHP :
/**
 * Parse le texte avec le bbcode
 * @param <type> $texte le texte à parser
 */
function bbcode($texte){
 
        global $User;
 
        if($texte == '/clean' && $User->Get_attribute('level') == 2){
            cleanAll();
           return 'Clean';
        }  
        return strparse($texte, array('title', 'fieldset', 'block', 'style', 'quote', 'hide', 'list'));
}


Quand j'utilise strparse, toutes les balises ne sont pas interprété (les balises u, color, size par exemple), et les smiley non plus.

Quand j'utilise unparse() :
Code PHP :
/**
 * Parse le texte avec le bbcode
 * @param <type> $texte le texte à parser
 */
function bbcode($texte){
 
        global $User;
 
        if($texte == '/clean' && $User->Get_attribute('level') == 2){
            cleanAll();
           return 'Clean';
        }  
        return unparse($texte);
}


J'me retrouve avec le code en bbcode (le texte original quoi). Rien, aucune balises n'est interprété, ni même les smileys.


pm    
   Le 19/01/12 à 09h57 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 9621
Lieu: Alsace
A l'affichage tu utilises second_parse(), à l'édition unparse() et à l'enregistrement tu ne fais rien, tu réceptionnes du HTML (en gros la fonction parse() est déjà utilisée).

pm http://www.phpboost.com    
   Le 19/01/12 à 10h26 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 17/01/12
Messages: 8
Merci c'est beaucoup plus clair, cependant ça n'a toujours pas d'effet..

Voici plus ou moins comment j'affiche mon message :
Code PHP :
 echo utf8_decode(bbcode($data['Message']));


(le utf8_decode() je sais pas pourquoi mais chui obligé de l'utiliser alors que ma bdd est mes fichiers sont encodé en utf8.)

Voici ma fonction bbcode() :

Code PHP :
 
/**
 * Parse le texte avec le bbcode
 * @param <type> $texte le texte à parser
 */
function bbcode($texte){
 
        global $User;
        $texte = htmlspecialchars($texte);
 
        if($texte == '/clean' && $User->Get_attribute('level') == 2){
            cleanAll();
           return 'Clean';
        }  
        return second_parse($texte);
}
 


Et voici le résultat

Code BBCODE :
Jeudi 19 Janvier 2012 à 08h01:33 : What's Bot
La chatbox a été vidé par Stevens
Jeudi 19 Janvier 2012 à 08h01:46 : Stevens
ajoutons des messages
Jeudi 19 Janvier 2012 à 08h01:18 : Stevens
en [i]italique[/i] [b]gras[/b] [u]souligné[/u] et [s]barré[/s]
Jeudi 19 Janvier 2012 à 08h01:58 : Stevens
:D
Jeudi 19 Janvier 2012 à 08h01:41 : Stevens
[s]tet[/s]
Jeudi 19 Janvier 2012 à 08h01:45 : Stevens
[u]test[/u]
Jeudi 19 Janvier 2012 à 08h01:52 : Stevens
teste[color=red]dffd[/color]
Jeudi 19 Janvier 2012 à 08h01:02 : Stevens
[size=20]csfs[/size]
Jeudi 19 Janvier 2012 à 09h01:48 : Stevens
test en [b]gras[/b]


C'est juste un copier coller du résultat. J'aurais fourni un screen, ça aurait la même chose.


Pour l'envoie en ajax, c'est la même chose :

Code PHP :
 
// Lorsque l'on envoie un post
if(isset($_GET['send'])){
    extract($_POST);
    if(!empty($Message)){
 
        // On défini les variables
        $Date = now();
        $NewMessage = bbcode($Message);
        $clean = $NewMessage == "Clean" ? true : false;  // S'il s'agit d'une commande
        $Pseudo =   $clean ? 'What\'s Bot' : $User->Get_attribute('login');
        $Groupe = $clean ? 0 : $User->Get_attribute('level');
        $Message = $clean ? 'La chatbox a été vidé par '.$User->Get_attribute('login') : $Message;
 
        // On envoie en bdd
        $Sql->Query_inject('INSERT INTO '.PREFIX.'chatmessages (Auteur, Message, Date, Groupe) VALUES("'.$Pseudo.'", "'.$Message.'", "'.$Date.'", "'.$Groupe.'")', __LINE__, __FILE__);
 
        // On récupère l'id
        $id = $Sql->Query("SELECT MAX(id) FROM ".PREFIX."chatmessages", __LINE__, __FILE__);
 
        // On stocke le nouveau contenu en variable             
        $Content = '<tr><td><b>'.date_fr($Date).' : <span style="color:'.FindColor($Groupe).'">'.$Pseudo.'</span></b><br>';
        $Content .= $clean ? $Message : $NewMessage;
        $Content .= $User->Get_attribute('level') == 2 && !$clean ? '<span class="delete" title="Supprimer le message" id="'.$id.'"></span>' : '';
        $Content .= '</td></tr>' ;
 
        // On stocke dans un tableau
        $json = array('status' => $clean ? 'clean': 'ok', 'content' => $Content);
    }else{
        // On renvoie une erreur
        $json = array('status' => 'erreur', 'content' => 'Le message est vide');
    }
    echo json_encode($json); // On affiche le tableau json
}
 


Je respecte bien ce que vous dites juste au dessus, à savoir laisser intacte les messages envoyé en bdd, et appliquer la fonction second_parse() pour faire interprété le bbcode().
Sachant que la modification ne sera pas au programme, la fonction unparse() ne me sera d'aucune utilité.

Le problème reste le même, le bbcode n'est pas interprété (alors qu'avec la fonction strparse(), il l'est en partie).



Edité par Stevens Le 19/01/12 à 10h29

pm    
   Le 19/01/12 à 10h40 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 9621
Lieu: Alsace
Pour le moment, PHPBoost (PHP nativement) n'est pas compatible UTF-8.

Dans ta base de donnée, tu as bien du code HTML ?

pm http://www.phpboost.com    
   Le 19/01/12 à 10h57 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 17/01/12
Messages: 8
Voici un screen de phpmyadmin :



Je pense que ça répond à la question. Si par code html vous voulez dire balise bbcode déjà converti en html, alors non.

PS : je ne pensais pas qu'il n'était pas compatible utf8.
Bon courage pour la conversion, si un jour vous vous y mettez x)

pm    
   Le 19/01/12 à 11h19 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 9621
Lieu: Alsace
Excuse moi de mon erreur, j'étais convaincu qu'un parse est fait directement mais ce n'est pas le cas.

Donc avant l'enregistrement, tu utilises strparse() est c'est ok normalement :)

On attend de voir si l'équipe de PHP va réagir un jour ou pas pour le passage en natif à l'UTF-8. Mais à un moment ou un autre, il faudra l’envisager sérieusement.

ReidLos

pm http://www.phpboost.com    
   Le 19/01/12 à 12h40 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 17/01/12
Messages: 8
Je vois, c'est beaucoup mieux ainsi.

Merci pour ton aide x)



Edité par Stevens Le 19/01/12 à 13h26

pm    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
Annonces