1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Schöner Posten mit meinem Favelet

Dieses Thema im Forum "Apfeltalk Feedback" wurde erstellt von Skeeve, 17.07.08.

  1. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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]
     
    #1 Skeeve, 17.07.08
    Zuletzt bearbeitet: 17.07.08
    Dante101 gefällt das.
  2. AgentSmith

    AgentSmith Hochzeitsapfel

    Dabei seit:
    15.07.07
    Beiträge:
    9.361
    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.
     
  3. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    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.
     
  4. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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
     
    #4 Skeeve, 17.07.08
    Zuletzt bearbeitet: 17.07.08
  5. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Das macht ja nichts! Wenn ich denen dadurch die „Arbeit“ erleichtere, ist das doch auch was Feines.
     
  6. AgentSmith

    AgentSmith Hochzeitsapfel

    Dabei seit:
    15.07.07
    Beiträge:
    9.361
    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".
     
  7. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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.
     
  8. AgentSmith

    AgentSmith Hochzeitsapfel

    Dabei seit:
    15.07.07
    Beiträge:
    9.361
    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? [​IMG]
     
  9. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    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)
     
  10. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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.
     
  11. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    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?
     
  12. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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]
     
    #12 Skeeve, 17.07.08
    Zuletzt bearbeitet: 17.07.08
  13. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    Funktioniert auch nicht. Firefox meldet bei der Ausführung einen Fehler. :(
     
  14. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Der da lautet? Öffne mal die Fehlerkonsole? Es geht um das Halbschöne, richtig? Das habe ich ja noch nicht getestet.
     
  15. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    Moment. Ich versuch vorher das Schöne.

    EDIT: Auch nix.

    Fehlermeldung:

    [​IMG]
     
  16. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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.
     
  17. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    Zur Erinnerung: Ich habe FF2.
     
  18. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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.
     
  19. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    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?
     
  20. waschbär123

    waschbär123 Echter Boikenapfel

    Dabei seit:
    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
     

Diese Seite empfehlen