MyBB.de Forum
Autocomplete in Javascript-Fenster - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html)
+--- Thema: Autocomplete in Javascript-Fenster (/thread-16226.html)

Seiten: Seiten: 1 2


Autocomplete in Javascript-Fenster - Jockl - 17.05.2010

Hallo zusammen,

ich habe mir im Editor einen zusätzlichen Button gebastelt, über dessen Eingabefenster ein Username eingegeben werden kann. Idealerweise hätte ich da jetzt gerne die Autocomplete-Funktion eingebaut, damit Schreibfehler weitestgehend ausgeschlossen werden können.

Mit PHP und einem Template habe ich das schon mal eingebaut aber wie und ob das mit Javscript auch geht, ist mir im Moment ein Rätsel.

Hat da jemand vielleicht einen Tipp für mich?


RE: Autocomplete in Javascript-Fenster - StefanT - 18.05.2010

Wie sieht deine jetzige Lösung aus?
Ich denke man braucht ein Popup, in dem man das machen kann.


RE: Autocomplete in Javascript-Fenster - Jockl - 18.05.2010

Hallo Stefan,

ich habe gerade leider keinen FTP-Zugang zu meinem Code aber im Grunde ist es nichts anderes, wie auch die Funktion insertIMG, die aus der editor.js aufgerufen wird.
Code:
insertIMG: function()
    {
        image = prompt(this.options.lang.enter_image, "http://");
        
        if(image)
        {
        this.performInsert("[img]"+image+"[/img]", "", true);
        }
},
Durch meinen Code wird ein Fenster geöffnet, in dem ich den Usernamen eingeben kann, der dann anschließend weiter verarbeitet wird. Das funktioniert soweit auch schon alles. Das i-Tüpfelchen wäre aber eben noch die Autocomplete-Funktion während der Eingabe des Usernamen.


RE: Autocomplete in Javascript-Fenster - StefanT - 18.05.2010

Damit wird das nicht funktionieren. Du brauchst dann schon ein Popup-Fenstern mit HTML.


RE: Autocomplete in Javascript-Fenster - Garlant - 18.05.2010

Hallo Jockl,

wie die Autocomplete-Funktion funktioniert, kannst du im Filter der memberlist sehen und für dich anpassen.

Mfg Garlant


RE: Autocomplete in Javascript-Fenster - Jockl - 18.05.2010

Sorry, jetzt steh ich vermutlich ziemlich auf dem Schlauch...Blush

Mit "Popup-Fenster mit HTML" verstehst Du aber nicht den Aufruf von z.B. MyBB.PopupMenu() oder?

In einem HTML-Popup könnte ich dann z.B. diese Funktion aufrufen?
Code:
<script type="text/javascript">
<!--
    if(use_xmlhttprequest == "1")
    {
        new autoComplete("username", "xmlhttp.php?action=get_users", {valueSpan: "username"});
    }
// -->
</script>
Die Übergabe des Wertes in den Editor erfolgt dann via $_GET()? Kann ich so einen Aufruf eines HTML-Popups auch in den Editor integrieren?

Wie gesagt, jetzt bin ich gerade komplett verwirrt. Muss mich erst von den Gedanken lösen,
die ich mir bislang zur Realisierung dieser Sache gemacht habe. Wink


RE: Autocomplete in Javascript-Fenster - Michael - 18.05.2010

Das ganze ist komplizierter als einfach nur ein Javascript-Popup zu erzeugen. Du müsstest einen HTML-Layer o.ä. einbinden, wo du dann wiederum den Code für Autocomplete unterbringen kannst.


RE: Autocomplete in Javascript-Fenster - Jockl - 19.05.2010

HTML-Layer sagt mir jetzt leider nicht ganz so viel...Blush

Stefan hat mich auf sein Wiki-Plugin verwiesen, das mittels Popup-Fenster auch so etwas macht, was ich realisieren möchte. Stefan's Code ist allerdings um einiges umfangreicher und meine weiteren Versuche sind auch nicht so besonders erfolgreich.

Mein Stand ist bislang wie folgt:

Mit folgenden Zeilen in der editor.js
Code:
    insertTagging: function()
    {
        var url = "usertagging.php"
        usertagging = MyBB.popupWindow(url, 'username',300,50);
    },
öffne ich ein Popup-Fenster. Die Datei usertagging.php enthält folgende Zeilen
PHP-Code:
<?php
define
("IN_MYBB"1);
define("NO_ONLINE"1);
 
require(
"global.php");

global 
$mybb;

eval(
"\$usertagging = \"".$templates->get("usertagging")."\";");
output_page($usertagging);
?>
Das Template sieht folgendermaßen aus (zugegebenermaßen ein wenig von Stefans Code abgekupfert)
Code:
<script type="text/javascript">
<!--
    function get_return()
        if($('username').value != '')
        {
            return '@[' +$('username').value+ ']';
        }
//-->
</script>
Gib bitte den Namen des Users ein:
<form>
<input type="text" class="textbox" name="username" id="username" style="width: 80%; margin-top: 10px;" value="" />
<input type="button" value="OK" onclick="opener.editor.performInsert(get_return(), "", true, false); window.close();" />
</form>

<script type="text/javascript" src="jscripts/autocomplete.js?ver=1400"></script>
<script type="text/javascript">
<!--
    if(use_xmlhttprequest == "1")
    {
        new autoComplete("username", "xmlhttp.php?action=get_users", {valueSpan: "username"});
    }
// -->
</script>

Das Fenster öffnet sich, aber weder funktioniert die Autovervollständigung noch nach dem Click auf "OK" der Übertrag des eingegebenen Usernamens in das Editor-Fenster. Über einen Tipp würde ich mich riesig freuen. Wink


RE: Autocomplete in Javascript-Fenster - StefanT - 20.05.2010

Im Prinzip sieht das richtig aus... Kommt ein Fehler in der Fehlerkonsole? Nicht, dass ein Tippfehler drin ist.
Bei dem Template würde ich noch <head> und <body>,... einfügen. Außerdem kannst du noch {$headerinclude} einbauen, damit alles zum Design passt.
PS: In der usertagging.php brauchst du kein global $mybb;. Wink


RE: Autocomplete in Javascript-Fenster - Jockl - 20.05.2010

{$headerinclude} war ein guter Tipp. Zumindest ein Teil davon ist nämlich Voraussetzung, damit autoComplete funktioniert. Wink

Allerdings funktioniert der Übertrag in das Editor-Textfeld nicht. Das liegt an dem Aufruf "open.editor.performInsert()". Klar, "editor" ist ja auch nicht definiert, da es aus dem Wiki-Plugin kopiert wurde. Die Frage ist nur, wie kann ich den Übertrag in das Editor-Textfeld realisieren? Könnte es mit "opener.document.getElementById" klappen? Allerdings kenn ich die ID des Textfeldes nicht.... Ach, Fragen über Fragen. Blush