Neues Modul: GBFilePicker

Hilfe zu Modulen und Tags
NaN

Neues Modul: GBFilePicker

Post by NaN »

Hallo allerseits! ;D

Ich hatte ja schon angekündigt, dass der FilePicker aus dem AdvancedContent Modul demnächst rausfliegt und durch ein eigenständiges Modul ersetzt wird.
Da die anderen Projekte in Sachen FilePicker leider noch auf sich warten lassen, habe ich meine Drohungen zumindest schonmal soweit wahr gemacht, und den FilePicker als Modul im Forge bereitgestellt:
GBFilePicker  ;D

Wer die Geschichte des AdvancedContent Moduls nicht kennt: Der FilePicker ist ein Ableger des TinyMCE FilePickers, der von Haus aus zusammen mit CMSms geliefert wird. Ich habe ihn nur aus dem TinyMCE Modul herausgenommen und ein wenig daran herumgefummelt.
Glücklicherweise habe ich zeitgleich damit angefangen, mir die Grundlagen objektorientierter Programmierung anzueignen und aus purer Experimentierfreude den FilePicker von Anfang an bereits als eigenständige Klasse im AdvancedContent Modul erstellt.

Dadurch war es nur noch ein kleiner Schritt, aus dieser Klasse eine eigene Modul-Klasse zu erstellen.
Das Ergebnis ist ein kleines Tool sowohl für Modulentwickler als auch für "normale" CMSms User.
Interessant dürfte für Modulentwickler zunächst nur die Funktion CreateFilePickerInput() sein. Für eine genauere Beschreibung siehe Modulhilfe. Für noch mehr Details habe ich auch eine kleine API Dokumentation mit phpDocumentor erstellt.
(Ist mit im Download enthalten und im Verzeichnis doc/api oder über die Modulhilfe zu finden)
Wann immer man also ein Modul kreiert bei dem ein FilePicker - ob als Dropdown oder als kleiner FileBrowser - benötigt wird, kann man ganz einfach auf die Funktion des GBFilePickers zurückgreifen.

Webdesigner können mit Hilfe des {content_modul} Tags im Seiten Template einen FilePicker als Inhaltsblock beim Berabeiten von Seiten erstellen.
Bsp.: {content_module block="MeinBlock" module="GBFilePicker"}

Ein Einsatz im Frontend mit Hilfe von {cms_module module="GBFilePicker"} im Zusammenhang mit FrontEndUsers habe ich zwar geplant, muss ich mir aber vor allem aus sicherheitstechnischer Sicht erst noch genau überlegen. Die Frontend Funktionen sollten vielleicht doch besser die betreffenden Module selbst bereitstellen.

Wer Lust hat das mal auszuprobieren, scheut Euch nicht vor Fragen, Anregung oder Kritik.
Last edited by NaN on Mon Sep 06, 2010 5:00 pm, edited 1 time in total.
nicmare
Power Poster
Power Poster
Posts: 1150
Joined: Sat Aug 25, 2007 9:55 am

Re: Neues Modul: GBFilePicker

Post by nicmare »

ok, als nicht-entwickler habe ich versucht, das teil gemäß dem mitgelieferten beispiel gleich mal in meinem template einzubauen:
{content_module mode="browser" block="Box1 Bild" module="GBFilePicker" dir='images' assign="box1image"}

1. wird der filepicker am ende der seitenbearbeitung angezeigt und nicht mittendrin gemäß template:

Code: Select all

{content block="Box1 Titel" oneline="true" assign="box1title" size="20"}
{content_module mode="browser" block="Box1 Bild" module="GBFilePicker" dir='images' assign="box1image"}
{content block="Box1 Inhalt" oneline="true" assign="box1content" size="77"}
2. der Filepicker wird zwar angezeigt, beim auswählen wird das fenster auch abgedunkelt aber dann kommt ne weiterleitung auf editcontent.php?sp_=58c6e811&content_id=15&page= . also das wird ewig geladen (weiße seite) und nichts passiert. habe ich was verpasst?
Last edited by nicmare on Tue Sep 07, 2010 12:36 pm, edited 1 time in total.
owr_bgld

Re: Neues Modul: GBFilePicker

Post by owr_bgld »

Wird wahrscheinlich nicht der Fehler sein, aber du hast hier

Code: Select all

dir='images' 
andere Anführungszeichen als beim Rest
nicmare
Power Poster
Power Poster
Posts: 1150
Joined: Sat Aug 25, 2007 9:55 am

Re: Neues Modul: GBFilePicker

Post by nicmare »

daran liegts nicht aber hier nen screenshot von der JS konsole.
scheint so als gäbe es probleme wenn cmsms in nem unterverzeichnis installiert ist?!
Attachments
Bildschirmfoto 2010-09-07 um 15.47.15.png
NaN

Re: Neues Modul: GBFilePicker

Post by NaN »

Erst mal danke für das Feedback.
nicmare wrote:
1. wird der filepicker am ende der seitenbearbeitung angezeigt und nicht mittendrin gemäß template
Ich bin mir gerade nicht sicher, ob das ein Problem des FilePickers oder des Standard-Inhaltstypen ist. Denn auf die Reihenfolge hat das Modul eigentlich keinerlei Einfluss. Bei AdvancedContent wurde der FilePicker in der richtigen Reihenfolge angezeigt (in den derzeitigen Versionen vertragen sich beide Module allerdings noch nicht, da sie versuchen, die gleichen Javascripte zu laden und anzuwenden - aber beides braucht man ja im Moment eigentlich auch nicht).
nicmare wrote:
2. der Filepicker wird zwar angezeigt, beim auswählen wird das fenster auch abgedunkelt aber dann kommt ne weiterleitung auf editcontent.php?sp_=58c6e811&content_id=15&page= . also das wird ewig geladen (weiße seite) und nichts passiert. habe ich was verpasst?
Nicht, dass ich wüsste.
Klingt nach einem Javascript Fehler...
nicmare wrote:
daran liegts nicht aber hier nen screenshot von der JS konsole.
scheint so als gäbe es probleme wenn cmsms in nem unterverzeichnis installiert ist?!
... der aber offenbar nicht vom FilePicker Modul verursacht wird.
Bin mir da aber auch gerade nicht so sicher.
Das Modul versucht zu vermeiden, jQuery und nötige Plugins mehrfach zu laden.
Es wird also im Javascript erst geprüft, ob das jQuery Objekt bereits vorhanden ist.
Wenn nicht, dann wartet es zwei/drei sekunden (und prüft dabei alle 100 Millisekunden erneut - könnte ja sein, dass der Browser es gerade lädt). Nach Ablauf der Zeit fügt es dann im Headbereich das Script selber ein. Dann wartet es nochmal ein/zwei Sekunden (und prüft dabei wieder alle 100 Millisekunden) bis das jQuery Objekt wirklich zur Verfügung steht (dauert ja einen Moment, bis der Browser das Script geladen hat).
Danach werden auf gleiche Weise die nötigen Plugins geladen (ist Momentan nur eins: jQuery Form Plugin für den Dateiupload via AJAX).

Öffne doch mal Firebug und schau dir den Headbereich an.
Da kannst du genau verfolgen, wann das Modul welche Scripte lädt.
Könnte sein, dass Du etwas zu schnell warst.

Auf meinem Localhost habe ich bereits AdvancedContent und GBFilePicker so erweitert, dass es dadurch keine Konflikte zwischen den Javascripten gibt und jQuery inklusive aller nötigen Plugins nicht doppelt geladen wird.

Ich bin mir nicht sicher, ob die Methode zum Laden der Scripte so optimal gelöst ist.
Eine Callback Funktion wäre vermutlich besser als ständig alle 100 Millisekunden ein und dieselbe Funktion ausführen zu lassen, aber so fit bin ich in Javascript nun auch wieder nicht. Falls da jemand eine bessere Lösung kennt (bitte ohne Googles Dingsbums API ;) ), lasst es mich wissen.
nicmare
Power Poster
Power Poster
Posts: 1150
Joined: Sat Aug 25, 2007 9:55 am

Re: Neues Modul: GBFilePicker

Post by nicmare »

ich bin da jetzt auch nicht so bewandert aber auf jeden fall werden alle js Dateien geladen und der Viewport wird auch abgedunkelt aber dann lädt und lädt die Seite und nix passiert.


vielleicht liegt es daran dass ja der tiny schon geladen wird (für die regulären content)?
Last edited by nicmare on Tue Sep 07, 2010 5:27 pm, edited 1 time in total.
NaN

Re: Neues Modul: GBFilePicker

Post by NaN »

Hat denn außer Nicmare noch jemand dieses Problem?
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm

Re: Neues Modul: GBFilePicker

Post by nockenfell »

In Kombination mit AdvancedContent führt dies bei mir zu folgender Fehlermeldung:

Fatal error: Call to undefined method GBFilePicker::GetElmDisplay() in D:\02 hp\00_xampp\cmsms17\modules\AdvancedContent\inc\function.displayContentBlocks.inc.php on line 84

Bei einer "normalen" Content Seite erscheint die Auswahl "Browse Image". Wird auf den Butten geklickt, wird der Hintergrund kurz abgedunkelt wird die gesamte Seite weiss und lädt unendlich.

Mit aktiviertem Firebug werden folgende Fehlermeldungen ausgegeben:

uncaught exception: controls.js requires including script.aculo.us' effects.js library
[Break on this error] (no source for )
Class is not defined
[Break on this error] Control.Slider = Class.create({
slider.js (Zeile 16)
Template is not defined
[Break on this error] new Template(''),
[this message is written with 100% recycled bits]
nicmare
Power Poster
Power Poster
Posts: 1150
Joined: Sat Aug 25, 2007 9:55 am

Re: Neues Modul: GBFilePicker

Post by nicmare »

nockenfell wrote:
Bei einer "normalen" Content Seite erscheint die Auswahl "Browse Image". Wird auf den Butten geklickt, wird der Hintergrund kurz abgedunkelt wird die gesamte Seite weiss und lädt unendlich.
das ist ja genau der fehler den ich auch habe
NaN

Re: Neues Modul: GBFilePicker

Post by NaN »

In Kombination mit AdvancedContent funktioniert GBFilePicker nicht.
Ist aber im Moment auch nicht nötig, da AdvancedContent den FilePicker ja (noch) selbst integriert hat. Also gebt euch keine Mühe, beides zum Laufen zu kriegen.

(Wer die SVN Version des AdvancedContent Moduls verwendet, muss darauf achten, dass er erstmal nicht das Verzeichnis trunk, sondern das Verzeichnis tags/0.5.+ verwendet! Das Verzeichnis trunk ist für die 0.6 und wird unter Umständen noch nicht richtig funktionieren.)

Im SVN habe ich noch ein paar kleine Fehler des GBFilepickers behoben. Die haben aber nichts mit dem Javascript zu tun (glaube ich jedenfalls). Die Javascript Fehler kann ich leider nicht nachvollziehen. Habe das Modul mit IE und FF getestet. (Safari geht gerade bei mir leider nicht. Teste ich später.) Funktioniert problemlos. Der TinyMCE funkt bei mir auch nicht dazwischen.

Treten die Fehler nur beim Bearbeiten von Seiten auf?
Funktioniert es denn wenigstens unter "Erweiterungen->FilePicker?"

Versucht mal bitte folgendes: Öffnet Firebug und untersucht den Button zum Öffnen des FileBrowsers. Der hat ein attribut "href". Die dort angegebene Adresse wird dann vom Javascript per AJAX abgerufen. Kopiert die mal und öffnet die Adresse mal selbst.
Als Antwort sollte ein XML Resultat erscheinen. Schaut mal bitte, ob dort evtl. noch irgendwelche Fehler drin stehen.

Weitere mögliche Fehlerquelle: schaltet mal den debug-Modus ein und schaut ganz unten auf der Seite was dort bei GBFilePicker zum Thema Sessions steht. Einige Parameter werden jetzt in php Sessions gespeichert, damit sie nicht ständig in der URL als Parameter mitgeschleift werden müssen. Evtl. haut da irgendwas mit den Sessions nicht hin.

Nicht vergessen, den Browser-Cache zu leeren, da ich noch ein paar kleine Änderungen am Javascript vorgenommen habe.
nicmare
Power Poster
Power Poster
Posts: 1150
Joined: Sat Aug 25, 2007 9:55 am

Re: Neues Modul: GBFilePicker

Post by nicmare »

NaN, hast du es denn mal auf einer normalen Seite (bearbeiten) probiert? CMSMS 1.8.2
Der Beispielfilepicker geht ja wunderbar!
NaN

Re: Neues Modul: GBFilePicker

Post by NaN »

nicmare wrote:
NaN, hast du es denn mal auf einer normalen Seite (bearbeiten) probiert? CMSMS 1.8.2
Yepp, gerade auf WIndows 7 mit IE 8 und frischer Installation CMSms 1.8.2 und PHP 5.3 getestet.
nicmare
Power Poster
Power Poster
Posts: 1150
Joined: Sat Aug 25, 2007 9:55 am

Re: Neues Modul: GBFilePicker

Post by nicmare »

also dann scheint der filepicker nicht ganz cross browser compatibel zu sein.
ich habs immer mit firefox probiert.
jetzt hab ich mal safari getestet und da wirds auch abgedunkelt aber dann wird die selbe seite wie ein iframe geladen.

aber auch hier funzt das beispiel unter erweiterungen->filepicker.
NaN

Re: Neues Modul: GBFilePicker

Post by NaN »

Ehrlich gesagt macht mich das gerade etwas sehr ratlos.
Denn bei mir funktioniert es auch im FireFox 3.6.8 (Mac) und 3.6.9 (Windows).
Allerdings nutze ich die SVN Versionen der Module.

Probier mal diese Version des FilePickers.

PS: Übrigens danke fürs Testen :)
Last edited by NaN on Thu Sep 09, 2010 9:55 am, edited 1 time in total.
nicmare
Power Poster
Power Poster
Posts: 1150
Joined: Sat Aug 25, 2007 9:55 am

Re: Neues Modul: GBFilePicker

Post by nicmare »

selbe problem. :(
Locked

Return to “Module und Tags”