webForumDet fria alternativet

Hjälp med implementation av BB-code

1 svar · 243 visningar · startad av lillebror

lillebrorMedlem sedan apr. 20041 687 inlägg
#1

Hej,

Jag har ett java-relaterat problem som jag inte riktigt löser ut själv. Läget är följande. Jag har sedan tidigare ett formulär. Vid sidan om det formuläret har jag smilysar som går att infoga i formuläret med hjälp av javascript. Nu vill jag lägga till s.k. BB-kod så att användarna också kan göra text fetstil, kursiv etc. Integrationen mellan smileyfunktionen och BB-koden får jag inte riktigt till då det förefaller att de använder samma funktion. Jag bifogar först den befintliga kod jag har (HTML + Javascript) och sedan den jag vill kombinera den med.

HTML:

<!--<tr style="background-color: #fff;">
			<td width="15%" style="padding-left: 5px; font-weight: bold; vertical-align: top;">&nbsp;</td>
			<td colspan="3" width="85%">
		[red][B]<input type="button" value="Fet" onclick="makeBB(\'b\', \'d\', this)" /><input type="button" value="Understruken" onclick="makeBB(\'u\', \'d\', this)" /><input type="button" value="Kursiv" onclick="makeBB(\'i\', \'d\', 
this)" /><input type="button" value="URL" onclick="lnk(\'url\', \'d\', this)" /><input type="button" value="Email" onclick="lnk(\'email\', \'d\', this)" />[/B][/red]
		</td>
		</tr>-->
		
		<tr style="background-color: #fff;">
			<td width="15%" style="padding-left: 5px; font-weight: bold;">&nbsp;</td>
			<td colspan="3" width="85%">&nbsp;</td>
		</tr>
		<tr style="background-color: #fff;">
			<td width="15%" style="padding-left: 5px; font-weight: bold; vertical-align: top;">Meddelande:</td>
			<td width="45%"><textarea cols="50" rows="10" name="forummessage"><?php if($_POST['forummessage'] <> '') { echo stripslashes(htmlentities($_POST['forummessage'])); } ?></textarea>
			<input type="hidden" value="<?php if($_POST['forumID'] <> '') { echo $_POST['forumID']; } else { echo $_GET['forumID']; } ?>" name="forumID">
			</td>
			<td colspan="2" width="32%" style="padding-right: 9px; vertical-align: top; font-size: 10px; font-weight: bold;">
			<div style="padding: 0 6px 6px 6px; margin: 0 5px 0 5px; border: 0px groove #000;"><b>Infoga smiley</b><br /><br />
			<?php 
			while($smiley = mysql_fetch_array($RSobj_get_smilies)) { ?>
			[B]<a href="#" onclick="smilie('<?php echo $smiley['code']; ?>'); return false;"><?php echo "<img src=\"".$smiley['path'].$smiley['filename']."\" alt=\"".$smiley['description']."\" 
title=\"".$smiley['description']."\" />"; ?></a>[/B]
			<?php }
			?>	
			</div></td>

Javascript

[B][blue]var cPos,
    fObj,
    ieC = Boolean(document.selection && document.selection.createRange);
[/blue][/B]
function smilie(str) {
    if (ieC) {
	if (typeof cPos != "undefined")
	    cPos.text = str;
	else
	    fObj.value = str;
    }

    else if (typeof window.HTMLTextAreaElement != "undefined")
	fObj.value = fObj.value.substring(0, fObj.selectionStart) + str + fObj.value.substring(fObj.selectionEnd);

    else fObj.value += str;
}[blue]

[B]function sC() {
    cPos = document.selection.createRange().duplicate();
}[/B][/blue]

window.onload = function() {
    fObj = document.forms["newthread"].elements["forummessage"];

    if (ieC) {
	fObj.onclick  = function() { sC(); }
	fObj.onkeyup  = function() { sC(); }
	fObj.onselect = function() { sC(); }
    }
}

Nu vill jag implementera javascripten för den feta rödmarkerade delen i HTML-koden ovan i javascriptdelen som jag nyss presenterade. Det är här jag har haft problem. Kan tillägga att jag absolut inte är någon mästar på detta, tyvärr.

[blue]
[B]var cPos,
    fObj,
    ieC = Boolean(document.selection && document.selection.createRange);[/B][/blue]
    
var cPosr,
    fObjr,
    ieC = Boolean(document.selection && document.selection.createRange);

[blue][B]function sC() {
    cPos = document.selection.createRange().duplicate();
}[/B][/blue]

window.onload = function() {

    fObj = document.getElementById('f').elements["description"]; // ÄNDRA HÄR!
    fObjr = document.getElementById('f').elements["report"]; // ÄNDRA HÄR!

    if (ieC) {
		fObj.onclick  = function() { sC(); }
		fObj.onkeyup  = function() { sC(); }
		fObj.onselect = function() { sC(); }
		fObjr.onclick  = function() { sC(); }
		fObjr.onkeyup  = function() { sC(); }
		fObjr.onselect = function() { sC(); }
    }

}

function lnk(t, type){

    var txt = window.prompt("Skriv texten som skall länkas", ""),
	url = "";

    if (txt != null && trim(txt).length != 0) {

		if(t == "url") {
			url = window.prompt("Skriv in URL:en för din länk:", "http://");
		} else if(t == "email") {
			url = window.prompt("Skriv in epost-adressen för länken:", "");
		}

		if (url != null && trim(url).length != 0) {

			if (ieC) {
				
				if(type == "d") {
					fObj.value += "[" + t + "=" + url + "]" + txt + "[/" + t + "]";
				} else if(type == "r") {
					fObjr.value += "[" + t + "=" + url + "]" + txt + "[/" + t + "]";
				}

			} else if (typeof window.HTMLTextAreaElement != "undefined") {

				if(type == "d") {
					fObj.value = fObj.value.substring(0, fObj.selectionStart)
					+ "[" + t + "=" + url + "]"
					+ fObj.value.substring(fObj.selectionStart, fObj.selectionEnd)
					+ txt + "[/" + t + "]"
					+ fObj.value.substring(fObj.selectionEnd);
				} else if(type == "r") {
					fObjr.value = fObjr.value.substring(0, fObjr.selectionStart)
					+ "[" + t + "=" + url + "]"
					+ fObjr.value.substring(fObjr.selectionStart, fObjr.selectionEnd)
					+ txt + "[/" + t + "]"
					+ fObjr.value.substring(fObjr.selectionEnd);
				}

			}

		}

    }

}

function makeBB(c, type){

	if (ieC) {

		if (typeof cPos != "undefined"){
			if(type == "d") {
				cPos.text = "[" + c + "]" + cPos.text + "[/" + c + "]";
			} else if(type == "r") {
				cPosr.text = "[" + c + "]" + cPos.text + "[/" + c + "]";
			}
		} else {
			if(type == "d") {
				fObj.value += "[" + c + "][/" + c + "]";
			} else if(type == "r") {
				fObjr.value += "[" + c + "][/" + c + "]";
			}
		}

    } else if (typeof window.HTMLTextAreaElement != "undefined"){

		if(type == "d") {
			fObj.value = fObj.value.substring(0, fObj.selectionStart)
			+ "[" + c + "]"
			+ fObj.value.substring(fObj.selectionStart, fObj.selectionEnd)
			+ "[/" + c + "]"
			+ fObj.value.substring(fObj.selectionEnd);
		} else if(type == "r") {
			fObjr.value = fObjr.value.substring(0, fObjr.selectionStart)
			+ "[" + c + "]"
			+ fObjr.value.substring(fObjr.selectionStart, fObjr.selectionEnd)
			+ "[/" + c + "]"
			+ fObjr.value.substring(fObjr.selectionEnd);
		}

    }

}
lillebrorMedlem sedan apr. 20041 687 inlägg
#2

Nu har jag fetmarkerat i blått det som är gemensamt för dessa två script. Sedan skiljer sig window.onload åt för smiley- och bbkod-funktionen.

Hur förenar jag dessa två i samma formulär? Fältnamnet i mitt formulär är "forummessage". Det är där som smileysarna hamnar idagsläget. Det är även där jag vill att valet av fet eller kursiv stil ska hamna.

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb