Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Autocomplete in Javascript-Fenster
#1
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?
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#2
Wie sieht deine jetzige Lösung aus?
Ich denke man braucht ein Popup, in dem man das machen kann.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
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.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#4
Damit wird das nicht funktionieren. Du brauchst dann schon ein Popup-Fenstern mit HTML.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#5
Hallo Jockl,

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

Mfg Garlant
Ich gebe keinen Support per Messenger oder PN!
Zitieren
#6
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
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#7
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.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#8
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
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#9
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
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#10
{$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
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Weisse Seite, wenn sich javascript-Fenster öffnen sollte melancholia 8 2.849 19.09.2014, 13:02
Letzter Beitrag: melancholia
  Autocomplete funktioniert nicht melancholia 8 2.389 27.04.2013, 16:57
Letzter Beitrag: melancholia