Flexslider_XH

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
isometric
Posts: 158
Joined: Thu Jun 12, 2014 8:32 am

Re: Flexslider_XH

Post by isometric » Fri Jun 27, 2014 12:50 pm

Funktioniert, vielen Dank !
in diesem Sinne isometric

svasti
Posts: 1651
Joined: Wed Dec 17, 2008 5:08 pm

Re: Flexslider_XH

Post by svasti » Fri Jul 04, 2014 2:17 pm

Für alle Flexslider-Interessenten:

Die neue Version steht als Betaversion zu Testzwecken zur Verfügung.

Ich denke, dass sie stabil ist und möchte sie gerne in den nächsten Tagen als Version 0.2 veröffentlichen.
Aber es wäre schön, wenn irgendjemand das Plugin einmal testet und hier berichtet.

In der neuen Version sind die in diesem Thread angesprochenen Hinweise integriert. D.h. man kann Flexslider in Template/in Newsboxen einsetzen, man kann beliebig viele Flexslider haben und verschiedene Effekte sind einstellbar pro Slider.

Update: einfach drüberinstallieren und anschließend Plugin aktivieren. Beim Aktivierungsprozess werden die alten Daten ausgelesen und ins neue Format konvertiert. Da die Bildfolge im alten Format in den Sprachdateien stand, wird zuerst die Sprachdatei ausgelesen, dann eine Flexslider.php Datei unter Userfiles/plugins/flexslider erstellt und anschließend die Sprachdatei völlig neu gefüllt. Wenn jemand normalerweise Schreibrechte vergeben muss, das am besten vor der Aktivierung machen.

P.S.:
Ich wollte noch ein Tool zur Bildbearbeitung einfügen, das ist allerdings erst in seinem Anfangsstadium. Bei Doppelklick auf ein Bild das man bereits eingegeben hat, erscheint das Bildbearbeitungsfenster wie in einer Lightbox und man kann die Auflösung verringern. Das Bild wird dann verkleinert und ein bisschen nachgeschärft. Später soll es mal so werden, dass man einen Ausschnitt erstellen kann nach einem prezisen Seitenverhältnis.

svasti

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

Re: Flexslider_XH

Post by cmb » Fri Jul 04, 2014 7:12 pm

Ich habe mal ein wenig getestet. Besonders die Bildskalierung hat mich dabei interessiert; sehr nette Sache. Auch allgemein finde ich Flexslider 0.2 sehr gelungen.

Zunächst hatte ich die Bilder direkt in userfiles/images/ liegen. Dann schlug aber das Speichern des verkleinerten Bildes immer fehl. Das liegt wohl an simpl_SaveImages(), wo davon ausgegangen wird, dass der Dateiname immer einen Slash enthält.

Dann habe ich die Bilder in den Unterordner slides/ gelegt. Nun funktionierte das Verkleinern prima, aber die automatische Vorbelegung des Dateinamens war dann slidesbildname_größe statt wie erwartet slides/bildname_größe.

Beim Skalieren von PNG mit Alpha-Kanal gehen diese Informationen verloren (was vorher durchsichtig war, ist danach schwarz). Das ist vermutlich aber ein eher theoretisches Problem, da Bilder für die Slideshows normalerweise wohl keinen Alphakanal haben (ich gehe mal davon aus, dass es in den meisten Fällen sowieso JPEGs sind).
Christoph M. Becker – Plugins for CMSimple_XH

svasti
Posts: 1651
Joined: Wed Dec 17, 2008 5:08 pm

Re: Flexslider_XH

Post by svasti » Sat Jul 05, 2014 2:37 pm

cmb wrote:Zunächst hatte ich die Bilder direkt in userfiles/images/ liegen. Dann schlug aber das Speichern des verkleinerten Bildes immer fehl. Das liegt wohl an simpl_SaveImages(), wo davon ausgegangen wird, dass der Dateiname immer einen Slash enthält.
komisch, in der Vorversion hatte ich die Probleme auch, dachte aber, das behoben zu haben. Bei mir hier tritt das nicht mehr auf. Kann das hier nicht reproduzieren.
Hab mir noch mal simpl_SaveImages() angeschaut

Code: Select all

    
$x = strrpos($imglist['image1'][$key],'/');
    $x = $x? $x++ : '';
    $folder  = substr($imglist['image1'][$key],0,$x);
    $oldname = substr($imglist['image1'][$key],$x);
    $imglist['image1'][$key]=$folder.$newname;
    simpl_NewImage($folder,$oldname,$newname,$width,$height);
 
Die Bildadressen sind immer von $pth['folder']['images'] aus gesehen. Angenommen er bekommt jetzt ein neues Bild: neubild.jpg.
Er schaut nach, wo in der Adresse des bisherigen Bildes (z.B. altesbild.jpg oder test/altesbild2.jpg) der letzte Slash ist, und wenn einer da ist, generiert er daraus den folder ($x = 4, substr bei 5 abgeschnitten => 'test/'). Und wenn keiner da ist, bleibt der folder leer($x = 0 substr 0 bis 0 => ''). Dann überschreibt er den alten Namen mit dem neuen Namen, mit Folder wenn vorhanden, und generiert anschließen dieses neue Bild.
Mir ist nicht klar, wo der Wurm steckt, vor allem weil er sich der Wurm bei mir nicht zeigt.
Vielleicht besser so?

Code: Select all

$x = strrpos($imglist['image1'][$key],'/');
    $folder  = $x? substr($imglist['image1'][$key],0,$x++) : '';
    $oldname = $x? substr($imglist['image1'][$key],$x++) : $imglist['image1'][$key];
    $imglist['image1'][$key]=$folder.$newname;
    simpl_NewImage($folder,$oldname,$newname,$width,$height);
 

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

Re: Flexslider_XH

Post by cmb » Sun Jul 06, 2014 12:27 pm

svasti wrote:komisch, in der Vorversion hatte ich die Probleme auch, dachte aber, das behoben zu haben. Bei mir hier tritt das nicht mehr auf. Kann das hier nicht reproduzieren.
Ich habe gerade noch mal mit einem frischen XH 1.6.2 probiert, und das selbe Ergebnis wie zuvor. Ich habe also ein Bild Tulips.jpg in userfiles/images/, und will es auf 512x384 px verkleinern. Dann wird der Dateiname als Tulips_512x384.jpg vorbelegt. Beim Speichern erscheint die Meldung:
Undefined file
./userfiles/images/
Der Debug-Modus zeigt als erste Warnung:
WARNING: substr() expects parameter 3 to be long, string given
C:\xampp\htdocs\xh162g\plugins\flexslider\funcs.php:493
Die erste Meldung kommt daher, dass $x hier '' ist, aber von substr() eine Zahl als 3. Parameter erwartet wird; jedenfalls seit PHP 5.3, siehe http://3v4l.org/Zju9q. Wenn ich Zeile 492 ändere:

Code: Select all

    $x = $x? $x++ : 0; 
dann klappt es.

Auch das Problem mit Bildern in Unterordnern konnte ich erneut reproduzieren. Bild in userfiles/images/slider/Tulip.jpeg. Im Bildbearbeitungsdialog wird dann Tulips_512x384.jpg vorgeschlagen. Gespeichert wird aber als userfiles/images/sliderTulips_512x384.jpg. Debuggen zeigt:

Code: Select all

$folder == 'slider'
$oldname == '/Tulips.jpg'
$newname == 'Tulips_1024x768 .jpg'
svasti wrote:Er schaut nach, wo in der Adresse des bisherigen Bildes (z.B. altesbild.jpg oder test/altesbild2.jpg) der letzte Slash ist, und wenn einer da ist, generiert er daraus den folder ($x = 4, substr bei 5 abgeschnitten => 'test/').
Das scheint nicht der Fall zu sein. Folgender Code verhält sich anders als man erwarten könnte:

Code: Select all

$x = $x? $x++ : 0; 
Ist $x == true, dann behält $x seinen Wert (siehe http://3v4l.org/SVtUd). Das passiert, weil $x++ zwar $x erhöht, aber der alte Wert zurückgegeben wird, der dann $x zugewiesen wird. Dieses Verhalten könnte aber ein Implementierungsdetail sein (Increment und Decrement Operatoren in Ausdrücken sind allgemein nicht ohne, siehe PHP Handbuch), und man sollte sich besser nicht darauf verlassen. Als sicherere Alternative vielleicht:

Code: Select all

$x = $x ? $x + 1 : 0; 
Damit klappt dann bei mir auch das Speichern des verkleinerten Bildes in einem Unterordner.
svasti wrote:Vielleicht besser so?

Code: Select all

$x = strrpos($imglist['image1'][$key],'/');
    $folder  = $x? substr($imglist['image1'][$key],0,$x++) : '';
    $oldname = $x? substr($imglist['image1'][$key],$x++) : $imglist['image1'][$key];
    $imglist['image1'][$key]=$folder.$newname;
    simpl_NewImage($folder,$oldname,$newname,$width,$height);
Test:

Code: Select all

$imglist['image1'][$key] = 'foo/bar';
$x = strrpos($imglist['image1'][$key],'/');
$folder  = $x? substr($imglist['image1'][$key],0,$x++) : '';
$oldname = $x? substr($imglist['image1'][$key],$x++) : $imglist['image1'][$key];
var_dump($folder);
var_dump($oldname);
zeigt:
string(3) "bar"
string(3) "foo"
Allerdings sollte es wohl "bar/" statt "foo" sein. Das Problem ist, dass der Post-Increment Operator seinen Operanden zurück liefert, und erst danach erhöht. Ersetze man beide Post-Increment-Operatoren durch Pre-Increment-Operatoren wäre das Ergebnis übrigens "foo/" und "ar".
Christoph M. Becker – Plugins for CMSimple_XH

svasti
Posts: 1651
Joined: Wed Dec 17, 2008 5:08 pm

Re: Flexslider_XH

Post by svasti » Mon Jul 07, 2014 5:08 pm

Wahnsinn!!! Vielen Dank für diese ausführliche Darstellung. Ich habe hier php 5.2.5 und ab 5.3 macht php ja anscheinend einiges anders. Bei irgendeinem Plugin hatte ich vor langer Zeit schon mal so etwas, wo es auf meine PC lief, aber auf einer höheren php-Version nicht.
Hatte jetzt aber überhaupt nicht daran gedacht, das Plugin mal mit einem aktuellen php zu testen. :oops:

Dank deiner ausführlichen Hinweise ist das Problem jetzt klar und die Lösung ganz einfach. Habe gerade die alte und die neue Version (echo der Variablen damit ich sehe was passiert) unter php 5.5.3 getestet und die Fehler bestätigt bzw. die Korrektur läuft.

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

Re: Flexslider_XH

Post by cmb » Mon Jul 07, 2014 5:43 pm

svasti wrote:Ich habe hier php 5.2.5 und ab 5.3 macht php ja anscheinend einiges anders.
Zu PHP 5.3 war schon ein relativ großer Sprung (eigentlich sollte statt PHP 5.3 ja ursprünglich PHP 6 veröffentlicht werden). Aber zwischen den Minor-Versionen gibt es immer mal ein paar inkompatible Änderungen. Recht gute Dienste leistet da PHP CompatInfo, obwohl es diesen Fall vermutlich nicht gemeldet hätte.
svasti wrote: Habe gerade die alte und die neue Version (echo der Variablen damit ich sehe was passiert) unter php 5.5.3 getestet und die Fehler bestätigt bzw. die Korrektur läuft.
Prima.

Statt echo verwende ich i.d.R. var_dump(), das besonders in Verbindung mit Xdebug eine sehr übersichtliche Ausgabe erzeugt (ein bisschen Syntax-Highlighting, und v.a. werden besondere HTML-Zeichen maskiert). Unter XAMPP kann Xdebug auch leicht eingerichtet werden (ich glaube, man muss nur in der php.ini die entsprechenden Optionen auskommentieren).
Christoph M. Becker – Plugins for CMSimple_XH

intelli
Posts: 167
Joined: Tue May 27, 2008 12:46 pm

Flexslider_XH direkt im template?

Post by intelli » Wed Jul 09, 2014 2:08 pm

Hi,

(wie) kann das Flexslider-Plugin direkt ins template integriert werden?

Das wäre für den Seiteheader eine ganz schicke Sache. Besonders wegen der Möglichkeit der internen Verlinkung.
Mit

Code: Select all

<?php echo flexslider();?>
klappt´s nicht.

jemand (Christoph) eine Idee!?

Gruß

intelli

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

Re: Flexslider_XH

Post by cmb » Wed Jul 09, 2014 2:28 pm

Hallo intelli,

für Flexslider_XH 0.1 ist ein Workaround im englischen Forum beschrieben: http://cmsimpleforum.com/viewtopic.php? ... 489#p41492.

Allerdings steht Flexslider_XH 0.2 wohl in den Startlöchern (der Download der Testversion ist wohl derzeit deaktiviert), und da muss dann diese Code-Änderung nicht mehr durchgeführt werden.

Christoph
Christoph M. Becker – Plugins for CMSimple_XH

intelli
Posts: 167
Joined: Tue May 27, 2008 12:46 pm

Re: Flexslider_XH

Post by intelli » Wed Jul 09, 2014 2:30 pm

Wie immer: Der Schnellste!
1.000 Dank!!

:D :D :D

Post Reply