Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 22. Juli 2012 11:05
- timwalter
- hat von CMS/ms gehört
- Registriert: 15. Oktober 2011
- Beiträge: 12
Nach Update auf 1.10 Probleme mit Lytebox Modul
Hallo zusammen,
ich benutze auf meiner Seiter das Lytebox Modul sehr intensiv. Jetzt möchte ich das CMSMS von 1.9 nach 1.10 updaten aber das Lytebox Modul funktioniert ja leider nur bis 1.9.9. Bevor ich jetzt meine Seite komplett umstelle dachte ich mir es wäre einfacher das Modul anzupassen. Ja ich weiss sehr naiv von mir
Das Modul so umzubauen das es sich im Backend wieder installieren lässt war trivial. Aber bei dem nächsten Problem komme ich nicht weiter. Ich hab mir schon etliche andere Module und auch die Doku angesehen aber ich sehe nicht wo das Problem liegt.
Wenn ich das Modul in einer Seite aufrufe bekomme ich 28 mal folgende Fehlermeldung:
Warning: array_push() expects parameter 1 to be array, null given in ./lib/classes/class.CMSModule.php on line 628
An der angegeben Stelle befindet sich folgende Funktion:
final public function CreateParameter($param, $defaultval='', $helpstring='', $optional=true)
{
//was: array_unshift(
array_push($this->params, array(
'name' => $param,
'default' => $defaultval,
'help' => $helpstring,
'optional' => $optional
));
}
Also hab ich mal nach CreateParameter im Lytebox Modul gesucht und siehe da in der Lytebox.module.php gibt es die Funktion SetParameters() und darin wird genau 28 mal CreateParameter aufgerufen.
function SetParameters()
{
$this->RegisterModulePlugin();
$this->RestrictUnknownParams();
/*
* setup module parameters
*/
/* Tag Parameters */
$this->CreateParameter('href', '', $this->Lang('help_href'), false);
$this->SetParameterType('href', CLEAN_STRING);
$this->CreateParameter('display', 'box', $this->Lang('help_display'), true);
$this->SetParameterType('display', CLEAN_STRING);
$this->CreateParameter('group', '', $this->Lang('help_group'), true);
$this->SetParameterType('group', CLEAN_STRING);
$this->CreateParameter('frameattr', 'width: 400px; height: 400px; scrolling: auto;', $this->Lang('help_fra$
$this->SetParameterType('frameattr', CLEAN_STRING);
$this->CreateParameter('title', 'basename($href)', $this->Lang('help_title'), true);
$this->SetParameterType('title', CLEAN_STRING);
$this->CreateParameter('extra', '', $this->Lang('help_extra'), true);
$this->SetParameterType('extra', CLEAN_NONE);
$this->CreateParameter('text', 'basename($href)', $this->Lang('help_text'), true);
$this->SetParameterType('text', CLEAN_STRING);
$this->CreateParameter('thumbsrc', '', $this->Lang('help_thumbsrc'), true);
$this->SetParameterType('thumbsrc', CLEAN_STRING);
$this->CreateParameter('thumbalt', 'basename($thumbsrc)', $this->Lang('help_thumbalt'), true);
$this->SetParameterType('thumbalt', CLEAN_STRING);
$this->CreateParameter('thumbextra', '', $this->Lang('help_thumbextra'), true);
$this->SetParameterType('thumbextra', CLEAN_NONE);
/* Lytebox Global Configuration */
$this->CreateParameter('theme', 'grey', $this->Lang('help_theme'), true);
$this->SetParameterType('theme', CLEAN_STRING);
$this->CreateParameter('hideFlash', 1, $this->Lang('help_hideFlash'), true);
$this->SetParameterType('hideFlash', CLEAN_INT);
$this->CreateParameter('outerBorder', 1, $this->Lang('help_outerBorder'), true);
$this->SetParameterType('outerBorder', CLEAN_INT);
$this->CreateParameter('resizeSpeed', 8, $this->Lang('help_resizeSpeed'), true);
$this->SetParameterType('resizeSpeed', CLEAN_INT);
$this->CreateParameter('maxOpacity', 80, $this->Lang('help_maxOpacity'), true);
$this->SetParameterType('maxOpacity', CLEAN_INT);
$this->CreateParameter('navType', 1, $this->Lang('help_navType'), true);
$this->SetParameterType('navType', CLEAN_INT);
$this->CreateParameter('autoResize', 1, $this->Lang('help_autoResize'), true);
$this->SetParameterType('autoResize', CLEAN_INT);
$this->CreateParameter('doAnimations', 1, $this->Lang('help_doAnimations'), true);
$this->SetParameterType('doAnimations', CLEAN_INT);
$this->CreateParameter('borderSize', 12, $this->Lang('help_borderSize'), true);
$this->SetParameterType('borderSize', CLEAN_INT);
/* Lytebox Slideshow Options */
$this->CreateParameter('slideInterval', 4000, $this->Lang('help_slideInterval'), true);
$this->SetParameterType('slideInterval', CLEAN_INT);
$this->CreateParameter('showNavigation', 1, $this->Lang('help_showNavigation'), true);
$this->SetParameterType('showNavigation', CLEAN_INT);
$this->CreateParameter('showClose', 1, $this->Lang('help_showClose'), true);
$this->SetParameterType('showClose', CLEAN_INT);
$this->CreateParameter('showDetails', 1, $this->Lang('help_showDetails'), true);
$this->SetParameterType('showDetails', CLEAN_INT);
$this->CreateParameter('showPlayPause', 1, $this->Lang('help_showPlayPause'), true);
$this->SetParameterType('showPlayPause', CLEAN_INT);
$this->CreateParameter('autoEnd', 1, $this->Lang('help_autoEnd'), true);
$this->SetParameterType('autoEnd', CLEAN_INT);
$this->CreateParameter('pauseOnNextClick', 0, $this->Lang('help_pauseOnNextClick'), true);
$this->SetParameterType('pauseOnNextClick', CLEAN_INT);
$this->CreateParameter('pauseOnPrevClick', 1, $this->Lang('help_pauseOnPrevClick'), true);
$this->SetParameterType('pauseOnPrevClick', CLEAN_INT);
$this->CreateParameter('config', $this->Lang('help_config'), '', true);
$this->SetParameterType('config', CLEAN_NONE);
}
Die Fehlermeldung ist ja eigentlich recht verständlich für PHP Verhältnisse . Hier wird eine Variable übergeben die eigentlich ein Array sein müsste aber sie ist stattdessen 'null'. Nur was macht Lytebox anders als die anderen Module? Denn in denen wird CreateParameter() genauso benutzt und sogar in der offiziellen Doku steht es so drin.
Wäre echt Klasse wenn mir jemand einen Tip geben könnte.
gtw
Achso es geht um dieses Modul: http://dev.cmsmadesimple.org/projects/lytebox/
Offline
#2 22. Juli 2012 12:37
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Was genau hast Du denn bereits am Modul geändert?
Was hast Du z.B. aus dem veralteten Konstruktor gemacht?
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#3 22. Juli 2012 13:31
- timwalter
- hat von CMS/ms gehört
- Registriert: 15. Oktober 2011
- Beiträge: 12
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Hi NaN,
da ich nicht weiss was der veraltete Konstruktor ist habe ich vermutlich noch nichts damit gemacht. Meine Änderungen beschränken sich auf die Anpassung von function MaximumCMSVersion() damit sich das Modul installieren lässt. Ist das Skeleton Modul eigentlich noch eine gute Vorlage zum abschreiben? Ist ja immerhin auch schon 1,5Jahre alt.
gtw
Offline
#4 22. Juli 2012 15:30
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Ich bin mir nicht sicher, ob das tatsächlich mit dem Konstruktor zusammenhängt, aber das ist das erste was mir in den Sinn kam.
Das eigentliche Problem ist folgendes:
Die Funktion array_push() in der Datei /lib/classes/class.CMSModule.php erwartet als ersten Parameter ein Array. Als erster Parameter wird dort $this->params übergeben. $this->params sollte eigentlich bereits ein Array sein.
In CMSms 1.9 war das nicht der Fall. Dort wurde erst im Konstruktor aus $this->params ein Array gemacht. Wenn also beim Lytebox-Modul etwas mit dem Konstruktor nicht stimmt, dann ist $this->params in der Klasse CMSModule kein Array und somit kommt es zu diesem Fehler.
Das alles lässt mich glauben, dass das tatsächliche Problem eher darin liegt, dass nicht alle Dateien beim Upload korrekt überschrieben wurden. D.h. Du hast evtl. teilweise noch Dateien von CMSms 1.9 auf dem Server. Aktuell ist übrigens CMSms 1.10.3. Ich würde also einfach mal die Dateien erneut hochladen. (Am Besten aus dem Full-Paket. Bei den Diffs gibt es manchmal Probleme bzw. enthält das Diff von 1.10.3 nur die Änderungen gegenüber der 1.10.2.)
Außerdem würde ich im Lytebox Module den Konstruktor ändern
Alt:
function Lytebox()
{
parent::CMSModule();
static $countcalls = 0;
$this->countcalls =& $countcalls;
}
Neu:
function __construct()
{
parent::__construct();
static $countcalls = 0;
$this->countcalls =& $countcalls;
}
Darüber hinaus enthält das Modul einige veraltete Funktions-/Variablenaufrufe wie z.B. global $gCms oder $gCms->config[...].
Das muss geändert werden in $gCms = cmsms() bzw. $config = $gCms->GetConfig(); $config[...]
Anstelle am Skeleton Module würde ich mich eher an bestehenden Core-Modulen wie z.B. dem News-Modul orientieren. Zusätzlich wäre noch die API Doku zu emfehlen. Das ist meist aktueller. Das Skeleton Modul hilft in seiner derzeitigen Version vielleicht lediglich, um den groben Aufbau von Modulen zu verstehen.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#5 23. Juli 2012 15:29
- timwalter
- hat von CMS/ms gehört
- Registriert: 15. Oktober 2011
- Beiträge: 12
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Hallo,
Im Lytebox Module den Konstruktor zu ändern bringt leider nichts. Daran dass nicht alle Dateien beim Upload korrekt überschrieben wurden kanns es auch nicht liegen, denn mein Testsystem ist ein frisch installiertes 1.10.3. Da habe ich wohl den Aufwand unterschätzt.
Dann werde ich wohl in den sauren Apfel beißen und auf ein anderes Modul schwenken in der Hoffnung, dass das beim nächsten Update noch funktioniert Das ist wenigstens nur Fleissarbeit mit einem absehbaren Ende, besser als ewig in den Krümeln zu suchen und am Ende keinen Meter weiter zu sein.
gtw
Offline
#6 23. Juli 2012 16:29
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Was macht das Lightbox-Modul eigentlich? Hab mir das Modul bisher noch nie angeschaut.
Interessant für dich könnte möglicherweise das Modul ToolBox sein. Hier hast du mit AutoLightBox eine sehr konforable Lösung für Lightboxen.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#7 23. Juli 2012 18:16
- Janl
- Server-Pate
- Ort: Freistadt, Österreich
- Registriert: 13. Dezember 2010
- Beiträge: 1.231
- Webseite
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Hallo,
statt Lytebox nutze ich jetzt Lightbox, wegen diese Probleme.
Es wird von mir aber nur sparsam genutzt.
Viel Erfolg,
Jan
Kubuntu 22.04 - Win 11 pro / Kubuntu 20.04 - win10 pro
Offline
#8 24. Juli 2012 15:31
- timwalter
- hat von CMS/ms gehört
- Registriert: 15. Oktober 2011
- Beiträge: 12
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Hi,
Lytebox macht eigentlich nichts weiter als das CSS und das Javascript zu laden wo es gebraucht wird. Bestechend fand ich die Einfachheit kombiniert mit der Möglichkeit alle Parameter nach belieben zu beeinflussen, ohne an 15 Ecken im Backend rumklicken zu müssen. Und man kann mehrere Gruppen von Lyteboxen parallel auf einer Seite haben ohne das diese miteinander in Verbindung stehen. Aufruf per Einzeiler direkt im Content finde ich auch nett.
{Lytebox href='uploads/images/bildgross.jpg' group='gruppe1' display='box' text=''title='Ein schönes Bild'
thumbsrc='uploads/images/bildklein.jpg' thumbalt='bildklein.jpg' thumbextra='style="border: 0px;"'}
daraus macht das Modul dann
<a href="uploads/images/bildgross.jpg" rel="lytebox[gruppe1]" title="Ein schönes Bild">
<img src="uploads/images/bildgross.jpg" title="Ein schönes Bild" alt="bildklein.jpg" style="border: 0px;" /></a>
Ein Modul namens Lightbox finde ich nicht.
gtw
Offline
#9 24. Juli 2012 16:02
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Schon das Toolbox-Modul gecheckt, welches @Nockenfell empfohlen hat?
Offline
#10 24. Juli 2012 16:04
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Schon das Toolbox-Modul gecheckt, welches @Nockenfell empfohlen hat?
Die Lightboxen oder Lyteboxen macht Toolbox auf jedenfall einfacher. Die Gruppierung ist im Modul nicht vorgesehen, könnte jedoch problemlos über ein paar Javascript-Regeln im jQuery gebaut werden. (oder in dem man den Rel-Tag des Bildes entsprechend ausfüllt)
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#11 30. Juli 2012 14:09
- timwalter
- hat von CMS/ms gehört
- Registriert: 15. Oktober 2011
- Beiträge: 12
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Hi,
also meine Meinung zur Toolbox: Funktioniert wohl nur wenn man die Thumbnails automatisch generieren lassen möchte. Das macht aber schon mein PC mit Watermarks etc. pp. es gibt keinen Grund das auf dem Webserver zu erledigen. Die fehlende Gruppenfunktion wurde ja schon angesprochen. Wenn ich die "problemlos über ein paar Javascript-Regeln im jQuery" einbauen könnte, dann könnte ich bestimmt auch das alte Lytebox Modul reparieren.
Nichts für ungut aber Toolbox hat was von einem schweizer Armeemesser. Jede Menge Funktionen aber wenn man damit eine Scheibe Brot abschneiden will ist die Klinge zu kurz.
Ich werde mir jetzt nochmal das Lytebox Modul vornehmen. Habe da noch ein Tutorial gefunden was etwas aktueller zu sein scheint: http://pc.de/web/plugins-module-cmsmadesimple-3447
gtw
Offline
#12 06. August 2012 17:37
- timwalter
- hat von CMS/ms gehört
- Registriert: 15. Oktober 2011
- Beiträge: 12
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Hallo zusammen,
Ich habe mir nochmal das Lytebox Modul vorgenommen. Da sich das Handling von $this->params verändert hat, habe ich in der action.default.php in Zeile 119 mal das var $params; auskommentiert. Jetzt lädt die Seite auch ohne Fehlermeldung allerdings verstehe ich das Konstrukt nicht richtig. Am Ende der action.default.php steht
$action = new Lytebox_ActionDefault($name, $id, $params, $returnid);
$action->DoAction();
in der Funktion Lytebox_ActionDefault steht
function Lytebox_ActionDefault(&$name, &$id, &$params, &$returnid)
{
parent::Lytebox();
$this->name =& $name;
$this->id =& $id;
$this->params =& $params;
$this->returnid =& $returnid;
}
Was soll das mit dieser $params Variable? Außer dass die am Anfang deklariert wird und später dann an die Funktion Lytebox_ActionDefault übergeben wird passiert mit der Variable nix. Trotzdem verschwindet der Output auf der Seite sobald ich da irgendwas dran änder.
Da $this->params ja ein array ist und $params nicht, erklärt sich jetzt zumindest die ursprüngliche Fehlermeldung. Die direkte Zuweisung einer Variable an ein array ohne Angabe eines key macht aber so eigentlich keinen Sinn mehr. Ansonsten macht das Modul fast schon was es soll. Es lädt die Thumbnails und erzeugt die richtigen Links allerdings öffnet sich das große Bild nicht in einem Overlay sondern ganz unten am Ende der Seite.
gtw
Offline
#13 10. August 2012 12:52
- timwalter
- hat von CMS/ms gehört
- Registriert: 15. Oktober 2011
- Beiträge: 12
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Hi,
wie funktioniert denn eigentlich das Laden von CSS bei Modulen? Das scheint nämlich momentan das Problem zu sein wieso die Bilder am Ende der Seite geöffnet werden. Ich habe das Verhalten nochmal mit einer älteren CMSMS Version verglichen.
Eigentlich müsste auf Seiten in denen das Modul benutzt wird ein zusätzlicher Satz CSS geladen werden
<link rel="stylesheet" type="text/css" media="projection,screen" href="http://server.de/stylesheet.php?cssid=52&mediatype=projection,screen" />
Das passiert aber nicht mehr wenn das Modul im CMSMS >=1.10 läuft. Ich habe mir den Quelltext angesehen aber außer das in der Datei method.install.php das CSS in die Datenbank geschrieben wird konnte ich nix finden. Die Installation hat wohl auch geklappt denn unter Layout->Stylesheets ist das CSS "Module: Lytebox" drin.
gtw
Edit:
In der action.default.php ab Zeile 258 wird das stylesheet geladen
if ((version_compare(CMS_VERSION, '1.9.0') >= 0) && (1 == $this->countcalls)) {
$metadata = $contentobj->Metadata();
if (!preg_match('/Module: Lytebox/', $metadata)) {
$metadata .= "\n{cms_stylesheet name='Module: Lytebox' media='projection,screen'}";
$contentobj->SetMetadata($metadata);
}
}
Klappt nur leider nicht
Beitrag geändert von timwalter (10. August 2012 13:29)
Offline
#14 10. August 2012 13:25
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Die Stylesheets werden über den Tag {cms_stylesheet} geladen und im /tmp/cache Verzeichnis abgelegt. Damit das Stylesheet der Lytebox geladen wird, musst du dieses dem Template zuordnen.
Wichtig zu beachten ist am 1.10: Im Stylesheet immer absolute Pfade verwenden bei url() Anweisungen:
background: url([[root_url]]/pfad/zur/grafik.jpg)
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#15 10. August 2012 13:42
- timwalter
- hat von CMS/ms gehört
- Registriert: 15. Oktober 2011
- Beiträge: 12
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Hi,
ja manuell klappt das jetzt auch, nur ursprünglich hat das Modul das Stylesheet selber geladen wenn nötig. Allerdings das geht bisher noch nicht wieder.
gtw
Edit:
Na sowas blödes aber auch (1 == $this->countcalls) sorgt dafür, dass das Stylesheet erst kommt wenn mindestens zwei Bilder auf der Seite eingebunden werden.
Beitrag geändert von timwalter (10. August 2012 14:10)
Offline
#16 10. August 2012 14:47
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Nach Update auf 1.10 Probleme mit Lytebox Modul
Keine Ahnung wie sich das Modul hier eingehängt hat. Zumindest mit >=1.10 funktioniert dies nicht mehr.
Du kannst jedoch beim ToolBox oder Gallery-Modul schauen wie man dies machen könnte.
In der ToolBox dazu action.default.php anschauen und die in der ToolBox.module.php die Funktion DoEvent. Hier wird in der ContentPostRender Funktion im Template vor dem </head> Tag das Stylesheet und das JavaScript eingefügt.
Besser lässt sich das allerdings in der Gallery vergleichen. Diese ist weniger vielseitig aufgebaut wie die ToolBox.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
Seiten: 1