Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 11. Oktober 2011 11:47

Andiministrator
Kabeljungwerker
Ort: Plauen / Vogtland
Registriert: 09. November 2010
Beiträge: 264
Webseite

[GELÖST] GBFilePicker bringt Smarty Fehler im browse-Modus

Ich habe bei mir ein Problem, wenn ich GBFilePicker (1.3.1) im Browse-Modus einsetze:

{content_module block='header1image' page_tab='Header-Fotos' module='GBFilePicker' assign='header1image' label='Foto' dir='images/Header' mode='browser' media_type='image' lang=$page_lang block_tab='Bild 1' block_group='Bild' show_subdirs='true' upload='true' delete='true' create_dirs='true' allow_scaling='false' create_thumbs='false' show_thumbfiles='false'}

Ich bekomme folgende Fehlermeldung:
Smarty error: unable to read resource: "module_file_tpl:GBFilePicker;themesDefault (AJAX)fileBrowser.tpl"' (length=105)

Ich habe schon Browser-Cache+Cookies, CMS-Cache, etc gelöscht, Modul deinstalliert und wieder neu installiert ... alles ohne Erfolg.

Hat das schon jemand von Euch gehabt oder einen ähnlichen Fehler in einem anderen Modul? Ich brauche nur einen Hinweis, wo ich anfangen könnte zu suchen.


Arbeitet bei conversearch GmbH: http://conversearch.de (Webseiten-Analyse und -Monitoring)
Bloggt bei Andiministrator.de: http://andiministrator.de

Offline

#2 17. Oktober 2011 05:40

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] GBFilePicker bringt Smarty Fehler im browse-Modus

Nur mal so 'ne Vermutung

http://forum.cmsmadesimple.org/viewtopi … =25&t=9205

(block_tab enthält ein Leerzeichen)

Offline

#3 17. Oktober 2011 08:52

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] GBFilePicker bringt Smarty Fehler im browse-Modus

Ich kann das leider nicht nachvollziehen. An Deinem Code liegt es jedenfalls nicht. Hab's grad 1:1 bei CMSms 1.9 und CMSms 1.10 ausprobiert. Bei mir funktioniert es. Irgendwie werden bei Dir irgendwo beim Verarbeiten des Templates die Schrägstriche aus dem Pfad zum Template entfernt.

Welches Betriebssystem bzw. welche PHP Version verwendest Du?

Die Templategeschichte wird in der nächsten Version sowieso anders laufen.
Dann sollte sowas nicht mehr passieren (wie auch immer es dazu kommen mag).


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

#4 17. Oktober 2011 09:01

Andiministrator
Kabeljungwerker
Ort: Plauen / Vogtland
Registriert: 09. November 2010
Beiträge: 264
Webseite

Re: [GELÖST] GBFilePicker bringt Smarty Fehler im browse-Modus

Ich hatte am Freitag noch etwas experimentiert.

Der Fehler tritt auf meinem Entwicklungssystem auf:

  • Windows XP mit Mowes

  • Apache 2.2.11

  • PHP 5.2.10

Dann habe ich testweise das ganze mal auf einen Live-Server (Linux, PHP 5.2) übertragen - dort funktioniert es ohne Probleme.

Vielleicht hat es etwas mit den Backslashes als Verzeichnis-Trenner bei Windows zu tun?


Arbeitet bei conversearch GmbH: http://conversearch.de (Webseiten-Analyse und -Monitoring)
Bloggt bei Andiministrator.de: http://andiministrator.de

Offline

#5 17. Oktober 2011 10:41

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] GBFilePicker bringt Smarty Fehler im browse-Modus

Hm, wäre möglich. Ich verwende ja DIRECTORY_SEPARATOR als Trennzeichen. D.h. da sollte dann bei Windows der Backslash verwendet werden. Und vermutlich ist genau das das Problem. Ich weiß jetzt nicht genau wie Smarty den Pfad zum Template verarbeitet, aber ich schätze mal, der Backslash wird als "Escape-Zeichen" angesehen. So wie in solchen Zeichenketten:

$x = '\'Hallo\''; # -> Ausgabe: 'Hallo'

Bei einem Pfad würde das dann so aussehen:

$x = 'themes\Default (AJAX)\fileBrowser.tpl'; # -> Ausgabe: themesDefault (AJAX)fileBrowser.tpl

Klingt für mich plausibel. Hab das Modul aber noch nicht auf Windows Rechnern testen können.
Du kannst ja mal in der Datei GBFilePicker.module.php in der Funktion GetInputParams() in den Zeilen 848-851 DIRECTORY_SEPARATOR in einen Schrägstrich ändern oder davor noch einen Backslash setzen:

# entweder so:
$params['input_template'] = 'themes/' . $this->GetPreference('default_admin_theme', 'Default (AJAX)') . '/input.tpl';

#oder so:
$params['input_template'] = 'themes\'  .DIRECTORY_SEPARATOR . $this->GetPreference('default_admin_theme', 'Default (AJAX)') . '\' . DIRECTORY_SEPARATOR . 'input.tpl';

Wie gesagt, in der nächsten Version wird das über eine gängigere Template-Verwaltung laufen.
Da gibt es dann diesen Pfad Salat nicht mehr.


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

#6 17. Oktober 2011 11:14

Andiministrator
Kabeljungwerker
Ort: Plauen / Vogtland
Registriert: 09. November 2010
Beiträge: 264
Webseite

Re: [GELÖST] GBFilePicker bringt Smarty Fehler im browse-Modus

Jo, da liegt der Fehler.
Ich habe in der Datei GBFilePicker.module.php mit Suchen&Ersetzen alle Vorkommen von DIRECTORY_SEPARATOR durch '/' ersetzt (27 Vorkommen). Danach ging es.

Trotzdem komisch - DIRECTORY_SEPARATOR sollte doch auch unter Windows korrekt funktionieren.


Arbeitet bei conversearch GmbH: http://conversearch.de (Webseiten-Analyse und -Monitoring)
Bloggt bei Andiministrator.de: http://andiministrator.de

Offline

#7 17. Oktober 2011 11:27

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] GBFilePicker bringt Smarty Fehler im browse-Modus

Ja, tut es ja auch. Das Problem ist nur, dass der Pfad zum Template zunächst nicht als Pfad einer Include o.ä Funtion übergeben wird, sondern als Wert einer Variable - genauer: als String - vorliegt. Und innerhalb eines Strings gelten andere Regeln was Backslashes angeht. Die werden von PHP erstmal nicht als einfaches Text-Zeichen, sondern eben als "Escape-Zeichen" interpretiert. Wenn man einen Backslash einer Variablen zuweisen will muss man das so machen:

weil sonst das abschließende ' maskiert werden und zu einem Syntaxfehler führen würde, da alles was danach kommt, noch als Wert für die Variable interpretiert wird. Somit liegt der Fehler nicht bei Windows sondern bei mir. Das OS bekommt von PHP bereits einen falschen Pfad geliefert. Ich hab eben nicht daran gedacht, den DIRECTORY_SEPARATOR nochmal zu "escapen" damit er in der Variable nicht als "Escape-Zeichen" interpretiert wird.


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