BBcode как да ги добавя към форма ?

topchokt

Registered
Здравейте ,
правя едно малко сайтче , но има и система за статии , но ми трябва когато добавяш статия да има и bbcode за:

> Удебелен текст
Код:
[b][/b]
> Наклонен текст
Код:
[i][/i]
> Подчертан текст
Код:
[u][/u]
> Снимка
Код:
[img][/img]
>Линк
Код:
[url][/url]
> И няколко цвята ( Да кажем червено , синьо , оранжев , жълт и черен)



.........................................
Благодаря предварително ... Ако може да е нещо по-простичко .
 
Ами ето аз направих едно с регулярен израз (да се упражня малко)
Това го слагаш като функция в някой файл (предполагам има файл functions.php, ако го имаш там)
Ето ти я функцията
function bbcodes($text) {
$bbcode_text = $text;
$bbcode_text = preg_replace('/\[b\](.*)\[\/b\]/', '<b>$1</b>', $bbcode_text);
$bbcode_text = preg_replace('/\[u\](.*)\[\/u\]/', '<u>$1</u>', $bbcode_text);
$bbcode_text = preg_replace('/\[url\](.*)\[\/url\]/', '<a href="$1" target="_blank">$1</a>', $bbcode_text);
$bbcode_text = preg_replace('/\(.*)\[\/url\]/', '<a href="$1" target="_blank">$2</a>', $bbcode_text);
$bbcode_text = preg_replace('/\[quote\](.*)\[\/quote\]/', '<div id="quote">$1</div>', $bbcode_text);
$bbcode_text = preg_replace('/\
(.*)\ каза:
А тъм където ще се визуализира резилтата от формата правиш това:
echo bbcodes($row['imeto na poleto ot bazata']);
А ако искаш и javascript-а пиши
А в този bbcode има
1) Снимка
2) Удебелен, подчелтан текст
3) Имейл
4) Урл адрес
5) Цитат
 
slideR каза:
Ами ето аз направих едно с регулярен израз (да се упражня малко)
Това го слагаш като функция в някой файл (предполагам има файл functions.php, ако го имаш там)
Ето ти я функцията
function bbcodes($text) {
$bbcode_text = $text;
$bbcode_text = preg_replace('/\[b\](.*)\[\/b\]/', '<b>$1</b>', $bbcode_text);
$bbcode_text = preg_replace('/\[u\](.*)\[\/u\]/', '<u>$1</u>', $bbcode_text);
$bbcode_text = preg_replace('/\[url\](.*)\[\/url\]/', '<a href="$1" target="_blank">$1</a>', $bbcode_text);
$bbcode_text = preg_replace('/\(.*)\[\/url\]/', '<a href="$1" target="_blank">$2</a>', $bbcode_text);
$bbcode_text = preg_replace('/\[quote\](.*)\[\/quote\]/', '<div id="quote">$1</div>', $bbcode_text);
$bbcode_text = preg_replace('/\
(.*)\ каза:
А тъм където ще се визуализира резилтата от формата правиш това:
echo bbcodes($row['imeto na poleto ot bazata']);
А ако искаш и javascript-а пиши
А в този bbcode има
1) Снимка
2) Удебелен, подчелтан текст
3) Имейл
4) Урл адрес
5) Цитат



Ако може и javascript-а
 
Искаш ли всичко да е с попъп прозорци??? Много по-готино е!!!
А ето ти за попъп прозорци
Код:
function add_url() {
	var revisedMessage;
	var thisURL = prompt("Въведете линка към страницата", "http://");
	var thisTitle = prompt("Въведете името на страницата", "Името на страницата");
	var urlBBCode = "[url="+thisURL+"]"+thisTitle+"[/url]";
	var currentMessage = document.message.text.value;
	revisedMessage = currentMessage+urlBBCode;
	document.message.text.value = revisedMessage;
	document.message.text.focus();
return false;
}
function add_bold() {
	var revisedMessage;
	var thisB = prompt("Въведете удебеления текст", "");
	var urlBBCode = "[b]"+thisB+"[/b]";
	var currentMessage = document.message.text.value;
	revisedMessage = currentMessage+urlBBCode;
	document.message.text.value = revisedMessage;
	document.message.text.focus();
return false;
}
function add_code() {
	var revisedMessage;
	var thisC = prompt("Въведете текста тук", "Кодът");
	var urlBBCode = "[code]"+thisC+"
";
var currentMessage = document.message.text.value;
revisedMessage = currentMessage+urlBBCode;
document.message.text.value = revisedMessage;
document.message.text.focus();
return false;
}
function add_quote() {
var revisedMessage;
var thisQ = prompt("Въведете текста тук", "Цитатът");
var urlBBCode = "
";
var currentMessage = document.message.text.value;
revisedMessage = currentMessage+urlBBCode;
document.message.text.value = revisedMessage;
document.message.text.focus();
return false;
}[/code]
Форматата трябва да има name="message", а на input-ите трябва да добавяш това onClick="javascript:add_bold();"
Пример
<input type="button" name="neshto_si" value="Bold" onClick="javascript:add_bold();">
А на textarea-та трябва да сложиш идно id="text". Това е.
Ако искаш обикновен bbcode без попъп пиши.
EDIT:// забравих за url само смени onClick="javascript:add_bold();" на onClick="javascript:add_url();"
 
Нещо не ще да добавя във формата . Ако може и да е без изкачащият прозорец ще е по-добре .
 
Ето това без popup
Код:
function bbcode(open_tag, close_tag, id) {
   var obj = document.getElementById(id);
   var spacer;
   if(obj.value.length > 0) {
      spacer = " ";
   } else {
      spacer = "";
   }
   var begining_text = obj.value.substr(0, obj.selectionStart);
   var selected_text = obj.value.substr(obj.selectionStart, obj.selectionEnd);
   var end_text = obj.value.substr(obj.selectionEnd, obj.value.length);

   var caret_position = obj.selectionStart;
   var text_to_caret = obj.value.substr(0, caret_position);
   var text_after_caret = obj.value.substr(caret_position, obj.value.length);
   if(obj.selectionStart != obj.selectionEnd) {
      obj.value = begining_text + open_tag + selected_text + close_tag + end_text
   } else {
      obj.value = text_to_caret + open_tag + close_tag + text_after_caret
   }

}
А самия код на бутона е:
Код:
<input type="button" value="B" onClick="javascript:bbcode('[b]', '[/b]', 'text_area_id');">
 
<input type="button" value="B" onClick="javascript:bbcode('', '', 'statiq');"><br />
Статия: <br /><textarea rows="7" id="statiq" name="statiq" cols="40" type="text"></textarea><br />

Така съм го направил ... Правилно ли е ?
 
А сложи ли javascip-та (знам, че ставам банален ама стават и такива грешки)
 
Script-а съм го сложил така :


<script type="text/javascript" >

function bbcode(open_tag, close_tag, id) {
var obj = document.getElementById(id);
var spacer;
if(obj.value.length > 0) {
spacer = " ";
} else {
spacer = "";
}
var begining_text = obj.value.substr(0, obj.selectionStart);
var selected_text = obj.value.substr(obj.selectionStart, obj.selectionEnd);
var end_text = obj.value.substr(obj.selectionEnd, obj.value.length);

var caret_position = obj.selectionStart;
var text_to_caret = obj.value.substr(0, caret_position);
var text_after_caret = obj.value.substr(caret_position, obj.value.length);
if(obj.selectionStart != obj.selectionEnd) {
obj.value = begining_text + open_tag + selected_text + close_tag + end_text
} else {
obj.value = text_to_caret + open_tag + close_tag + text_after_caret
}

}

</script>

Между <head> и </head> ?
Нали така трябва да е ?
 
function bbcode(code, area) {
var bb = document.getElementById(area);
bb= document.getElementById(area).value+= code;
}
Опитай този javascript.
А за бутон сложи onClick="javascript:bbcode(\"\", \"statiq\");"
 

Back
Горе