Spezial stylesheet nur mit geöffnetem filemanager

About the template and stylesheet - and changing the menu
Tata
Posts: 3586
Joined: Tue May 20, 2008 5:34 am
Location: Slovakia
Contact:

Re: Spezial stylesheet nur mit geöffnetem filemanager

Post by Tata » Sun Feb 05, 2017 3:14 pm

lck wrote:Auf alle Fälle hast du dann im body eine zusätzliche Klasse .breit und damit kannst du dann arbeiten, Beispiel:

Code: Select all

body.breit #header {
    max-width: 100%;
}
body.breit #wrapper {
    max-width: 100%;
}
Genau damit habe ich Verständnisproblem. Es geht darum, dass body generell 100% der Breite nimmt. Nur der wrapper ist smaller und mit kcfinder soll es die volle breite nutzen. Entweder steht mir jemand auf der Leine oder verstehe ich es gar nicht, wie den Skript zu modifizieren, um mit meinem Template zu laufen. Ist aber auch kein rieses Problem.
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.

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

Re: Spezial stylesheet nur mit geöffnetem filemanager

Post by lck » Sun Feb 05, 2017 6:46 pm

Tata wrote:Nur der wrapper ist smaller und mit kcfinder soll es die volle breite nutzen.
Ich gehe mal davon aus, dass das Hinzufügen der zusätzlichen Klasse .breit im body-Tag auch bei dir funktioniert, oder?

Dann, Beispiel für deinen wrapper, steht mal angenommen in der stylesheet.css:

Code: Select all

.wrapper {
    max-width: 70em;
} 
Dann musst du auch max-width für die Anpassung verwenden. Ein width: 100%; bringt nicht das gewünschte Ergebnis:

Code: Select all

body.breit .wrapper {
    max-width: 100%;
}
@Christoph:
cmb wrote:Es könnte wohl geprüft werden, ob $f einen der vier relevanten Werte enthält, also

Code: Select all

if (in_array($f, array('userfiles', 'images', 'downloads', 'media'))
Damit kann ich leider nichts anfangen, mach mal einen Satz draus ;)
cmb wrote:Ja, warum nicht? Für moderne Browser könnte folgendes gemacht werden:

Code: Select all

if (typeof document.querySelector !== "undefined" && document.querySelector('iframe[name="kcfinder_iframe"]')) {
   document.body.className += " breit";
}
Funktioniert!
cmb wrote:Oder halt mit jQuery:

Code: Select all

if ($('iframe[name="kcfinder_iframe"]')) {
    $("body").addClass("breit");
}
Problem: hier wird dauerhaft eine Klasse im body-Tag eingefügt (BTW: evtl. auch nützlich), egal wo man im Admin-Menü hinklickt oder auch dann, wenn man einen anderen Namen einsetzt. Die erste Zeile scheint wirkungslos:

Code: Select all

if ($('iframe[name="knoffhoff"]')) {
    $("body").addClass("breit");
}
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

Tata
Posts: 3586
Joined: Tue May 20, 2008 5:34 am
Location: Slovakia
Contact:

Re: Spezial stylesheet nur mit geöffnetem filemanager

Post by Tata » Sun Feb 05, 2017 7:22 pm

Ach!
Jetzt gab ich in stylesheet:

Code: Select all

.wrapper{max-width:1200px;margin:.2em auto 1em;background:#fff;padding: 1em;}
body.breit .wrapper {
    max-width: 100%;
} 
und in template (head):

Code: Select all

<script type="text/javascript">
if (document.getElementById("kcfinder")) {
    document.body.className += " breit";
}
</script>
Also habe ich im template <div id="wrapper"> zu <div class="wrapper"> umgenannt und in admin.php id="kcfinder". Nichts passiert.
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.

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

Re: Spezial stylesheet nur mit geöffnetem filemanager

Post by cmb » Sun Feb 05, 2017 7:42 pm

lck wrote:
cmb wrote:Es könnte wohl geprüft werden, ob $f einen der vier relevanten Werte enthält, also

Code: Select all

if (in_array($f, array('userfiles', 'images', 'downloads', 'media')) 
Damit kann ich leider nichts anfangen, mach mal einen Satz draus ;)
Na ja, man könnte wohl im Template einem Element eine Klasse zuweisen, wenn $f einen dieser Werte enthält (was bedeutet, dass der Filebrowser aufgerufen wurde):

Code: Select all

<div class="<?php echo (in_array($f, array('userfiles', 'images', 'downloads', 'media')) ? 'breit' : ''?>">
lck wrote:Funktioniert!
Danke fürs Testen! :)
lck wrote:Problem: hier wird dauerhaft eine Klasse im body-Tag eingefügt (BTW: evtl. auch nützlich), egal wo man im Admin-Menü hinklickt oder auch dann, wenn man einen anderen Namen einsetzt. Die erste Zeile scheint wirkungslos:

Code: Select all

if ($('iframe[name="knoffhoff"]')) {
    $("body").addClass("breit");
} 
Stimmt! jQuery liefert immer ein jQuery-Objekt zurück, dass dann allerdings leer wäre. So sollte es wohl funktionieren:

Code: Select all

if ($('iframe[name="knoffhoff"]').length) {
    $("body").addClass("breit");
} 
Tata wrote:Also habe ich im template <div id="wrapper"> zu <div class="wrapper"> umgenannt und in admin.php id="kcfinder". Nichts passiert.
Meldet die Browserkonsole einen JavaScript-Fehler? Wurde dem <body> wirklich die Klasse "breit" zugewiesen (kannst Du ebenfalls in den Entwicklertools des Browsers prüfen)?
Christoph M. Becker – Plugins for CMSimple_XH

Tata
Posts: 3586
Joined: Tue May 20, 2008 5:34 am
Location: Slovakia
Contact:

Re: Spezial stylesheet nur mit geöffnetem filemanager

Post by Tata » Sun Feb 05, 2017 8:11 pm

Es fehlen mir die Grundkentnisse, um alles, das Ihr mir empfohlen habt, umzusetzen. Ich lasse es, wie es steht. Aber noch eine Frage:
Währe es möglich den kcfinder in einem neuen Fenster zu öffnen? Kann schon eine Blödheit sein und ich habe nicht von eventuellen Konsequenzen überlegt. Ich kann mir aber vorstellen den Filebrowser währen der Editation ständig geöffnet zu haben. Es müsste ja alle gespeicherte werte weiterliefern, aber (wenn man an breiten Monitoren gearbeitet) ein "floating window" wäre ganz praktisch.
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.

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

Re: Spezial stylesheet nur mit geöffnetem filemanager

Post by lck » Sun Feb 05, 2017 9:28 pm

Tata wrote:und in template (head):

Code: Select all

<script type="text/javascript">
if (document.getElementById("kcfinder")) {
    document.body.className += " breit";
}
</script>
Im <head> funktioniert das anscheinend nicht, füge das mal am Ende vor </body> ein. jQuery wird ja durch den Admin-Mode schon geladen, sollte also nicht extra aktiviert werden müssen.

Mal nachgefragt, hi_kcfinder hat ja einen Button "Maximieren" der den Filebrowser auf die gesamte Browserseite "zoomt", reicht dir das nicht?

Einfache Alternative wäre noch, den Filebrowser von Haus aus absolute zu positionieren (eine ID namens kcfinder hast du ja schon in die admin.php eingefügt):

Code: Select all

#kcfinder {
    position: absolute;
    left: 0;
    top: 10%;
    width: 100%;
    z-index: 998;
}
cmb wrote:Stimmt! jQuery liefert immer ein jQuery-Objekt zurück, dass dann allerdings leer wäre. So sollte es wohl funktionieren:
Ja, so funktionierts, danke.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

Tata
Posts: 3586
Joined: Tue May 20, 2008 5:34 am
Location: Slovakia
Contact:

Re: Spezial stylesheet nur mit geöffnetem filemanager

Post by Tata » Sun Feb 05, 2017 9:44 pm

lck wrote:Mal nachgefragt, hi_kcfinder hat ja einen Button "Maximieren" der den Filebrowser auf die gesamte Browserseite "zoomt", reicht dir das nicht?
Ich schäme mich :oops: :oops: :oops: :oops: :oops: es nicht zu merken.
Das reicht absolut.
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.

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

Re: Spezial stylesheet nur mit geöffnetem filemanager

Post by cmb » Sun Feb 05, 2017 10:21 pm

lck wrote:
Tata wrote:und in template (head):

Code: Select all

<script type="text/javascript">
if (document.getElementById("kcfinder")) {
    document.body.className += " breit";
}
</script>
Im <head> funktioniert das anscheinend nicht, füge das mal am Ende vor </body> ein. jQuery wird ja durch den Admin-Mode schon geladen, sollte also nicht extra aktiviert werden müssen.
Ja, das Script muss mindestens unterhalb des Content-Div platziert werden, am besten direct vor </body>. jQuery braucht diese Variante allerdings sowieso nicht. Folgende jQuery-Variante kann auch direkt vor </head> oder weit oben im <body> untergebracht werden:

Code: Select all

<script type="text/javascript">
$(function () {
    if ($('iframe[name="knoffhoff"]').length) {
        $("body").addClass("breit");
    }
});
</script>
Christoph M. Becker – Plugins for CMSimple_XH

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

Re: Spezial stylesheet nur mit geöffnetem filemanager

Post by lck » Mon Feb 06, 2017 12:22 pm

Super Christoph, funktioniert! Schön langsam verliere ich den Überblick, bei all den Möglichkeiten :)

"knoffhoff" als Name war weiter oben im Faden nur als Beispiel gedacht um zu zeigen, dass die erste Zeile wirkungslos war.
Hier der Code für den hi_kcfinder falls es wer braucht:

Code: Select all

<script type="text/javascript">
$(function () {
    if ($('iframe[name="kcfinder_iframe"]').length) {
        $("body").addClass("breit");
    }
});
</script>
„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: Spezial stylesheet nur mit geöffnetem filemanager

Post by cmb » Mon Feb 06, 2017 1:53 pm

lck wrote:Schön langsam verliere ich den Überblick, bei all den Möglichkeiten :)
Ist halt UMUK. :)
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply