Fa_XH

Third Party Plugins to CMSimple - how to install, use and create plugins

Moderator: Tata

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Fa_XH

Post by frase » Thu Apr 06, 2017 8:37 am

Hi Christoph,
bin gerade dabei mein alternatives Adminmenü zu überarbeiten. Ich hatte den Fehler gemacht, im simple-Template Buttons global zu stylen :?
Ist über die Menü-Styles lösbar.

Jetzt komme ich drauf, dass bei installiertem FA-Plugin das Adminmenü FA doppelt einbindet. Klar.
Macht eigentlich keine Probleme, ist aber nicht schön.
Im simple-Template hatte ich das mit deiner Hilfe gut gelöst.
Leider komme ich mit dem Abschnitt "Plugin Developers" in der Hilfe-Datei des FA-Plugins überhaupt nicht klar.
Hast du (bei Gelegenheit) Tipps dazu?
Genial wäre - wie im Template - eine Prüfung: Ist FA_XH installiert?
Wenn ja - OK.
Wenn nein - FA aus dem Adminmenü-Plugin einbinden. - Das wäre ja nur die eine Zeile, die font-awesome.min.css aufruft.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Fa_XH

Post by cmb » Thu Apr 06, 2017 10:07 am

frase wrote:Leider komme ich mit dem Abschnitt "Plugin Developers" in der Hilfe-Datei des FA-Plugins überhaupt nicht klar.
Hast du (bei Gelegenheit) Tipps dazu?
Das ist prinzipiell das gleiche wie im Template; kann etwa so aussehen:

Code: Select all

if (class_exists('Fa\\RequireCommand')) {
    $temp = new Fa\RequireCommand;
    $temp->execute();
    $temp = null;
} else {
    // FA manuell einbinden
}
Dieser Code ist für den globalen Scope (also außerhalb einer Funktion) gedacht. $temp ist eine von CMSimple_XH für temporäre Zwecke gedachte Variable. Wird der Code in einer Funktion ausgeführt, dann würde ich statt $temp eben $command verwenden, und die Zeile mit $temp = null kann entfallen.
Christoph M. Becker – Plugins for CMSimple_XH

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Fa_XH

Post by frase » Thu Apr 06, 2017 10:35 am

Code: Select all

if (XH_ADM && $cf['editmenu']['external'] === 'fhs_adminmenu') {
    if (class_exists('Fa\\RequireCommand')) {
        $command = new Fa\RequireCommand;
        $command->execute();
        //$temp = null;
    } else {
        $hjs .= tag('link rel="stylesheet" type="text/css" href="' . $pth['folder']['plugins'] . 'fhs_adminmenu/css/font-awesome.min.css"');
    } 
...
Eingefügt in index.php des adminmenu-Plugins.

Funktioniert mit installiertem FA-Plugin.
Ist FA-Plugin deaktiviert (.) passiert folgendes:
Ganz oben erscheint:
string(17) "Fa\RequireCommand" string(39) "./plugins/fa/classes/RequireCommand.php"
Debug meldet:
WARNING: include_once(./plugins/fa/classes/RequireCommand.php): failed to open stream: No such file or directory
D:\xampp_711\htdocs\sites\_CMSXH\fhs-simple\cmsimple\functions.php:2606
WARNING: include_once(): Failed opening './plugins/fa/classes/RequireCommand.php' for inclusion (include_path='D:\xampp_711\php\PEAR')
D:\xampp_711\htdocs\sites\_CMSXH\fhs-simple\cmsimple\functions.php:2606
Der Witz ist, FA wird richtig eingebunden. Vom Plugin und leider jetzt auch zusätzlich vom Template.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Fa_XH

Post by cmb » Thu Apr 06, 2017 11:19 am

frase wrote:Ist FA-Plugin deaktiviert (.) passiert folgendes:
Ganz oben erscheint:
string(17) "Fa\RequireCommand" string(39) "./plugins/fa/classes/RequireCommand.php"
Debug meldet:
WARNING: include_once(./plugins/fa/classes/RequireCommand.php): failed to open stream: No such file or directory
D:\xampp_711\htdocs\sites\_CMSXH\fhs-simple\cmsimple\functions.php:2606
WARNING: include_once(): Failed opening './plugins/fa/classes/RequireCommand.php' for inclusion (include_path='D:\xampp_711\php\PEAR')
D:\xampp_711\htdocs\sites\_CMSXH\fhs-simple\cmsimple\functions.php:2606
Das liegt daran, dass der Autoloader noch nicht fertig programmiert ist. Die Meldung oben wird durch das var_dump() erzeugt, und die Warnungen kommen, weil auch wenn die gewünschte Datei nicht existiert, trotzdem versucht wird sie einzubinden.

Mir ist halt nicht wirklich klar, wie man im Falle einer nicht vorhandenen Datei vorgehen soll. Einfach stillschweigend ignorieren ist in Deinem Fall das beste, aber Pluginentwickler könnte es verwirren, wenn z.B. durch einen Tippfehler die Klassendatei ohne Hinweis nicht geladen wird. Ich tendiere aber doch eher dazu, keine Meldung auszugeben; nutzt ein Entwickler eine nicht existierende Klasse ohne class_exists() Prüfung, dann kommt sowieso ein fataler Fehler; prüft er auf class_exists(), dann wird er wohl einen Fallback parat haben. Also den oben genannten Code durch folgenden ersetzen:

Code: Select all

    // possible error handling
    if (!file_exists($filename)) {
        return;
    }

    // include the class file
    include_once $filename;
PS:
frase wrote:Der Witz ist, FA wird richtig eingebunden. Vom Plugin und leider jetzt auch zusätzlich vom Template.
Hm, das sollte eigentlich nicht passieren.
Christoph M. Becker – Plugins for CMSimple_XH

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Fa_XH

Post by frase » Thu Apr 06, 2017 11:24 am

cmb wrote:PS:
frase hat geschrieben:
Der Witz ist, FA wird richtig eingebunden. Vom Plugin und leider jetzt auch zusätzlich vom Template.
Hm, das sollte eigentlich nicht passieren.
Da habe ich mich missverständlich ausgedrückt.
FA wird richtigerweise vom adminmenu-Plugin eingebunden. Nicht vom FA-Plugin.
Erstmal danke für deine Mühe.
Ich schau' mal weiter.

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Fa_XH

Post by frase » Thu Apr 06, 2017 11:33 am

Mit der Änderung in functions.php klappt alles bestens.
Bestens in laienhaftem Sinne ;-)
Die Folgen für andere kann ich nicht überschauen.

Wenn man nur irgendwie in Templates oder in Plugins prüfen könnte, ob es schon FA (als CSS eingebunden) irgendwo gibt, dann könnten wir uns das alles sparen. Ich meine, nicht auf das FA-Plugin prüfen, sondern nur, ob FA schon vorhanden ist. Geht aber sicher nicht - oder?

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Fa_XH

Post by cmb » Thu Apr 06, 2017 12:12 pm

frase wrote:Wenn man nur irgendwie in Templates oder in Plugins prüfen könnte, ob es schon FA (als CSS eingebunden) irgendwo gibt, dann könnten wir uns das alles sparen. Ich meine, nicht auf das FA-Plugin prüfen, sondern nur, ob FA schon vorhanden ist. Geht aber sicher nicht - oder?
Gehen tut es irgendwie schon, aber es ist hässlich. Im Prinzip das gleiche Problem wie mit jQuery bevor das jQuery4CMSimple-Plugin entwickelt wurde. Daher halt auch Fa_XH. Ich denke, in den allermeisten Fällen kann man damit leben, dass man das Fa_XH Plugin eben erfordert, und keinen Fallback mit einem zusätzlich ausgelieferten Font Awesome realisiert. Erst recht, wenn Fa_XH in die Standard-Distribution aufgenommen werden sollte.
Christoph M. Becker – Plugins for CMSimple_XH

Holger
Site Admin
Posts: 3470
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany

Re: Fa_XH

Post by Holger » Thu Apr 06, 2017 12:41 pm

cmb wrote:Ich denke, in den allermeisten Fällen kann man damit leben, dass man das Fa_XH Plugin eben erfordert, und keinen Fallback mit einem zusätzlich ausgelieferten Font Awesome realisiert.
Das sehe ich auch so. Wenn alles nur an einer / durch eine Stelle passiert muss man auch nur dort suchen, wenn mal etwas nicht klappt. Zur Not kann ein Plugin ja noch prüfen, ob das FA_XH - Plugin verfügbar ist und eine entsprechende Meldung ausgeben, wenn es fehlt. Je nach Art des Plugins könnte es so auch komplett die Arbeit verweigern.
Und so würde ich mir das auch gleich für das CKEditor-Plungin wünschen.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Fa_XH

Post by cmb » Thu Apr 06, 2017 2:36 pm

Holger wrote:Und so würde ich mir das auch gleich für das CKEditor-Plungin wünschen.
Ich würde das Plugin eigentlich gerne gleich mit Fa_XH ausliefern, aber ich warte noch auf eine offizielle Version vom CKEditor, die external_plugins/ unterstützt, damit ich in der Doku die Einbindung erklären und die Erfordernis einer bestimmten CKEditor-Version angeben kann. :)
Christoph M. Becker – Plugins for CMSimple_XH

Holger
Site Admin
Posts: 3470
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany

Re: Fa_XH

Post by Holger » Thu Apr 06, 2017 9:58 pm

cmb wrote:Ich würde das Plugin eigentlich gerne gleich mit Fa_XH ausliefern, aber ich warte noch auf eine offizielle Version vom CKEditor, die external_plugins/ unterstützt, damit ich in der Doku die Einbindung erklären und die Erfordernis einer bestimmten CKEditor-Version angeben kann. :)
Na, das hört sich ja vielversprechend an. Du hast mir ja gestern bei dem Problem des CKEditors mit RealBlog_XH etc. geholfen. Damit bin ich einen großen Schritt zu einem offiziellem Release weiter gekommen :) .
Ich tue was ich kann!

Post Reply