Autor Zpráva
panterek
Profil
Měl bych dotaz...je to nejspíš naprosto triviální věc, bohužel neumím s javascriptem, takže pro mě těžké...rád bych jej ale pochopil..Pro upřesnění problému bude nejlepší odkaz na testovací stránku

http://danger.bobinka.eu/test/zkouska.php

Funguje téměř vše...vše, až na "odkaz" a pak úplně vpravo změna barvy..

Problém u odkazu:
- když na to kliknete, vyjede přednastavený text, není třeba nic měnit, stačí hned kliknout na "odeslat" a udělá to 2 věci..vyjede html, což je v pořádku, jenže u výpisu z databáze to nevypíše nic...když se podívám do databáze přes phpmyadmin, tak je tam vše normálně, správně zobrazeno...tedy <a href...>Odkaz</a>..jen prostě z databáze nevidím žádný výstup.
Když vyzkoušítě cokoliv jiného(tučné, kurziva atd...), tak vyjede jak html výstup, tak výstup z databáze..

Druhý problém je u těch barev, to bude asi blbost:
- když si vyberete nějakou barvu, zobrazí se tagy [color=""][/color]..no a mezi ty uvozovky bych potřeboval, aby se vložila ta správná barva..aspoň na tohle jsem použil v javascriptu tohle:
    if (tag == 'color') {
        startTag = '[color=""]'; }


...jen nevím, jak tam dosadit tu barvu.

A k tomuto je ještě jeden poslední problém, když tam dopíšete barvu ručně, tedy:
[color="red"]červený text[/color]
- tak jako html to vyjede v pořádku, text bude červený, ale výstup z databáze hází nesmysl...plete se mi tam tag [/img]..

převodník html to bbcode:
function htmlbb2($res)
{
  $bbcode = array("<", ">",
                '[url="', "[/url]",
                "[img]", "[/img]", 
                "", "", 
                "[u]", "[/u]", 
                "", "",
                "[s]", "[/s]",
                "[h2]", "[/h2]",
                "[h3]", "[/h3]",
                "[h4]", "[/h4]",
                "[h5]", "[/h5]",
                '[color="', "[/color]",
                "[code]", "[/code]",
                "[quote]", "[/quote]",
                '"]');
  $htmlcode = array("&lt;", "&gt;",
                '<a target="_blank href="', "</a>",
                "<img src=\"", "\">", 
                "<b>", "</b>", 
                "<u>", "</u>", 
                "<i>", "</i>",
                "<s>", "</s>",
                "<h2>", "</h2>",
                "<h3>", "</h3>",
                "<h4>", "</h4>",
                "<h5>", "</h5>",
                "<span style=\"color:", "</span>",
                "<code>Kód: <br /><table width=85% bgcolor=dimgray><tr><td bgcolor=ghostwhite>", "</td></tr></table></code>",
                "<quote>Citace: <br /><table width=85% bgcolor=dimgray><tr><td bgcolor=#ffffcc>", "</td></tr></table></quote>",
                '">');
$prom = stripslashes($res);
  $newtext = str_replace($htmlcode, $bbcode, $prom);
  $newtext = nl2br($newtext);//second pass
  return $newtext;
}


Pokud smažu z té funkce tagy [/img], tak se mi to do těch barev už neplete, ale zas by nefungovalo vkládání obrázků..
mattyZEM
Profil
Meine textarea.js:
function setSelectionRange(input,selectionStart,selectionEnd) {
	if(input.setSelectionRange) {
		input.focus();
		input.setSelectionRange(selectionStart,selectionEnd);
	}
	else if(input.createTextRange) {
		var range=input.createTextRange();
		range.collapse(true);
		range.moveEnd('character',selectionEnd);
		range.moveStart('character',selectionStart);
		range.select();
	}
}

function uprava(textpre,textpost,pole) { 
	var ele;
	if(ele=document.getElementById(pole)) {
		if(ele.setSelectionRange) {
			var start=ele.selectionStart;
			var end=ele.selectionEnd; 
			ele.value=ele.value.substring(0,start)+textpre+ele.value.substring(start,end)+textpost+ele.value.substring(end);
			//var pos=start+textpre.length+textpost.length+(end-start)+1;
			setSelectionRange(ele,start,end+textpre.length+textpost.length);
		}
		else if(document.selection) {
			ele.focus();
			document.selection.createRange().text=textpre+document.selection.createRange().text+textpost;
		}
	}
}

Návod na použití:
<textarea name="cokoliv" id="text">ID musí být text (můžete upravit)
<img src="smajly/1.gif" alt=":-)" onclick="uprava('[color=red]','[/color]','text')" alt="Něco">

Ještě je tam možnost zobrazit nějaký titulek:

<img src="smajly/1.gif" alt=":-)" onclick="uprava('[color=red]','[/color]','text')" onmouseover="document.getElementById('nadtext').innerHTML=this.alt" onmouseout="document.getElementById('nadtext').innerHTML=''" alt="titulek, tenhle text se zobrazí o řádek níž">
<p id="nadtext"></p>



Přejděte od ARRAY k PREG_REPLACE, je to mnohem inteligentnější systém :P
panterek
Profil
Ona ta barva [color="red"], musí být v uvozovkách, jinak se to nezobrazí..když do Vašeho skriptu uvozovky dodám, tak to samozřejmě nebere..ikdyž předpokládám, že tak se to nedělá :) To, co mám na stránkách jsem samozřejmě někde našel na netu, takže se v tom JS prd vyznám :) ten color jsem si tam sice dodělal sám, ale evidentně to není úplně ono...ten Váš skript tu barvu dopíše, jen bez těch uvozovek a kurzor se nenastaví mezi ty tagy, aby se mohlo hned psát...ale v tom skriptu, co mám na stránkách to je, tak se to pokusím najít a jen to tam doplnit...předpokládám, že to bude na řádek...Vám se to označí celé, to jsem našel, že má na svědomí tohle:
setSelectionRange(ele,start,end+textpre.length+textpost.length);

nějak s tou orientací začít musím, že :)

každopádně moc děkuji
panterek
Profil
Tak uvozovky jsem tam už úspěšně doplnil...teď už jen ten kurzor mezi tagy, jestli by někdo věděl...?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0