ACP-Modul lässt sich nicht zuordnen

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Zwixx
Mitglied
Beiträge: 17
Registriert: 14.03.2015 11:40

ACP-Modul lässt sich nicht zuordnen

Beitrag von Zwixx »

Hallo,

ich habe mal wieder ein Problem mit einer extension und komme nicht weiter. Die Extension habe ich konvertiert aus einer alten, sie funktioniert auch wenn man sie manuell in die entsprechenden Verzeichnisse kopiert wie früher.

Jetzt habe ich diese umgewandelt, sie erscheint auch in den Modulen und lässt sich installieren. Soweit so gut. Wenn ich nun versuche diese Extension unter System/Administrationsbereich hinzuzufügen ist sie dort auch vorhanden. Er fragt mich dann noch ob diese Extension an der Stelle hinzugefügt werden soll (in dem Falle unter Beiträge/Nachrichten. Danach ist... Schluss. Die Extension taucht weder an der eigentlichen Stelle (wo ich sie hin haben wollte) noch in der Konfiguration auf.

Wo könnte man da als Fehler vermuten? Wo könnte man anfangen zu suchen?

Edith:
Im Debug-Modus bekomme ich folgende Meldung:
[phpBB Debug] PHP Notice: in file [ROOT]/includes/acp/acp_modules.php on line 198: Undefined index: xx/xx/acp/xxx_module
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: ACP-Modul lässt sich nicht zuordnen

Beitrag von gn#36 »

Ich verstehe deine Beschreibung nicht so ganz, da her weiß ich nicht ob ich das was du versuchst richtig interpretiere. Die vielen xxe in der Fehlermeldung sind auch nicht hilfreich, weil man hierdurch nicht mehr weiß, was genau das für ein Ordner ist, in dem phpBB nach der Datei sucht. Ich probier's daher mal mit ein paar "generischen" Hilfestellungen bei der Konvertierung, weil ich an der Konvertierung eines UCP Moduls, was inhaltlich eigentlich so bleiben konnte auch eine halbe Ewigkeit saß, weil es einfach nicht im persönlichen Bereich auftauchen wollte.

Du solltest deine neuen ACP Module nicht mehr in die bisherigen Ordner includes/acp/ legen, sondern in den genauso benannten Unterordner in deiner Extension (also ext/vendor/extname/acp). Es sollte zwei Dateien geben: acp_namedesmoduls_info.php und acp_namedesmoduls_module.php

Ein Beispiel findest du hier.

Der Namespace in beiden Dateien ist wichtig, der sollte passend zur Extension vendor\extname\acp sein, die Klassennamen müssen den Dateinamen entsprechen. In der _info.php Datei legst du die Definition der _module.php Datei analog zu dem an, was Crizzo angelegt hat. Um Fehler zu vermeiden sollte der auth Eintrag bei allen definierten modes mit ext_vendor/extname && beginnen. Überhaupt ist das ganze ziemlich empfindlich gegenüber Fehlern in der info Datei.

Anschließend fügst du eine Migration hinzu, die die ACP Module installiert. Siehe hierzu die Passende Migration zu obigem Modul, wobei dort natürlich noch ein paar andere Dinge definiert werden (nur die module.add Einträge sind relevant). Ich habe hier sehr lange versucht, das Modul aus Versehen in einer falschen Kategorie zu installieren. Crizzo hat hier auch wie du siehst erst eine neue Kategorie angelegt, bevor er das eigentliche Modul einfügt (hat also zwei Module eingefügt).

Durch diese Migration wird das Modul beim Installieren der Extension automatisch mit installiert.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Zwixx
Mitglied
Beiträge: 17
Registriert: 14.03.2015 11:40

Re: ACP-Modul lässt sich nicht zuordnen

Beitrag von Zwixx »

Hm... das ganze will ich ehrlich gesagt noch nicht so ganz verstehen. Hier einmal wie mein Migrationsmodul aussieht:

Code: Alles auswählen

<?php

namespace febrildur\importmessages\migrations\v100;

class install_v100 extends \phpbb\db\migration\migration
{
    public function effectively_installed()
    {
        return isset($this->config['messageimport_version']);
    }

    public function update_data()
    {
        return array(
            array('config.add', array('messageimport_version', '1.0.0')),
            array('module.add', array(
                'acp',
                'ACP_MESSAGEIMPORT',
                array(
                    'module_basename'    => '\febrildur\importmessages\acp\importmessages_module',
                    'modes'                => array('main'),
                ),
            )),
        );
    }
}
 
die _module und _info existieren auch in den angegebenen Verzeichnissen und namespaces. Das habe ich 10 mal kontrolliert... ich hoffe ich habe dabei nichts übersehen, die Fehlermeldung ist leider wenig hilfreich wenn man nicht mal weiss was er denn an welcher Stelle suchen würde.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: ACP-Modul lässt sich nicht zuordnen

Beitrag von gn#36 »

Trotzdem wäre es hilfreich, wenn du die Fehlermeldung postest, bei der du hängst :roll:

Ich nehme mal an, jetzt lässt sich die Extension nicht mehr aktivieren und es kommt irgend eine Fehlermeldung von wegen es wurde irgend ein Modul nicht gefunden?

Der Namespace und der Klassenname stimmen nur dann, wenn die Migration unter ext/febrildur/importmessages/migrations/v100/ als install_v100.php liegt (was vollkommen ok ist).

Du hast ansonsten den gleichen Fehler gemacht wie ich: Du versuchst das Modul in eine Kategorie zu legen, die es noch nicht gibt, es sei denn du hast die Kategorie ACP_MESSAGEIMPORT schon selber an anderer Stelle angelegt. Deshalb gibt's in der von mir verlinkten Migration noch den Eintrag array('module.add', array('acp', 'ACP_CAT_DOT_MODS','ACP_ABOUTUS_SETTINGS')),, welcher die Kategorie ACP_ABOUTUS_SETTINGS unterhalb der Kategorie ACP_CAT_DOT_MODS anlegt. Selbiges musst du mit deiner Kategorie ACP_MESSAGEIMPORT machen. Alternativ kannst du natürlich eine von den Standard-Kategorien statt ACP_MESSAGEIMPORT nehmen oder die Kategorie unter eine andere Kategorie legen als in ACP_CAT_DOT_MODS.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Zwixx
Mitglied
Beiträge: 17
Registriert: 14.03.2015 11:40

Re: ACP-Modul lässt sich nicht zuordnen

Beitrag von Zwixx »

ja, ist sie. Die Fehlermeldung ist:

[phpBB Debug] PHP Notice: in file [ROOT]/includes/acp/acp_modules.php on line 198: Undefined index: febrildur/importmessages/acp/importmessages_module

Aber warum muss ich denn überhaupt eine Kategorie festlegen? Ich möchte das doch manuell dem Baum (über system/Modulkonfiguration) im acp hinzufügen und nicht das addon machen lassen? Ich dachte das wäre nur dann nötig, wenn man dies von dem addon selbst machen lassen möchte?

Ich hatte am Anfang den ganzen Migrationskrams weggelassen, weil ich das eigentlich so gar nicht wollte sondern den Benutzer entscheiden lassen wollte, wo er denn das Modul hin haben möchte.

Vor allem die eigentliche Installation funktioniert ja einwandfrei (wie schon beschrieben). Es hängt erst dann, wenn ich das Modul an eine Stelle im ACP einhängen möchte.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: ACP-Modul lässt sich nicht zuordnen

Beitrag von gn#36 »

Der Vorteil der Installation per Migration ist, dass das Modul garantiert entfernt wird, wenn du die Extension entfernst. Ansonsten gibts Fehlermeldungen, wenn die Extension weg ist, das Modul aber nicht. Ansonsten ist das im Grunde egal. Aber es spricht auch nichts dagegen, das nach der Installation zu verschieben. Der zweite Vorteil ist, dass du weißt wohin es standardmäßig installiert wird.

Außerdem klappt die manuelle Installation nur, wenn auch die automatische klappt und die automatische ist etwas leichter hier im Forum zu "debuggen", weil alles auf festen Dateien und nicht auf Aktionen eines Nutzers beruht. Im Bezug auf Kategorien gilt für die manuelle Installation aber meine ich das gleiche: Das Modul gehört auf die dritte Ebene: Tab -> Kategorie -> Modul.

Sofern das Modul unter ext/febrildur/importmessages/acp/importmessages_module.php und die Info Datei unter ext/febrildur/importmessages/acp/importmessages_info.php zu finden ist und der Namespace darin jeweils febrildur/importmessages/acp ist sehe ich gerade im Moment aber abgesehen von der Kategorie auch keinen Fehler :/
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Zwixx
Mitglied
Beiträge: 17
Registriert: 14.03.2015 11:40

Re: ACP-Modul lässt sich nicht zuordnen

Beitrag von Zwixx »

Ja, das ist sie. Das genau ist es was mein Problem ist.. ich verstehe nicht wo er sucht. Aber vielleicht siehst du ja das Problem, wenn du drüber schaust:

https://github.com/Zwixx/phpbb_messageimport

Weil das ganze macht mich schon recht ratlos... ich habe schon ein wenig in die Methoden hineingesehen, was er da genau tut. Aber bisher auch nicht restlos schlau daraus geworden wie er genau was sucht und wie es genau geladen wird.

Edith: Ich habe die Extension jetzt einfach mal manuell in der DB nachgetragen. Die Angaben die noch fehlten. Interessanterweise... plötzlich funktioniert es (oder so wie ich erwartet habe, das es nicht funktioniert :) ).
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: ACP-Modul lässt sich nicht zuordnen

Beitrag von gn#36 »

Also Problem gelöst oder soll ich noch mal schauen?
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Zwixx
Mitglied
Beiträge: 17
Registriert: 14.03.2015 11:40

Re: ACP-Modul lässt sich nicht zuordnen

Beitrag von Zwixx »

Gelöst hat es sich nicht. Ich werde mir das nochmal anschauen müssen. Für den Moment funktioniert es, weil ich die Daten hart per phpMyAdmin in die DB eingegeben habe. Wenn ich die Extension einmal irgendjemand anders geben möchte, sollte das natürlich keine Vorraussetzung mehr sein :)
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: ACP-Modul lässt sich nicht zuordnen

Beitrag von gn#36 »

Ok.

Den "revert_data" Teil der Migration kannst du dir sparen. Bei der deinstallation wird automatisch der update_data Teil rückwärts abgearbeitet, was das Hinzufügen von Modulen und Konfigurationsvariablen angeht. revert_data brauchst du im Grunde nur, wenn du vorhandene Werte geändert hast, die wieder zurück auf ihren vorherigen Wert oder irgend einen Standardwert müssen, oder eventuell bei "custom" Einträgen. Zu jedem "add" wird automatisch das jeweilige "delete" ausgeführt. Probleme verursacht das aber nicht.

Problematischer ist, dass du immer noch versuchst das Modul in das nicht vorhandene Modul ACP_MESSAGEIMPORT zu installieren. Selbiges musst du erst anlegen. Du brauchst also einen weiteren module.add Eintrag um das Modul ACP_MESSAGEIMPORT anzulegen, damit es funktionieren kann, es sei denn ein Modul mit genau diesem Namen existiert bereits. Außerdem versuchst du einen nicht bekannten Mode namens "main" zu installieren - dieser steht nicht in der info Datei, dort gibt es nur den Mode "import". Für das Modul ist das offensichtlich egal, hier wird die mode Variable nicht benutzt, aber für die Installation muss das zusammenpassen (egal was von beidem du nun nimmst), denn der Installer weiß ja nicht, dass der Mode egal ist. Abgesehen davon würde ich die Dateien import_messages.xsd und ...xsd.html nicht in den acp Ordner legen sondern in einen eigenen (auch das macht aber keine Probleme). Der Auth Eintrag des Moduls sollte daneben noch von der Extension abhängen, so dass es bei Deaktivierung der Extension verschwindet (in der acp/importmessages_info.php statt acl_a_user ext_febrildur/importmessages && acl_a_user). Auch das sollte nicht für die Probleme verantwortlich sein.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Extension Bastelstube“