• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick
  • Auch in diesem Jahr möchten wir auf unserer Webseite mit einem passenden Banner etwas weihnachtliche Stimmung verbreiten. Jeder Apfeltalker kann, darf und sollte uns einen Banner-Entwurf zusenden, wie und wo das geht, könnt Ihr hier nachlesen --> Klick

Schöner Posten mit meinem Favelet

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Ich mag Favelets!

Das erste, das ich geschrieben hatte, aber nicht das erste, das ich veröffentliche, ist dieses „VB - Schöner Posten“ Favelet.

Wenn man das aufruft, nachdem man seinen Beitrag eingegeben hat, aber bevor man ihn abschickt, werden ein paar Ersetzungen vorgenommen:
  1. URLs die auf Threads verweisen werden durch [noparse][thread][/noparse] ersetzt. Damit öffnet sich der Link nicht standardmäßig in einem neuen Fenster.
  2. URLs die auf Beiträge verweisen werden durch [noparse][post][/noparse] ersetzt. Damit öffnet sich der Link nicht standardmäßig in einem neuen Fenster.
    Außerdem – und das halte ich für wichtig – funktionieren so bearbeitete permalinks.
  3. eine youtube URL, die nicht bereits als [noparse][/noparse] eingetragen ist, sondern nur im Text auftaucht, wird durch [noparse][yt]youtube-ID[/yt][/noparse] ersetzt.

Das Favelet ist noch nicht optimal, da es auch Links, die in andere Foren verweisen, ersetzt, aber daran arbeite ich dann (später) noch.
Erledigt! Es werden nun nur solche URLs ersetzt, die auf denselben Host und dasselbe Protokoll verweisen. Also einfach gesagt die, die zu dem Forum gehören, in dem man sich befindet.

Außerdem bleibt markierter Text markiert.

Die Installation ist, wie üblich, krude:
  1. Ein neues Lesezeichen im Lesezeichen-Manager anlegen.
  2. Einen Namen für das neue Lesezeichen wählen (Vorschlag: VB - Schöner Posten).
  3. In das Adressfeld den JavaScript-Code (siehe unten) kopieren.

Die Bedienung ist oben ja schon beschrieben. Als Ergänzung: Wenn im VBulletin-Editor Text markiert ist, so wird die Ersetzung nur im markierten Teil vorgenommen. Also entweder alles oder gar nichts markieren, wenn der gesamte eingegebene Text zu bearbeiten ist.

Für FireFox 2.4 User gibt es das unten [post=1538107]nochmal als Einzeiler[/post].

Für FireFox vor 2.4 wahrscheinlich ungeeignet

Code:
[noparse]
javascript:try{
var te= document.getElementById('vB_Editor_QE_1_textarea')
|| document.getElementById('vB_Editor_QR_textarea')
|| document.getElementById('vB_Editor_001_textarea');
if (!te) throw "Kein VBulletin Editor gefunden";

var url=(window.location.protocol+"//"+window.location.host+"/").replace(/(\([\[{.*?}\\+\]]\))/, "\\$1");
var post= new RegExp('\\[url="?'+url+'[^\\]]+#post(\\d+)"?\\](.*?)\\[/url\\]', "gi");
var thread= new RegExp('\\[url="?'+url+'[^\\]]+-t(\\d+)(?:-\\d+)?\\.html"?\\](.*?)\\[/url\\]', "gi");

var s= te.selectionStart;
var e= te.selectionEnd;
var m= true;
if (s==e) {
	s=0;
	e=te.value.length;
	m=false;
}

var str1 = te.value.substring(0,s);
var str2 = te.value.substring(s,e);
var str3 = te.value.substring(e,te.value.length);
str2= str2
.replace(post, "[post=$1]$2\[/post]")
.replace(thread, "[thread=$1]$2\[/thread]")
.replace(/([^"=]|^)http:\/\/\S+[?&]v=([^=\s]+|$)/gi, "$1[yt]$2[/yt]")
;
te.value= str1 + str2 + str3;
if (m) {
	te.selectionStart= s;
	te.selectionEnd= s+str2.length;
}
}catch(e){if(e)alert(e)}void(0);
[/noparse]
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Dante101

AgentSmith

Hochzeitsapfel
Registriert
15.07.07
Beiträge
9.304
Sehr praktisch, habe mir was Ähnliches in PHP gebastelt gehabt, ich fürchte nur, dass die paar wenigen, die das wirklich benutzen werden, vorher auch schon sehr auf die "Schönheit" ihrer Beiträge geachtet haben.
 

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Was ich allerdings nicht mag, ist genau das, wenn sich ein link NICHT in einem neuen Fenster aufmacht. Ich will nämlich meistens in dem Ursprungsthread weiterlesen. (Manchmal sogar parallel lesen)

Das zweite "Problem" das ich dabei sehe ist, dass das Favelet mit Sicherheit nur ein Bruchteil der User verwendet. So entsteht ein Durcheinander (ein link im gleichen Fenster, ein anderer wieder in einem neuen) welches bei surfen/lesen eher stört als hilft.

Das mit den YouTube-Videos ist allerdings genial.
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Was ich allerdings nicht mag, ist genau das, wenn sich ein link NICHT in einem neuen Fenster aufmacht. Ich will nämlich meistens in dem Ursprungsthread weiterlesen. (Manchmal sogar parallel lesen)

Dafür haben die Programmierer doch den Apfel-Klick geschaffen ;) Neee im Ernst jetzt: Ein Link hat sich meiner unmaßgeblichen Webentwicklermeinung nach im selben Fenster zu öffnen. Ich halte es für eine Unhöflichkeit eines Seitengestalters, wenn er mir aufzwingt, einen Link in einem neuen Fenster öffnen zu müssen. Ich will die Entscheidungshoheit darüber haben. Von daher fände ich es schon besser, wenn alle Links hier so wären.

Aber bitteschön. Hier ist ein „VB - Halbschön Posten“ Favelet für Dich. Es repariert (hoffentlich) die permalinks und beherrscht Youtube links.

Code:
[NOPARSE]
javascript:try{
var te= document.getElementById('vB_Editor_QE_1_textarea')
|| document.getElementById('vB_Editor_QR_textarea')
|| document.getElementById('vB_Editor_001_textarea');
if (!te) throw "Kein VBulletin Editor gefunden";

var url=(window.location.protocol+"//"+window.location.host+"/").replace(/(\([\[{.*?}\\+\]]\))/, "\\$1");
var thread= new RegExp('(\\[url="?'+url+'[^\\]]+)(?:-\\d+)(\\.html"?\\])', "gi");

var s= te.selectionStart;
var e= te.selectionEnd;
var m= true;
if (s==e) {
	s=0;
	e=te.value.length;
	m=false;
}

var str1 = te.value.substring(0,s);
var str2 = te.value.substring(s,e);
var str3 = te.value.substring(e,te.value.length);
str2= str2
.replace(thread, "$1$2")
.replace(/([^"=]|^)http:\/\/\S+[?&]v=([^=\s]+|$)/gi, "$1[yt]$2[/yt]")
;
te.value= str1 + str2 + str3;
if (m) {
	te.selectionStart= s;
	te.selectionEnd= s+str2.length;
}
}catch(e){if(e)alert(e)}void(0);
[/NOPARSE]

Anmerkung: Ich habe es nicht getestet
 
Zuletzt bearbeitet:

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
ich fürchte nur, dass die paar wenigen, die das wirklich benutzen werden, vorher auch schon sehr auf die "Schönheit" ihrer Beiträge geachtet haben.
Das macht ja nichts! Wenn ich denen dadurch die „Arbeit“ erleichtere, ist das doch auch was Feines.
 

AgentSmith

Hochzeitsapfel
Registriert
15.07.07
Beiträge
9.304
Definitiv! Richtig genial wäre natürlich, wenn die RegEx einfach intern vor dem Speichern des Nachrichtentextes angewandt würden, auf jedes Posting..
Das sollte technisch jedenfalls möglich sein, denn für den Postingtitel hab ich das ja schonmal gemacht - das hat prima geklappt.
Vielleicht guck ich mir das mal an und versuche wieder so eine "Kopieren, Einbauen, Fertig"-Lösung daraus zu machen wie "damals".
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Das bedeutet aber, daß AT das einbinden muß, oder?

Daß Du das durch bekommst wage ich in Zweifel zu ziehen. Zum einen sind da die Macher vor, die, als gebranntes Kind, bestimmt das Feuer scheuen, zum anderen die Nutzer, die das zum Teil (Hallo Dante! ;)) nicht wollen.
 

AgentSmith

Hochzeitsapfel
Registriert
15.07.07
Beiträge
9.304
Ja, das bedeutet das, stimmt - aber das mit dem Threadtitel hat(te?) ja auch geklappt. Den Umfang der übernommenen Ersetzungen kann man ja abstufen - permanent funktionierende Permalinks und YouTube-Autoeinbindung wären doch schonmal klasse, oder?
wink.gif
 

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Ich bin lernfähig, dh. wird es vereinheitlicht, kann und will ich mir auch angewöhnen, links manuell in einem neuen Fenster zu öffnen. Was ich nicht will ist ein Durcheinander.

EDIT: Ich wollte mir nun Dein Script installieren – danke, Skeeve – aber ich kann in das Adressfeld nur eine Zeile einfügen, nicht aber den ganzen code. Was mach ich falsch? (Habe Firefox)
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
EDIT: Ich wollte mir nun Dein Script installieren – danke, Skeeve – aber ich kann in das Adressfeld nur eine Zeile einfügen, nicht aber den ganzen code. Was mach ich falsch? (Habe Firefox)
Mit Copy & Paste klappt das auch beim FireFox (3). Zumindest hier. Sieht zwar merkwürdig aus, geht aber. FireFox baut die Leerzeichen, tabs und Zeilenumbrüche selbst passsend um.

P.S. Ist bei Safari genauso: Angezeigt wird nur eine Zeile. Pasten kann man aber ganz viele.
 

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
funktiniert nicht.

Ob ichs richtig verstanden habe:

Ich habe ein neues Bookmark angelegt und in dessen Adressfeld den Code kopiert. (Angezeigt wird mir dort allerdings nur die Zeile

Code:
javascript:try{
Wenn ich nun eine Antwort schreibe und zB. http://www.youtube.com/watch?v=Ll2CtBbaJBA eingebe und anschliessend auf das Bookmark klicke, sollte sich der Text dementsprechend ändern.

Macht er aber nicht. o_O

Kann es sein, dass es mit Firefox 2.0.0.16 nicht funktioniert?
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Kann es sein, dass es mit Firefox 2.0.0.16 nicht funktioniert?
Das könnte sein.
Hier Schöner Posten (erste Zeile) und Halbschön Posten (Zweite Zeile) als Einzeiler:
Code:
[NOPARSE]javascript:try{var%20te=%20document.getElementById('vB_Editor_QE_1_textarea')||%20document.getElementById('vB_Editor_QR_textarea')||%20document.getElementById('vB_Editor_001_textarea');if%20(!te)%20throw%20"Kein%20VBulletin%20Editor%20gefunden";var%20url=(window.location.protocol+"//"+window.location.host+"/").replace(/(\([\[{.*?}\\+\]]\))/,%20"\\$1");var%20post=%20new%20RegExp('\\[url="?'+url+'[^\\]]+#post(\\d+)"?\\](.*?)\\[/url\\]',%20"gi");var%20thread=%20new%20RegExp('\\[url="?'+url+'[^\\]]+-t(\\d+)(?:-\\d+)?\\.html"?\\](.*?)\\[/url\\]',%20"gi");var%20s=%20te.selectionStart;var%20e=%20te.selectionEnd;var%20m=%20true;if%20(s==e)%20{%09s=0;%09e=te.value.length;%09m=false;}var%20str1%20=%20te.value.substring(0,s);var%20str2%20=%20te.value.substring(s,e);var%20str3%20=%20te.value.substring(e,te.value.length);str2=%20str2.replace(post,%20"[post=$1]$2\[/post]").replace(thread,%20"[thread=$1]$2\[/thread]").replace(/([^"=]|^)http:\/\/\S+[?&]v=([^=\s]+|$)/gi,%20"$1[yt]$2[/yt]");te.value=%20str1%20+%20str2%20+%20str3;if%20(m)%20{%09te.selectionStart=%20s;%09te.selectionEnd=%20s+str2.length;}}catch(e){if(e)alert(e)}void(0);

javascript:try{%20var%20te=%20document.getElementById('vB_Editor_QE_1_textarea')%20||%20document.getElementById('vB_Editor_QR_textarea')%20||%20document.getElementById('vB_Editor_001_textarea');%20if%20(!te)%20throw%20"Kein%20VBulletin%20Editor%20gefunden";%20%20var%20url=(window.location.protocol+"//"+window.location.host+"/").replace(/(\([\[{.*?}\\+\]]\))/,%20"\\$1");%20var%20thread=%20new%20RegExp('(\\[url="?'+url+'[^\\]]+)(?:-\\d+)(\\.html"?\\])',%20"gi");%20%20var%20s=%20te.selectionStart;%20var%20e=%20te.selectionEnd;%20var%20m=%20true;%20if%20(s==e)%20{%20s=0;%20e=te.value.length;%20m=false;%20}%20%20var%20str1%20=%20te.value.substring(0,s);%20var%20str2%20=%20te.value.substring(s,e);%20var%20str3%20=%20te.value.substring(e,te.value.length);%20str2=%20str2%20.replace(thread,%20"$1$2")%20.replace(/([^"=]|^)http:\/\/\S+[?&]v=([^=\s]+|$)/gi,%20"$1[yt]$2[/yt]")%20;%20te.value=%20str1%20+%20str2%20+%20str3;%20if%20(m)%20{%20te.selectionStart=%20s;%20te.selectionEnd=%20s+str2.length;%20}%20}catch(e){if(e)alert(e)}void(0);
[/NOPARSE]
 
Zuletzt bearbeitet:

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Funktioniert auch nicht. Firefox meldet bei der Ausführung einen Fehler. :(
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Der da lautet? Öffne mal die Fehlerkonsole? Es geht um das Halbschöne, richtig? Das habe ich ja noch nicht getestet.
 

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Moment. Ich versuch vorher das Schöne.

EDIT: Auch nix.

Fehlermeldung:

screenshot01lo2.jpg
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Okay… Ich habe gerade im FF3 nochmal getestet. Zum einen habe ich einen kleinen Bug im regulären Ausdruck für Youtube der sich aber nur auswirkt, wenn die URL am Anfang oder am Ende vom Text steht. Das bessere ich nach.

Zum anderen hat das Favelet in FF3 aber zur Folge, daß die Seite verlassen wird. Das ist natürlich FATAL! Ich forsche, woran das liegt.
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
So! Geändert. Bitte noch mal testen. Ich habe alle vier Versionen angepaßt.

Wenn es (in FF2) nicht läuft, könnte das daran liegen, daß es zu lang ist.
 

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Nochmal eine Zwischenfrage: Kann es sein, dass bei mir Sonderzeichen falsch dargestellt und kopiert werden? (Ist %20 nicht eigentlich ein Slash?) (sh Screenshot meiner Fehlermeldung)

Möglicherweise ein Einstellungsproblem bei meinen Schriften oder in der Codierung?
 

waschbär123

Echter Boikenapfel
Registriert
26.04.08
Beiträge
2.353
hallo skeeve. entschuldige meine ausschweifungen der letzten tage...

find ich klasse die idee. aber irgendwie scheitere ich an der umsetzung. habe ein lesezeichen gemacht, als adresse (also anstatt google.de oder so) habe ich diesen kompletten kasten von deinem ersten beitrag eingefügt. das lesezeichen habe ich Schöner Posten genannt und liegt bei Safari 3.1.2 im lesezeichen menu. habe es geben versucht zu verwenden aber es klappt irgendwie nicht. ich habe nen link aus dem anderen thread eingefügt und danach auf schöner posten geklickt, aber leider tut sich nichts.

mache ich etwas falsch, wenn ja was?

lg