Page 2 of 2

Re: Spezial stylesheet nur mit geöffnetem filemanager

Posted: Sun Feb 05, 2017 3:14 pm
by Tata
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.

Re: Spezial stylesheet nur mit geöffnetem filemanager

Posted: Sun Feb 05, 2017 6:46 pm
by lck
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");
}

Re: Spezial stylesheet nur mit geöffnetem filemanager

Posted: Sun Feb 05, 2017 7:22 pm
by Tata
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.

Re: Spezial stylesheet nur mit geöffnetem filemanager

Posted: Sun Feb 05, 2017 7:42 pm
by cmb
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)?

Re: Spezial stylesheet nur mit geöffnetem filemanager

Posted: Sun Feb 05, 2017 8:11 pm
by Tata
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.

Re: Spezial stylesheet nur mit geöffnetem filemanager

Posted: Sun Feb 05, 2017 9:28 pm
by lck
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.

Re: Spezial stylesheet nur mit geöffnetem filemanager

Posted: Sun Feb 05, 2017 9:44 pm
by Tata
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.

Re: Spezial stylesheet nur mit geöffnetem filemanager

Posted: Sun Feb 05, 2017 10:21 pm
by cmb
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>

Re: Spezial stylesheet nur mit geöffnetem filemanager

Posted: Mon Feb 06, 2017 12:22 pm
by lck
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>

Re: Spezial stylesheet nur mit geöffnetem filemanager

Posted: Mon Feb 06, 2017 1:53 pm
by cmb
lck wrote:Schön langsam verliere ich den Überblick, bei all den Möglichkeiten :)
Ist halt UMUK. :)