Cursor an MAUSPOS: In Mozilla

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
thl1000
Mitglied
Beiträge: 41
Registriert: 29.12.2001 01:00
Wohnort: Mülheim a.d. Ruhr
Kontaktdaten:

Cursor an MAUSPOS: In Mozilla

Beitrag von thl1000 »

Moin,

ich verzweifle grad...

Gibt es irgendein Workaround, um Mozilla zu veranlassen, den BBCode an der Cursorposition einzufügen?

Alle Mods, die zu diesem Thema vorhanden sind, funktionieren nicht in gewünschterweise mit Mozilla bzw. Firebird.

Für gute Ideen bin ich dankbar.
M.f.G.

thl1000
Warren
Mitglied
Beiträge: 491
Registriert: 29.12.2002 13:41
Wohnort: Stäfa - CH
Kontaktdaten:

Beitrag von Warren »

im ie fügt er den bbcode auch am schluss an, wenn schon text geschrieben wurde!
Benutzeravatar
Henne
Ehemaliges Teammitglied
Beiträge: 4520
Registriert: 04.01.2002 01:00
Wohnort: Lage (Lippe)
Kontaktdaten:

Beitrag von Henne »

Da gibts aber Alternativen, bei denen das behoben ist...
Warren
Mitglied
Beiträge: 491
Registriert: 29.12.2002 13:41
Wohnort: Stäfa - CH
Kontaktdaten:

Beitrag von Warren »

schon?
thl1000
Mitglied
Beiträge: 41
Registriert: 29.12.2001 01:00
Wohnort: Mülheim a.d. Ruhr
Kontaktdaten:

RE...

Beitrag von thl1000 »

Also, ich habe folgendes geändert (funzt im IE und im Mozilla...

1. Smilies:

Code: Alles auswählen

function emoticon(text) {
	var txtarea = document.post.message;
	text = ' ' + text + ' ';
	if (txtarea.createTextRange && txtarea.caretPos) 
	{
		var caretPos = txtarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
		txtarea.focus();
	} 
	else if (document.getElementById && !document.all) // Mozilla
   	{
    	var selEnd = txtarea.selectionEnd;
    	var txtLen = txtarea.value.length;
    	var txtbefore = txtarea.value.substring(0,selEnd);
    	var txtafter =  txtarea.value.substring(selEnd, txtLen);
    	txtarea.value = txtbefore + text + txtafter;
   	}
	else 
	{
		txtarea.focus();
		txtarea.value  += text;
	}
}
2. Schriftfarbe und -grösse:

Code: Alles auswählen

function bbfontstyle(bbopen, bbclose) {
	var txtarea = document.post.message;

	if ((clientVer >= 4) && is_ie && is_win) 
	{
		theSelection = document.selection.createRange().text;
		if (!theSelection) 
		{
			var caretPos = txtarea.caretPos;
        	caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbopen + bbclose + ' ' : bbopen + bbclose;
        	txtarea.focus();
			//txtarea.value += bbopen + bbclose;
			//txtarea.focus();
			return;
		}
		document.selection.createRange().text = bbopen + theSelection + bbclose;
		txtarea.focus();
		return;
	}
	else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
	{
		mozWrap(txtarea, bbopen, bbclose);
		return;
	}
	else if (document.getElementById && !document.all) // Mozilla
   	{
    	var selEnd = txtarea.selectionEnd;
    	var txtLen = txtarea.value.length;
    	var txtbefore = txtarea.value.substring(0,selEnd);
    	var txtafter =  txtarea.value.substring(selEnd, txtLen);
    	txtarea.value = txtbefore + bbopen + bbclose + txtafter;
   	}
	else
	{
		txtarea.value += bbopen + bbclose;
		txtarea.focus();
	}
	storeCaret(txtarea);
}
Bei diesen Code-Änderungen werden die Smilies und der BBCode für Schriftfarbe u. -grösse an der Cursor-Position eingefügt.

Nur bei der Funktion bbstyle(bbnumber) komme ich nicht weiter.
Hier bräuchte ich Hilfe...
M.f.G.

thl1000
thl1000
Mitglied
Beiträge: 41
Registriert: 29.12.2001 01:00
Wohnort: Mülheim a.d. Ruhr
Kontaktdaten:

die Lösung?

Beitrag von thl1000 »

So, habe jetzt diesen Code, der allerdings beim Mozilla noch einen Bug hat:

Der Cursor springt nach jedem Einfügen eines BBCodes an das Ende des Textfeldes. Hier bräuchte ich jetzt noch Hilfe.

Code: Alles auswählen

function emoticon(text) 
{
	var txtarea = document.post.message;
	text = ' ' + text + ' ';
	
	if (is_ie)
	{
		if (txtarea.createTextRange && txtarea.caretPos) 
		{
			var caretPos = txtarea.caretPos;
			caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
			txtarea.focus();
		}
		else 
		{
			txtarea.focus();
			txtarea.value  += text;
		}
	} 
	else if (document.getElementById && !document.all) // Mozilla cursor fix
   	{
    	mozWrap(txtarea, text, '');
   	}
	else // Other browsers
	{
		txtarea.focus();
		txtarea.value  += text;
	}
}

function bbfontstyle(bbopen, bbclose) 
{
	var txtarea = document.post.message;

	if ((clientVer >= 4) && is_ie && is_win) 
	{
		theSelection = document.selection.createRange().text;
		if (!theSelection) 
		{
			// IE Cursor Fix
			var caretPos = txtarea.caretPos;
        	caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbopen + bbclose + ' ' : bbopen + bbclose;
        	txtarea.focus();
			//txtarea.value += bbopen + bbclose;
			//txtarea.focus();
			return;
		}
		document.selection.createRange().text = bbopen + theSelection + bbclose;
		txtarea.focus();
		return;
	}
	else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
	{
		mozWrap(txtarea, bbopen, bbclose);
		return;
	}
	else if (document.getElementById && !document.all) // Mozilla cursor fix
   	{
    	mozWrap(txtarea, bbopen, bbclose);
    	return;
   	}
	else  // Other browsers
	{
		txtarea.value += bbopen + bbclose;
		txtarea.focus();
	}
	storeCaret(txtarea);
}


function bbstyle(bbnumber) 
{
	var txtarea = document.post.message;

	txtarea.focus();
	donotinsert = false;
	theSelection = false;
	bblast = 0;

	if (bbnumber == -1) 
	{ 
		// Close all open tags & default button names
		while (bbcode[0]) 
		{
			if(is_ie) // IE cursor fix
    		{
				if (txtarea.createTextRange && txtarea.caretPos) 
            	{
        			var caretPos = txtarea.caretPos;
        			butnumber = arraypop(bbcode) - 1;
        			caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbtags[butnumber + 1] + ' ' : bbtags[butnumber + 1];
        			buttext = eval('document.post.addbbcode' + butnumber + '.value');
        			eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
    				
    			}
    			else 
    			{
    				butnumber = arraypop(bbcode) - 1;
    				txtarea.value += bbtags[butnumber + 1];
    				buttext = eval('document.post.addbbcode' + butnumber + '.value');
    				eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
    				
    			}
    		}
    		else if (document.getElementById && !document.all) // Mozilla cursor fix
    		{
    		    butnumber = arraypop(bbcode) - 1;
    		    mozWrap(txtarea, bbtags[butnumber + 1], '');
    			buttext = eval('document.post.addbbcode' + butnumber + '.value');
        		eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
    			
    		} 
    		else  // Other browsers
    		{
    			butnumber = arraypop(bbcode) - 1;
    			txtarea.value += bbtags[butnumber + 1];
    			buttext = eval('document.post.addbbcode' + butnumber + '.value');
    			eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
    			
    		}
			//butnumber = arraypop(bbcode) - 1;
			//txtarea.value += bbtags[butnumber + 1];
			//buttext = eval('document.post.addbbcode' + butnumber + '.value');
			//eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
		}
		imageTag = false; // All tags are closed including image tags :D
		txtarea.focus();
		return;
	}

	if ((clientVer >= 4) && is_ie && is_win)
	{
		theSelection = document.selection.createRange().text; // Get text selection
		if (theSelection) 
		{
			// Add tags around selection
			document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1];
			txtarea.focus();
			theSelection = '';
			return;
		}
	}
	else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
	{
		mozWrap(txtarea, bbtags[bbnumber], bbtags[bbnumber+1]);
		return;
	}
	
	// Find last occurance of an open tag the same as the one just clicked
	for (i = 0; i < bbcode.length; i++) {
		if (bbcode[i] == bbnumber+1) {
			bblast = i;
			donotinsert = true;
		}
	}	
	
	if (donotinsert) 
	{		
		// Close all open tags up to the one just clicked & default button names
		while (bbcode[bblast]) 
		{
			if (is_ie) // IE cursor fix
			{
				if (txtarea.createTextRange && txtarea.caretPos) 
            	{
        			var caretPos = txtarea.caretPos;
        			butnumber = arraypop(bbcode) - 1;
        			caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbtags[butnumber + 1] + ' ' : bbtags[butnumber + 1];
        			buttext = eval('document.post.addbbcode' + butnumber + '.value');
            		eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
            		imageTag = false;
            		
    			}
    			else 
    			{
    				butnumber = arraypop(bbcode) - 1;
            		txtarea.value += bbtags[butnumber + 1];
            		buttext = eval('document.post.addbbcode' + butnumber + '.value');
            		eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
            		imageTag = false;
            		
    			}
    		} 
    		else if (document.getElementById && !document.all) // Mozilla cursor fix
    		{
    		    butnumber = arraypop(bbcode) - 1;
    		    mozWrap(txtarea, bbtags[butnumber + 1], '');
    			buttext = eval('document.post.addbbcode' + butnumber + '.value');
            	eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
            	imageTag = false;
            	
    		}
    		else // Other browsers
    		{
    			butnumber = arraypop(bbcode) - 1;
            	txtarea.value += bbtags[butnumber + 1];
            	buttext = eval('document.post.addbbcode' + butnumber + '.value');
            	eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
            	imageTag = false;
            	
    		}
			//butnumber = arraypop(bbcode) - 1;
			//txtarea.value += bbtags[butnumber + 1];
			//buttext = eval('document.post.addbbcode' + butnumber + '.value');
			//eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
			//imageTag = false;
		}
		txtarea.focus();
		return;
	}
	else 
	{ 
		// Open tags
		if (is_ie)  // IE cursor fix
		{
			if (imageTag && (bbnumber != 14)) 
        	{        
        		// Close image tag before adding another
        		var caretPos = txtarea.caretPos;
        		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbtags[15] + ' ' : bbtags[15];
        		lastValue = arraypop(bbcode) - 1;    // Remove the close image tag from the list
            	document.post.addbbcode14.value = "Img";    // Return button back to normal state
            	imageTag = false;
        	}
        
        	// Open tag
        	if (txtarea.createTextRange && document.post.message.caretPos) 
        	{
        		var caretPos = txtarea.caretPos;
        		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbtags[bbnumber] + ' ' : bbtags[bbnumber];
        		if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
        		arraypush(bbcode,bbnumber+1);
        		eval('document.post.addbbcode'+bbnumber+'.value += "*"');
        		txtarea.focus();
        		return;
    		} 
    		else 
    		{
    			txtarea.value += bbtags[bbnumber];
    			if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
        		arraypush(bbcode,bbnumber+1);
        		eval('document.post.addbbcode'+bbnumber+'.value += "*"');
        		txtarea.focus();
        		return;
    		}
		}
		else if (document.getElementById && !document.all) // Mozilla cursor fix
		{
			// Open tags
			if (imageTag && (bbnumber != 14)) 
			{		
				// Close image tag before adding another
				mozWrap(txtarea, bbtags[15], bbtags[bbnumber]);
				lastValue = arraypop(bbcode) - 1;	// Remove the close image tag from the list
				document.post.addbbcode14.value = "Img";	// Return button back to normal state
				imageTag = false;
				arraypush(bbcode,bbnumber+1);
				eval('document.post.addbbcode'+bbnumber+'.value += "*"');
				//txtarea.focus();
        		//return;
			}
   			else
   			{
				// Open tag
				mozWrap(txtarea, bbtags[bbnumber], '');
				if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
				arraypush(bbcode,bbnumber+1);
				eval('document.post.addbbcode'+bbnumber+'.value += "*"');
				txtarea.focus();
				return;
			}
		}
		else  // Other browsers
		{
			if (imageTag && (bbnumber != 14)) 
			{		
				// Close image tag before adding another
				txtarea.value += bbtags[15];
				lastValue = arraypop(bbcode) - 1;	// Remove the close image tag from the list
				document.post.addbbcode14.value = "Img";	// Return button back to normal state
				imageTag = false;
			}
   			else
   			{
				// Open tag
				txtarea.value += bbtags[bbnumber];
				if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
				arraypush(bbcode,bbnumber+1);
				eval('document.post.addbbcode'+bbnumber+'.value += "*"');
				txtarea.focus();
				return;
			}	
		}
	}
	storeCaret(txtarea);
}
M.f.G.

thl1000
thl1000
Mitglied
Beiträge: 41
Registriert: 29.12.2001 01:00
Wohnort: Mülheim a.d. Ruhr
Kontaktdaten:

RE...

Beitrag von thl1000 »

Hat denn keiner eine Idee?
M.f.G.

thl1000
SevenIsMy
Mitglied
Beiträge: 37
Registriert: 27.07.2003 20:49

Beitrag von SevenIsMy »

http://www.c-plusplus.de/forum/posting. ... topic&f=15

kuck dir mal den quellcode an, (ich habe das gecodet) wollte das auch schon public machen, nur war mir das zu dumm die neuerung in das halbhertzig gecodet standard phpbb einzucoden
thl1000
Mitglied
Beiträge: 41
Registriert: 29.12.2001 01:00
Wohnort: Mülheim a.d. Ruhr
Kontaktdaten:

RE...

Beitrag von thl1000 »

Moin,,

Dein Code fügt den BBCode am Ende des Textes ein (zumindest beim Mozilla). Aber Danke für den Tipp...
M.f.G.

thl1000
SevenIsMy
Mitglied
Beiträge: 37
Registriert: 27.07.2003 20:49

Beitrag von SevenIsMy »

scheisse das hatt doch mal funktioniert, mom ich muss mal kucken
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“