symphonists / subsectionmanager

Subsection management for Symphony.
Other
44 stars 32 forks source link

Height miscalculation #235

Closed animaux closed 11 years ago

animaux commented 11 years ago

Version 3.1.1, on Symphony 2.3.3RC3 miscalculates the height of the iframe content. In my case it always results in ´150px´.

nilshoerrmann commented 11 years ago

Da musst Du wohl selber graben, woran das liegt. Tut mir leid.

nilshoerrmann commented 11 years ago

Mein Tipp wäre, dass es etwas mit dem Umstieg auf jQuery 2 zu tun hat.

animaux commented 11 years ago

War da schon am schauen, aber das sollte eigentlich API-Kompatibel mit 1.9 sein. Ich friemel mich mal rein :)

Danke trotzdem!

nilshoerrmann commented 11 years ago

Ja, aber SSM ist nie unter 1.9 getestet worden und da gibt es Änderungen, wie auf Eigenschaften und Attribute zugegriffen werden kann (.attr() vs. .prop()).

animaux commented 11 years ago

Ups, stimmt, da ist ja 1.7.2 am Werk in Symphony 2.3.2. Danke für den Tipp!

animaux commented 11 years ago

(apparently .attr() and .prop() are not the problem)

animaux commented 11 years ago

var height = subsection.find('#wrapper').outerHeight(); always returns 150px, if I change it to

var height = subsection.find('#wrapper div.contents').outerHeight(); it is calculated properly in the Safari console, but in the real backend it seems to add the value to the variable over and over again, resulting in an ever expanding drawer.

I’m lost at this point, can someone with better js-skills please join the fun, or point me in the right direction?

nilshoerrmann commented 11 years ago

Wenn das Deine einzige Änderung ist, macht das nicht viel Sinn. Könntest Du vielleicht Deinen aktuellen Code hier auf Github veröffentlichen? Danke.

animaux commented 11 years ago

Ansonsten hab ich nur die .attr() die attribute erzeugen durch .prop() ersetzt, siehe hier;

nilshoerrmann commented 11 years ago

Welche Zeile ist das mit der Höhe? Kannst Du das auch mal pushen?

animaux commented 11 years ago

Zeile 231, ist bei mir aber unverändert, also no need to push :)

nilshoerrmann commented 11 years ago

So, ich habe mir das jetzt noch mal angeschaut: Wenn Du sagst, dass die Höhe immer wieder neu berechnet wird, dann liegt dieses nächste Problem mit aller Wahrscheinlichkeit im Resize-Plugin. Vielleicht funktioniert ja dies hier anstelle: https://github.com/cowboy/jquery-resize/pull/12

animaux commented 11 years ago

Hab grad mal zwei neuere Forks duchprobiert … kein Erfolg :(

nilshoerrmann commented 11 years ago

Was wird denn hier in der Konsole ausgegeben?

        subsection.find('#contents').on('resize.subsectionmanager', function(event, init) {
                    var height = subsection.find('#wrapper div.contents').outerHeight();
                    console.log(height, init, !iframe.is('.loading'), content.data('height'));

                    if(init == true || (!iframe.is('.loading') && content.data('height') !== height && height !== 0)) {
                        resize(content, iframe, body, height);
                    }
                }).trigger('resize.subsectionmanager', [init]);
animaux commented 11 years ago

150 true false 150 375 true 150 375 true

nilshoerrmann commented 11 years ago

Warum eigentlich subsection.find('#wrapper div.contents').outerHeight(); und nicht subsection.find('#contents').outerHeight();? Also:

        subsection.find('#contents').on('resize.subsectionmanager', function(event, init) {
                    var height = subsection.find('#contents').outerHeight();
                    console.log(height, init, !iframe.is('.loading'), content.data('height'));

                    if(init == true || (!iframe.is('.loading') && content.data('height') !== height && height !== 0)) {
                        resize(content, iframe, body, height);
                    }
                }).trigger('resize.subsectionmanager', [init]);
animaux commented 11 years ago

subsection.find('#contents').outerHeight(); führt leider auch zum sich endlos immer weiter ausdehnenden Drawer … :(

animaux commented 11 years ago

Ich versteh die Vorgänge im SSM ja nur ansatzweise, aber es kommt mir so vor, als ob die height: 150px; als html-Attribut style= an den iframe und div.contents angehängt werden und dann erst via var height = subsection.find('#wrapper').outerHeight(); in Zeile 231 ausgelesen werden.

animaux commented 11 years ago

(arbeitet eigentlich jemand an einem SSM-artigen Aufsatz für die neuen Associations? :)

nilshoerrmann commented 11 years ago

Okay, ich müsste mir das in Ruhe ansehen, habe aber derzeit keine eigene Installation mit Symphony 2.3.3 und Subsection Manager. Wie Du weißt ist ja der Support für dieses gute Stück eingestellt.

Ich versteh die Vorgänge im SSM ja nur ansatzweise, aber es kommt mir so vor, als ob die height: 150px; als html-Attribut style= an den iframe und div.contents angehängt werden und dann erst via var height = subsection.find('#wrapper').outerHeight(); in Zeile 231 ausgelesen werden.

Nein, dass die Stilattribute angehängt werden ist die Konsequenz aus subsection.find('#wrapper').outerHeight(); – 150 Pixel ist die Standardhöhe eines iframe-Elementes in Safari.

subsection.find('#contents').outerHeight(); führt leider auch zum sich endlos immer weiter ausdehnenden Drawer … :(

Den Werten aus der Konsole nach zu Folge, die Du zuvor gepostet hast, misst der überhaupt nicht die Höhe des Frames aus. 150 ist die Standardhöhe des Frames, 375 die des Duplicators, das ist pures CSS.

(arbeitet eigentlich jemand an einem SSM-artigen Aufsatz für die neuen Associations? :)

Nein, weil es aus meiner Sicht zu fraglich ist, wie und ob es mit Symphony weitergeht, siehe https://github.com/symphonycms/symphony-next/issues/14.

animaux commented 11 years ago

Danke Nils!

Wenn Du bereit bist Zeit zu investieren kann ich Dir einen temporären Zugang zur betreffenden Website einrichten (auch wenn Du dann Zugriff auf meinen vermutlich beschämenden XSL-Code hast …). Soll ich?

Gut zu wissen, das mit den 150px :)

Die Zukunft von Symphony macht mir auch etwas Sorgen. Wir bauen komplett darauf, weil wir bisher keine andere Lösung gefunden haben die ansatzweise so schön modular auf den jeweiligen Content zugeschnitten werden kann. Unsere Kunden sind auch alle sehr froh mit den weitestgehend prollproofen Backends.

Leider kann ich zu wenig beitragen, wie man ja an diesem Beispiel gut sieht.

Kennst Du denn Alternativen die eine ähnliche Philosophie verfolgen was die Content-Strukturen angeht?

nilshoerrmann commented 11 years ago

Wenn Du bereit bist Zeit zu investieren kann ich Dir einen temporären Zugang zur betreffenden Website einrichten (auch wenn Du dann Zugriff auf meinen vermutlich beschämenden XSL-Code hast …). Soll ich?

Ist wahrscheinlich nicht nötig. Das Problem ist mehr die Zeit – diese Woche sieht es ziemlich schlecht aus. Nächste weiß ich noch nicht so genau, hängt davon ab, wie viel ich diese Woche schaffe :)

Die Zukunft von Symphony macht mir auch etwas Sorgen. Wir bauen komplett darauf, weil wir bisher keine andere Lösung gefunden haben die ansatzweise so schön modular auf den jeweiligen Content zugeschnitten werden kann. Unsere Kunden sind auch alle sehr froh mit den weitestgehend prollproofen Backends.

Wir setzen auch darauf. Das Problem ist, dass wir ein Konzept brauchen, worum es bei einer Weiterentwicklung von Symphony denn eigentlich gehen soll. Ich habe mit John Porter darüber gesprochen und wir sind uns grundsätzlich über die Richtung einig, aber es ist halt eine Frage von Zeit, Können und Geld. Ich kann auch nur UI-Arbeit beisteuern, dass macht aber noch kein Redaktionssystem.

Kennst Du denn Alternativen die eine ähnliche Philosophie verfolgen was die Content-Strukturen angeht?

Nein, keine die mich wirklich überzeugt. Vielleicht am ehesten noch Craft.

animaux commented 11 years ago

Kein Problem Nils, danke! Die Seite muss auch erst in ein paar Wochen komplett fertig sein. Craft hattest Du irgendwo schon einmal erwähnt, aber da hat mich das Lizenzmodell erstmal abgeschreckt … ich halte etwas die Augen offen, aber hoffe sehr, dass die Symphony-Entwicklung sich wieder fängt. Ich glaube ich hab nun schon fast 10 Sites damit gebaut, und mehr folgen …

nilshoerrmann commented 11 years ago

aber da hat mich das Lizenzmodell erstmal abgeschreckt

Ja, das geht mir ähnlich. Aber die Basisversion ist kostenlos, so dass Du es auf jeden Fall so ausprobieren kannst. Problematischer ist die Frage der Lizenz: Was machst Du wenn der Laden dicht macht und Du keine Möglichkeiten hast, jemanden anderes das System weiterentwickeln zu lassen. Auch wenn es keine Garantie für eine gute Zukunft ist, ist das ein klarer Vorteil von Open Source.

iwyg commented 11 years ago

Naja, wenn die dicht machen haben die zwei Möglichkeiten. Entweder die releasen es unter GPL/MIT was auch immer und schmeißen das Lizenzmodell weg oder sie machen sich jede menge Feinde.

Das problem von OSS ist halt, dass meistens kein Geld fließt, was aber nötig wäre um solche Projekte zu realisieren, und zwar professionell.

Wir werden sehen was passiert.

animaux commented 11 years ago

Besteht die Chance, dass Du nochmal drauf schaust Nils? blinzel

nilshoerrmann commented 11 years ago

Ich bin ab morgen wieder im Büro, frag mich dann noch einmal.

nilshoerrmann commented 11 years ago

Also, grundsätzlich liegt das Problem tatsächlich in einer falschen Höhenberechnung. Ich muss jetzt erstmal ein bisschen arbeiten, schaue mir das aber heute abend noch einmal an.

animaux commented 11 years ago

Prima! Danke schonmal.

yojeek commented 11 years ago

Sorry, i had to post it here from the start :)

Height calculation still doesn't work for me, following height calculation returns array, not integer in my case:

https://github.com/hananils/subsectionmanager/blob/master/assets/subsectionmanager.publish.js#L233

Looks like Jquery bug/incompatibility (see http://bugs.jquery.com/ticket/12159) .

Simple trick that fixed the issue for me:

var height = $(this).outerHeight(false);