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.