Code - Fragen

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Code - Fragen

Post by cmb » Sun Nov 26, 2017 10:07 pm

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.';
    }
}
?>
Christoph M. Becker – Plugins for CMSimple_XH

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Code - Fragen

Post by lck » Mon Nov 27, 2017 6:09 pm

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)
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

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

Re: Code - Fragen

Post by cmb » Mon Nov 27, 2017 6:52 pm

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).
Christoph M. Becker – Plugins for CMSimple_XH

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Code - Fragen

Post by lck » Mon Nov 27, 2017 7:42 pm

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.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Code - Fragen

Post by lck » Mon Nov 27, 2017 7:52 pm

:) 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";
}
?>
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

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

Re: Code - Fragen

Post by cmb » Mon Nov 27, 2017 10:57 pm

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.
Christoph M. Becker – Plugins for CMSimple_XH

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

Re: Code - Fragen

Post by frase » Tue Nov 28, 2017 10:15 am

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?

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

Re: Code - Fragen

Post by cmb » Tue Nov 28, 2017 11:58 am

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.
Christoph M. Becker – Plugins for CMSimple_XH

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Code - Fragen

Post by lck » Tue Nov 28, 2017 1:34 pm

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).
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

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

Re: Code - Fragen

Post by frase » Tue Nov 28, 2017 1:52 pm

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.

Post Reply