Plugin bei Dispatcher registrieren

  • Hallo @ All,
    anscheinend reagieren Fields Plugings nicht auf

    Code
    onContentPrepareForm(JForm $form, $data)

    Events.

    Gibt es eine Möglichkeit manuell das Plugin an dem Dispatcher zu registrieren?

    Viele Grüße
    Tom

    Grüßkes datTom
    Das Leben ist zu kurz um sich zu ärgern.

  • Weiß in diesem Fall auch nicht genau und hängt ja auch von der Umgebung ab. Models (oder deren extended parents) bieten oft die Methode

    Code
     protected function preprocessForm(\JForm $form, $data, $group = 'content')
    {

    die dann die Plugins gleich abwickeln.

    Also tät ich mal diese Zeilen aus so einer probieren und halt mit gewünschter Plugin-Gruppe statt 'content':

    https://github.com/joomla/joom…l/FormModel.php#L314-L321


    Vielleicht reicht ja auch Zeile 315. Blick da auch jedesmal wieder nicht durch und muss ausprobieren, wenn ich mit eigenen Plugin-Gruppen/Ordnern arbeite.

  • Klappt so leider nicht.

    Vielleicht ist mein Ansatz auch falsch. :/

    Ich bin dabei ein Plugin zu schreiben, mit dem registrierte Benutzer Ihre Privaten Daten vor externer Veränderung, z.B. im Backend, schützen können.

    Bisher habe ich es so gelöst, das ich je nach Status der Einstellung eine Javascript Funktion generiert habe, die entsprechende Felder disabled|readonly oder hidden gesetzt hat.

    Ich würde den Status aber lieber im Form Object selber festlegen.


    Grüßkes datTom
    Das Leben ist zu kurz um sich zu ärgern.

  • Alle Joomla-Formulare (JForm-Formulare) durchlaufen automatisch onContentPrepareForm beim Laden des Formulars und beim Senden des Formulars. Das Benutzer-Profil-Formular ist so eines. Du kannst nahezu alles dazuzaubern und manipulieren, verbieten usw. wie du willst.


    Auf der andern Seite frage ich mich allerdings, warum du dann nicht gleich ein Eigenes Feld (com_fields) für diese Einstellung verwendest. Erspart ja schon mal die Aktion Formularfelder selber hinzuzubasteln (obwohl ich das selbst nach wie vor oft mache).


    In onContentPrepareForm fragst dann im Backend den Wert dieses Feldes ab und setzt ggf. die Felder mit JForm-Methoden auf disabled (oder war's readonly?) oder hidden, die dort nicht verändert werden dürfen.


    Weiß halt nicht, was du mit "privaten Feldern" meinst. Soweit ich mich erinnere kann man bei Verwendung von Eigenen Feldern (com_fields) auch einstellen, dass sie im Backend gar nicht angezeigt werden. Wenn du das Plugin User-Profile (oder wie's heißt) verwendest, geht das wohl nicht (weiß nicht gewiss).


    Kurz: Brauchst "nur" ein eigenes Plugin (Content oder System), das auf den richtigen Moment lauscht.

  • Mit privaten Feldern meine ich alle Felder die im User Formular vorkommen können, außer z.B. Gruppen, System-E-Mails erhalte, Benutzerstatus, Passwortzurücksetzung fordern und von Administratoren manipuliert werden könnten.

    Von einigen Benutzern in unseren Forum wurde eine Möglichkeit gewünscht, die externe Manipulation von Adressen etc, zu unterbinden. Nicht das es je passiert ist, aber es besteht halt die Möglichkeit.

    Das Plugin ist ein Fields Plugin (com_field)


    Code
    class plgFieldsUserData_Lock extends FieldsPlugin

    in diesem Plugin wird onContentPrepareForm nicht getriggert.

    Ich glaube ich werde die von mir gewünschte Funktionalität in 2 Plugins trennen. Das FieldsPlugin für das Einstellen und ein Systemplugin für die Manipulation der Formular Felder .

    Grüßkes datTom
    Das Leben ist zu kurz um sich zu ärgern.