Page 2 of 12

Re: Code - Fragen

Posted: Sun Nov 26, 2017 10:07 pm
by cmb
lck wrote:Ganz schön umständlich, aber wenn's funktioniert. Wie bringe ich nun die beiden zusammen, "zwecks" Hochzeit:

Code: Select all

<?php if (XH_ADM && $edit):?>
    <?php echo ... ; ?>
<?php endif;?>
und

Code: Select all

if (XH_ADM && wantsAnyPluginAdministration()) {
    echo 'Du befindest dich jetzt in der Pluginadministration.';
} 
Etwa so:

Code: Select all

<?php if (XH_ADM):?>
<?php   if ($edit):?>
    <?='…' ?>
<?php   elseif (wantsAnyPluginAdministration()):?>
    <?='Du befindest dich jetzt in der Pluginadministration.'?>
<?php   endif?>
<?php endif?>
oder auch so:

Code: Select all

<?php
if (XH_ADM) {
    if ($edit) {
        echo '…';
    } elseif (wantsAnyPluginAdministration()) {
        echo 'Du befindest dich jetzt in der Pluginadministration.';
    }
}
?>

Re: Code - Fragen

Posted: Mon Nov 27, 2017 6:09 pm
by lck
Danke Christoph! Funktioniert :)

Oben im Template vor <!DOCTYPE html> habe ich die function hinzugefügt (da stehen eh schon welche):

Code: Select all

function wantsAnyPluginAdministration() {
    foreach (XH_plugins(true) as $plugin) {
        if (XH_wantsPluginAdministration($plugin)) {
            return true;
        }
    }
    return false;
} 
und im <head>:

Code: Select all

<?php
if (XH_ADM) {
    if ($edit) {
        echo tag('link rel="stylesheet" type="text/css" href="'.$pth['folder']['template'].'adminedit.css"')."\n";
    } elseif (wantsAnyPluginAdministration()) {
        echo tag('link rel="stylesheet" type="text/css" href="'.$pth['folder']['template'].'adminedit.css"')."\n";
    }
}
?>
Zwei Fragen dazu.
1.) Kann man den den letzten Code noch verkürzen oder muss das so sein? Es soll ja das gleiche css geladen werden.
2.) Kann solch eine function auch für den Pagemanager erstellt werden, also wenn man im Adminmenü auf "Seiten" klickt.
(unter Plugins > Pagemanager > Seiten verwalten, funktioniert das "Admin-Menü" ja bereits)

Re: Code - Fragen

Posted: Mon Nov 27, 2017 6:52 pm
by cmb
lck wrote:Kann man den den letzten Code noch verkürzen oder muss das so sein? Es soll ja das gleiche css geladen werden.
Ah! Dann genügt:

Code: Select all

<?php
if (XH_ADM && ($edit || wantsAnyPluginAdministration())) {
    echo tag('link rel="stylesheet" type="text/css" href="'.$pth['folder']['template'].'adminedit.css"')."\n";
}
?>
lck wrote:Kann solch eine function auch für den Pagemanager erstellt werden, also wenn man im Adminmenü auf "Seiten" klickt.
Auch dafür stellt CMSimple_XH mal wieder eine Super-API zur Verfügung: $xhpages (keine Ahnung warum da dokumentiert ist, dass Page-Manager-Plugins die Variable als read/write behandeln dürfen – scheint wenig sinnvoll; der Pagemanager_XH macht es jedenfalls nicht). Also:

Code: Select all

<?php
if (XH_ADM && ($edit || wantsAnyPluginAdministration() || $xhpages)) {
    echo tag('link rel="stylesheet" type="text/css" href="'.$pth['folder']['template'].'adminedit.css"')."\n";
}
?>
Auf tag() würde ich übrigens verzichten. Die Funktion ist seit XH 1.7 deprecated (ohne Warnung, aber die wird noch nachgereicht).

Re: Code - Fragen

Posted: Mon Nov 27, 2017 7:42 pm
by lck
Super, passt.
cmb wrote:Auf tag() würde ich übrigens verzichten. Die Funktion ist seit XH 1.7 deprecated (ohne Warnung, aber die wird noch nachgereicht).
Irgendwo hatte ich das auch im Hinterkopf, also geändert zu:

Code: Select all

<?php
if (XH_ADM && ($edit || wantsAnyPluginAdministration() || $xhpages)) {
    echo '<link rel="stylesheet" type="text/css" href="'.$pth['folder']['template'].'adminedit.css">'."\n";
}
?>
Kann man es auch verhindern/umgehen, dass beim Aufruf der Plugin-Administration auf "Vorschau"-Modus umgeschaltet wird? So viel ich weiß, ist das bei den Plugins zwingend notwendig (leider). Das Problem ist nur, gehe ich dann im Admin-Menü auf "Einstellungen" bleibt der "Vorschau"-Modus aktiv und mein little "Admin-Template" wird nicht aufgerufen. Da muß man erst wieder auf Bearbeiten umschalten.

Re: Code - Fragen

Posted: Mon Nov 27, 2017 7:52 pm
by lck
:) erledigt. Einfach mit $settings erweitert, dann passt's.

Code: Select all

<?php
if (XH_ADM && ($edit || wantsAnyPluginAdministration() || $xhpages || $settings)) {
    echo '<link rel="stylesheet" type="text/css" href="'.$pth['folder']['template'].'adminedit.css">'."\n";
}
?>
Falsch, nichts erledigt :(

Nachtrag.
Aber so (etwas ungelenk, aber es geht):

Code: Select all

<?php
if (XH_ADM && ($edit || wantsAnyPluginAdministration() || $xhpages || $settings || $action || $validate || $xh_backups || $xh_pagedata || $xh_change_password || $sysinfo || $xh_plugins)) {
    echo '<link rel="stylesheet" type="text/css" href="'.$pth['folder']['template'].'adminedit.css">'."\n";
}
?>

Re: Code - Fragen

Posted: Mon Nov 27, 2017 10:57 pm
by cmb
lck wrote:Kann man es auch verhindern/umgehen, dass beim Aufruf der Plugin-Administration auf "Vorschau"-Modus umgeschaltet wird? So viel ich weiß, ist das bei den Plugins zwingend notwendig (leider). Das Problem ist nur, gehe ich dann im Admin-Menü auf "Einstellungen" bleibt der "Vorschau"-Modus aktiv und mein little "Admin-Template" wird nicht aufgerufen. Da muß man erst wieder auf Bearbeiten umschalten.
lck wrote:Falsch, nichts erledigt :(

Nachtrag.
Aber so (etwas ungelenk, aber es geht):
Ja. So in dieser Art ist es auch bei hi_admin gelöst. Das ganze ist im Core ganz fürchterlich gelöst, und wenn wir viewtopic.php?f=29&t=13071 umsetzen würden, dann würden solche Lösungen nicht mehr möglich sein. Damit wir uns nicht völlig in die Ecke spielen, würde ich vorschlagen, dass wir möglichst bald (d.h. für XH 1.8) entsprechende Abstraktionen einführen (also ein oder mehrere Funktionen), die dann verwendet werden könnten, und falls noch nicht verfügbar, müssten die Plugins/Templates eben einen Fallback liefern.

Re: Code - Fragen

Posted: Tue Nov 28, 2017 10:15 am
by frase
lck wrote:Oben im Template vor <!DOCTYPE html> habe ich die function hinzugefügt (da stehen eh schon welche):
Ich glaube mich erinnern zu können, dass mich Christoph mal darauf hingewiesen hat, sowas nicht vor den Doctype zu schreiben.
Besser direkt danach.
Weil: Falls vor Doctype irgendein Leerzeichen oder eine Leerzeile erzeugt wird, könnte es Probleme geben.

Erinnere ich mich richtig?

Re: Code - Fragen

Posted: Tue Nov 28, 2017 11:58 am
by cmb
frase wrote:Weil: Falls vor Doctype irgendein Leerzeichen oder eine Leerzeile erzeugt wird, könnte es Probleme geben.
Stimmt. Man kann den PHP-Block allerdings schon so schreiben, dass das nicht passiert, aber im Zweifel ist es besser PHP-Blöcke erst nach dem Doctype zu notieren.

Re: Code - Fragen

Posted: Tue Nov 28, 2017 1:34 pm
by lck
cmb wrote:
frase wrote:Weil: Falls vor Doctype irgendein Leerzeichen oder eine Leerzeile erzeugt wird, könnte es Probleme geben.
Stimmt. Man kann den PHP-Block allerdings schon so schreiben, dass das nicht passiert, aber im Zweifel ist es besser PHP-Blöcke erst nach dem Doctype zu notieren.
Danke für den Hinweis, aber ich achte auch darauf. Bisher sind keine Leerzeilen oder Leerzeichen drin und deswegen lasse ich es auch so. Es dürfen auch keine html-Kommentare vor dem DOCTYPE stehen, sonst gibt's Quirks-Mode.
cmb wrote:Ja. So in dieser Art ist es auch bei hi_admin gelöst. Das ganze ist im Core ganz fürchterlich gelöst, und wenn wir viewtopic.php?f=29&t=13071 umsetzen würden, dann würden solche Lösungen nicht mehr möglich sein.
Ja, bitte nicht umsetzen. Mit obigen Code ist es relativ einfach das Backend anders zu gestalten. Und man kann sogar bestimmte Bereiche davon ausnehmen, wenn man vor der Variable ein ! setzt. Also zum Beispiel man möchte den Pagemanager im Vorschau-Modus anzeigen, dann braucht man nur $xhpages zu !$xhpages ändern.

Wer es testen will, eine neue Version mit Mini-Admin-Template ist online (JEKYLLANDHYDE_TESTVERSION-3.zip).

Re: Code - Fragen

Posted: Tue Nov 28, 2017 1:52 pm
by frase
Aaaaah!
Meine Scroll-Faulheit wurde bedient. ;-)

Wunderbar!
Schön!
Da hast du ja ein beinahe richtiges Adminmenü.
Und schön, dass die php-Abfrage auf zwei Zeilen geschrumpft ist.