Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 07. Februar 2011 11:55
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
GBfilepicker und andere Module
Was müsstet man tun um Gbfilepicker in anderen Modulen einzusetzen?
Konkret geht es mir um das Modul "ListIt". Dessen Uploadfunktionen sind ein wenig verbugt und da kam mir nun die Idee das mit dem GBfilepicker zu erweitern. Geht das ohne weiteres oder liegt das in der Hand vom Entwickler von Listit?
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#2 07. Februar 2011 21:31
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: GBfilepicker und andere Module
Das ist eine gute Frage.
Im Prinzip liegt es in den Händen des Entwicklers.
Denn GBFilePicker ist nicht als Standalone Modul gedacht. Es muss immer in einem bestimmten Kontext verwendet werden. Beim {content_module} Tag wird es ja auch nicht direkt aufgerufen, sondern es wird dem Inhaltstypen gesagt, welches Modul ausgeführt werden soll. Somit steht es im Kontext mit dem Inhaltstypen.
Das Problem ist folgendes: Jede Modulinstanz erhält vom CMS beim Ausführen eine ID.
Diese ID wird als Präfix für das name-Attribut von Inputfeldern oder für Parameternamen in Links bzw. Smarty-Tags verwendet. Damit ist sichergestellt, dass, sollten mehrere Modulinstanzen verwendet werden (z.B. das News Modul mehrmals im Template, aber mit unterschiedlichen Parametern), die Parameter der unterschiedlichen Instanzen sich nicht gegenseitig in die Quere kommen.
Bsp.:
{news detailtemplate="foo"}
{news detailtemplate="bar"}
Ohne diese ID würde immer der jeweils letzte Parameter gelten. D.h. es würde für beide Modulinstanzen dasselbe Detail-Template angezeigt werden.
Mit ID wird beim ersten Aufruf aus "detailtemplate" z.B. "m1_detailtemplate" und aus dem zweiten "m2_detailtemplate". Somit kann das CMS die Parameter jeder einzelnen Instanz zuordnen.
GBFilePicker erzeugt zwar ein Inputfeld und schreibt den Pfad der ausgewählten Datei dort hinein, jedoch muss dieses Inputfeld im Zusammenhang mit einem bestimmten Modul stehen. Genauer gesagt benötigt GBFilePicker die ID des Moduls in dessen Zusammenhang es stehen soll, weil es sonst seine eigene Modul ID als Präfix für das name-Attribut des Inputfeldes verwenden würde, wodurch das Modul, welches dieses Formular letztendlich auswerten soll, das Inputfeld des GBFilePickers ignorieren würde.
Ich habe es allerdings schonmal mit einem Plugin im Zusammenhang mit FrontendUsers in einem FEU Template ohne Probleme einsetzen können. Bei FrontendUsers war das ganz einfach, da die Modul ID des FEU Moduls im FEU Template vorhanden war (etwas, was ich ehrlich gesagt bei jedem Modul vorraussetzen würde). Somit konnte ich per Plugin mit GBFilePicker ein Inputfeld mit der Modul ID des FrontendUsers Modul erzeugen.
Ich kenne das ListIt Modul nicht, aber im Prinzip brauchst Du nur die ID des Moduls.
Schau mal mit {get_template_vars}, ob da etwas zu finden ist. Wenn nicht, dann wäre es ein leichtes, diese ID einfach mit an Smarty zu übergeben:
$smarty->assign('module_id', $id);
Das muss dann nur in die Datei, die bei der jeweiligen Aktion ausgeführt wird.
Dann benötigst Du nur folgendes Plugin:
<?php
function smarty_cms_function_GBFilePicker($params, &$smarty)
{
$output = '';
$id = '';
if(isset($params['id']))
{
$id = $params['id'];
}
$value = '';
if(isset($params['value']))
{
$value = $params['value'];
}
$prop_name = 'gbfp';
if(isset($params['prop_name']))
{
$prop_name = $params['prop_name'];
}
$returnid = cms_utils::get_current_pageid();
if($GBFilePicker =& cms_utils::get_module('GBFilePicker'))
{
$output = $GBFilePicker->CreateFilePickerInput($GBFilePicker, $id, $prop_name, $value, $params,$returnid);
}
echo $output;
}
?>
Benutzt wird das im ListIt Template dann so:
{GBFilePicker mode="browser" upload="true" id="$module_id" prop_name='Name des Feldes' value='Inhalt des Feldes'}
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 24. Juni 2011 20:16
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: GBfilepicker und andere Module
Im Moment wird ListItExtened als Fork von ListIt weiterentwickelt. GBFilePicker wird da als Feldtyp mit eingebaut.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#4 10. Juli 2011 14:51
- Foaly*
- Gast
Re: GBfilepicker und andere Module
Updates gibt's dazu immer hier: http://www.cmsmadesimple.de/forum/viewtopic.php?id=903
Seiten: 1