Admin-Bereich - Edit und Vorschau anders formatieren

About the template and stylesheet - and changing the menu
lck
Posts: 2955
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Admin-Bereich - Edit und Vorschau anders formatieren

Post by lck » Sun Aug 16, 2015 9:47 pm

Hallo miteinander,

auf der Suche nach einer Möglichkeit, den Admin-Bereich im Editier-Modus anders zu gestalten als im Vorschau-Modus, bin ich auf dies gestoßen.

Ergänzt man im Template den body-Tag mit:

Code: Select all

<body id="body" <?php if($adm && $edit) {echo 'class="adminedit"';}?><?php echo onload();?>>
oder gleicher Effekt

Code: Select all

<body id="body" <?php if($adm && !$normal) {echo 'class="adminedit"';}?><?php echo onload();?>>
So kann man per css das Template im Editier-Modus anders gestalten, z.B. den Hintergrund, die Farbe, Abstände, Schrift, Menü etc.

Code: Select all

#body.adminedit {
    background: none;
    background-color: #FFF;
} 
Besonders nützlich bei OnePage-Templates, das diese oft ein Hintergrundbild, ein fixiertes Menü oder Header haben. Somit ist ein anderes Template, speziell für den Admin-Bereich, nicht mehr notwendig.

Wünschenswert wäre natürlich, wenn eine solche Klasse oder id bereits durch CMSimple_XH generiert wird.
„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: Admin-Bereich - Edit und Vorschau anders formatieren

Post by cmb » Mon Aug 17, 2015 1:47 pm

Ludwig wrote:auf der Suche nach einer Möglichkeit, den Admin-Bereich im Editier-Modus anders zu gestalten als im Vorschau-Modus, bin ich auf dies gestoßen.
Sehr schön! Sicher auch eine gute Ergänzung für die Tipps&Tricks im Wiki.
Ludwig wrote:Wünschenswert wäre natürlich, wenn eine solche Klasse oder id bereits durch CMSimple_XH generiert wird.
Der einfache Weg (ala <?php echo $onload?>) ist leider nicht möglich, da dies natürlich wieder eine Anpassung an den (bestehenden) Templates erfordern würde. Man könnte das allerdings auch in XH_finalCleanUp() durchführen. Kurz zur Erklärung: XH_finalCleanUp() wird am Ende eines jeden Requests aufgerufen, und dort wird das vollständige HTML noch einmal bearbeitet (u.a. wird dort das Adminmenü injiziert).

Lieber wäre mir aber eine Möglichkeit, dass Plugins (und sonstige Erweiterung) sich endlich in XH_finalCleanUp() einklinken können, um dort dann beliebige Manipulationen am auszuliefernden HTML vornehmen zu können. Denkbar wäre eine Funktion, mit der ein Callback registriert werden kann (etwa XH_registerCleanUpFunction), dem das HTML übergeben wird, und der das geänderte HTML zurück liefert. Diese Callbacks würden dann eben in XH_finalCleanUp() aufgerufen werden.

Dann wäre z.B. folgendes möglich:

Code: Select all

if (XH_ADM) {
    XH_registerCleanUpFunction('addBodyClass');
}

function addBodyClass($html)
{
    return preg_replace('/<body /', '<body class="adminedit" ', $html);
}
Für Templates, die bereits eine Klasse für <body> definieren, müsste die Funktion entsprechend angepasst werden.
Christoph M. Becker – Plugins for CMSimple_XH

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

Re: Admin-Bereich - Edit und Vorschau anders formatieren

Post by lck » Tue Jan 24, 2017 12:36 pm

Ich möchte den body-Tag nun um eine php-Anweisung ergänzen, damit im Vorschau-Modus und im Bearbeiten-Modus jeweils eine andere Klasse ausgegeben wird, mit:

Code: Select all

<body <?php if(XH_ADM && $normal) {echo 'class="adminview"';}?> <?php if(XH_ADM && $edit) {echo 'class="adminedit"';}?> id="tpllck_body" <?php echo onload();?>>
Dachte das geht auch kürzer:

Code: Select all

<body <?php if(XH_ADM && $normal) {echo 'class="adminview"';}; if(XH_ADM && $edit) {echo 'class="adminedit"';}?> id="tpllck_body" <?php echo onload();?>>
Funktioniert auch, aber ist die Kurzform so in Ordnung?
„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: Admin-Bereich - Edit und Vorschau anders formatieren

Post by cmb » Tue Jan 24, 2017 1:03 pm

lck wrote:Funktioniert auch, aber ist die Kurzform so in Ordnung?
Ja, wobei man noch weiter verkürzen könnte:

Code: Select all

<body <?php if (XH_ADM) echo 'class="' . ($normal ? 'adminview' : 'adminedit') . '"'?> id="tpllck_body" <?php echo onload();?>>
Wie man es macht, ist letztlich Geschmackssache.
Christoph M. Becker – Plugins for CMSimple_XH

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

Re: Admin-Bereich - Edit und Vorschau anders formatieren

Post by lck » Tue Jan 24, 2017 1:29 pm

Sehr schön, danke!
„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: Admin-Bereich - Edit und Vorschau anders formatieren

Post by cmb » Tue Jan 24, 2017 2:24 pm

Ein Hinweis noch bzgl. XH_ADM. Dieses wird von CMSimple (nicht CMSimple_XH) nicht definiert, so dass dort die Abfrage immer true ergibt (eine unschöne Eigenart von PHP). Wer also ein Template, das XH_ADM abfragt, unter CMSimple verwendet, wird nicht unbedingt das gewünschte Ergebnis haben.
Christoph M. Becker – Plugins for CMSimple_XH

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

Re: Admin-Bereich - Edit und Vorschau anders formatieren

Post by lck » Tue Jan 24, 2017 3:32 pm

Also doch lieber $adm verwenden?

Ich weiß jetzt gar nicht, ob es auch noch andere Unterschiede zu Templates von CMSimple gibt. Sind CMSimple_XH-Templates bisher immer noch ohne Anpassung unter CMSimple nutzbar? Ich hätte eigentlich nichts dagegen.
Ich habe zwar noch eine alte CMSimple-Webseite, aber die werde ich in nächster Zeit auch auf XH umstellen.
„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: Admin-Bereich - Edit und Vorschau anders formatieren

Post by cmb » Tue Jan 24, 2017 3:50 pm

lck wrote:Ich weiß jetzt gar nicht, ob es auch noch andere Unterschiede zu Templates von CMSimple gibt. Sind CMSimple_XH-Templates bisher immer noch ohne Anpassung unter CMSimple nutzbar?
Ich denke schon, aber sicher bin ich mir nicht.
lck wrote:Also doch lieber $adm verwenden?
Wenn ausdrücklich Kompatibilität mit CMSimple gewünscht wird, dann ja. Allerdings wird $adm vermutlich bei CMSimple_XH irgendwann mal rausfliegen (aus Sicherheitsgründen, und weil globale Variablen als API sowieso keine gute Idee sind).

Wenn nur verhindert werden soll, dass bei versehentlicher Verwendung solcher Templates grobe Fehlfunktionen auftreten, dann kann auf folgendes geprüft werden:

Code: Select all

defined('XH_ADM') && XH_ADM
Das mache ich bei einigen Plugins so, wo ansonsten unter CMSimple der Adminbereich auch von nicht eingeloggten Usern aufgerufen werden könnte.
Christoph M. Becker – Plugins for CMSimple_XH

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

Re: Admin-Bereich - Edit und Vorschau anders formatieren

Post by lck » Fri Feb 09, 2018 6:21 pm

cmb wrote:
Tue Jan 24, 2017 1:03 pm
lck wrote:Funktioniert auch, aber ist die Kurzform so in Ordnung?
Ja, wobei man noch weiter verkürzen könnte:

Code: Select all

<body <?php if (XH_ADM) echo 'class="' . ($normal ? 'adminview' : 'adminedit') . '"'?> id="tpllck_body" <?php echo onload();?>>
Wie man es macht, ist letztlich Geschmackssache.
Hm, wie ist das OnePagern. Es funktioniert der Wechsel zwischen .adminedit und .adminview nur so lange, wie man keinen Link anklickt. Da wird dann z.B. ?Start&normal zu ?Start#Start und das wird anscheinend als Edit-Mode interpretiert und im body-Tag erscheint wieder die Klasse adminedit.

Lösung scheint zu sein, es andersrum zu schreiben (Erweiterung für den body-Tag):

Code: Select all

<?php if (XH_ADM) echo 'class="' . ($edit ? 'adminedit' : 'adminview') . '"'?>
Last edited by lck on Fri Mar 09, 2018 11:00 am, edited 1 time in total.
„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: Admin-Bereich - Edit und Vorschau anders formatieren

Post by cmb » Fri Feb 09, 2018 9:35 pm

lck wrote:
Fri Feb 09, 2018 6:21 pm
Lösung scheint zu sein, es andersrum zu schreiben:

Code: Select all

<?php if (XH_ADM) echo 'class="' . ($edit ? 'adminedit' : 'adminview') . '"'?>
Richtig! Und man sollte im Zweifel immer $edit verwenden. $normal wird nämlich nur gesetzt, wenn &normal in der URL auftaucht; $edit wird ansonsten immer gesetzt. (Schön wäre es, wenn es $normal gar nicht gäbe, dann käme man nicht auf solch falsche Gedanken…)
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply