Seite 1 von 1

Mit einem Klick in die Dateiverwaltung

Verfasst: Fr 14. Aug 2009, 12:43
von rethus
So, ich habe es geschafft.

In die Seite, in der der Dateimanager aufgerufen werden soll oben folgendes Script einfügen:

Code: Alles auswählen

 
    <script type="text/javascript">
    	var fb_fieldname;
		var fb_handle;
		var fb_intervalhandle;
		var fb_win;
		// set in php-file:
			// $tpl->set('s','FILEBROWSER_PATH',$cfg['path']['contenido_fullhtml']."frameset.php?area=upl&".$sess->name."=".$sess->id."");
		var fileLoca = "{FILEBROWSER_PATH}";
			// Übergeben wird: $cfgClient[$client]["htmlpath"]["frontend"];
		var frontend_path = '{FRONTEND_PATH}';
		
		/* Pfad relativ machen */
		function cutFullpath(html) {
			html = html.replace(frontend_path, '');
			return html;
		}
		

		function myCustomFileBrowser(field_name, url, type, win) {
			switch (type)
			{
				case "image":
					fb_handle = window.open(fileLoca+"&appendparameters=imagebrowser", "imagebrowser", "dialog=yes,resizable=yes");
					fb_fieldname = field_name;
					fb_win = win;
					fb_intervalhandle = window.setInterval("updateImageFilebrowser()", 250);
					break;
				case "file":
					fb_handle = window.open(fileLoca+"&appendparameters=filebrowser", "filebrowser", "dialog=yes,resizable=yes");
					fb_fieldname = field_name;
					fb_win = win;
					fb_intervalhandle = window.setInterval("updateImageFilebrowser()", 250);
					break;
				default:
					alert(type);
					break;
			}
		}
    	function updateImageFilebrowser ()
		{
			if (!fb_handle.left)
			{
				return;
			}

			if (!fb_handle.left.left_top)
			{
				return;
			}

			if (!fb_handle.left.left_top.document.getElementById("selectedfile"))
			{
				return;
			}

			if (fb_handle.left.left_top.document.getElementById("selectedfile").value != "")
			{
				// short-Path
				html =  "./"+fb_handle.left.left_top.document.getElementById("selectedfile").value;
				returnPath = cutFullpath(html);
				//fb_win.document.forms[0].elements[fb_fieldname].value = fb_handle.left.left_top.document.getElementById("selectedfile").value;
				fb_win.document.forms[0].elements[fb_fieldname].value = returnPath;
				fb_handle.close();
				window.clearInterval(fb_intervalhandle);
			}
		}
</script>

Oben findest du die Variable "fileLoca", die entsprechend deinem System angepasst werden muss:

Code: Alles auswählen

var fileLoca = "http://deineWebadresse/contenido/contenido/frameset.php?area=upl&contenido=<aktuelle_Session>&appendparameters=filebrowser";
Wichtig ist hier, dass der parameter contenido= mit dem aktuellen Sessionwert übergeben wird, sonst landest du anstatt im Dateibrowser auf der Loginseite.

In dem Template selbst kann du dann noch den Button integrieren, welcher dei Dateiverwaltung öffnet:

Code: Alles auswählen

<a onmousedown="return false;" href="#" onclick=" myCustomFileBrowser('link_1', '', 'image', self)" id="hrefbrowser_link">Dateiverwaltung</a>
Die Parameter von myCustomFileBrowser sind:
'link_1' = name des Inputfeldes, das den Rückgabewert aus der Dateiverwaltung erhalten soll
'image' = wählt, mit welchen Parametern die Dateiverwaltung aufgerufen wird (ggf. in der switch-Anweisung anpassen - image ist der image-browser, file ist der Filebrowser)
self = ist eine referenz auf das Fenster aus dem die Dateiverwaltung aufgerufen wurde (darf nicht geändert werden)
So, dass wars. Ich hoffe das Mühevolle raussuchen und dokumentieren nützt dem ein oder anderen.

TIPP:
Um die feste Verlinkung rauszunehemen kann auch folgendes gemacht werden:

Code: Alles auswählen

		// set in php-file:
			// $tpl->set('s','FILEBROWSER_PATH',$cfg['path']['contenido_fullhtml']."frameset.php?area=upl&".$sess->name."=".$sess->id."");
		var fileLoca = "{FILEBROWSER_PATH}";
### 18.09.2009 ###
Hab das Script nochmal verbessert. Nun wird nicht der ganze http://-Pfad übernommen, sondern lediglich nach die relative Verzeichnisstruktur

Re: Mit einem Klick in die Dateiverwaltung

Verfasst: Mo 8. Okt 2012, 10:52
von CharlyBrown
Hallo Rethus,

ich habe versucht, Dein Skript in die aktuelle 4.8.16 zu übernehmen (lokal XAMPP). Habe temporär AMR abgestellt.

Hab Dein Skript in den Input-Bereich des Moduls gelegt und den Aufruf über den Button ebenso. Der Aufruf erfolgt so:

Code: Alles auswählen

<a onmousedown="return false;" href="#" onclick=" myCustomFileBrowser('<?php echo "CMS_VAR[0]"; ?>', '', 'file', self)" id="hrefbrowser_link" style="font-weight: bold">» Dateiverwaltung</a>
Der Link der dann generiert wird sieht folgendermaßen aus:

Code: Alles auswählen

http://meinedomain/meinunterverzeichnis/contenido/main.php?area=con_tplcfg&action=tplcfg_edit&idart=99&idcat=51&frame=4&contenido=e8bb9dec2aa0a8d700d8d788f08fced4#
Wenn ich das aufrufe bekomme ich Fehler 404 - Objekt nicht gefunden (das Fenster wird aufgepoppt).

Was habe ich falsch gemacht?

Frank

Re: Mit einem Klick in die Dateiverwaltung

Verfasst: Mi 10. Okt 2012, 05:29
von Oldperl
Hallo Frank,
CharlyBrown hat geschrieben:Wenn ich das aufrufe bekomme ich Fehler 404 - Objekt nicht gefunden (das Fenster wird aufgepoppt).

Was habe ich falsch gemacht?
Ich vermute mal du hast das im Frontend versucht einzubauen, da du AMR deaktiviert hast. Der von Rethus hier beschrieben Einbau ist aber wohl eher für eine Backendanwendung (Plugin), bzw. im Artikel-Editor im Backend, gedacht. Das wird so nicht für das Frontend funktionieren.
Auch wird auch bei ausgeschaltetem AMR in der .htaccess ein Rewrite von URL und eine Filterung bestimmter Dateien/Ordner vorgenommen, so das ein Aufruf evtl. geblockt werden könnte. Hab ich aber im FE noch nie probiert, daher kann ich das auch nicht zu 100% sagen.

Gruß aus Franken

Ortwin

Re: Mit einem Klick in die Dateiverwaltung

Verfasst: Mi 10. Okt 2012, 08:00
von CharlyBrown
Hallo Ortwin,

nein, ich habe das schon ins Backend eingebaut, genauer gesagt in den Inputbereichs eines Moduls. Der Rückgabewert der von Rethus beschriebenen Funktion soll in ein Inputfeld eingetragen werden.

Das AMR abzuschalten hätte ich mir freilich sparen können, da der Contendio-Ordner ja vom rewrite ausgeschlossen wird. Ebenso den Hinweis darauf.

Wenn das klappen würde wäre das echt super, da ich diese Form der Auswahl persönlich schöner finde als die von Contendio bereitgestellten Funktionen. Vielleicht was für ConLite :wink:

Frank

Re: Mit einem Klick in die Dateiverwaltung

Verfasst: Do 11. Okt 2012, 09:42
von Oldperl
Hallo Frank,
CharlyBrown hat geschrieben:Vielleicht was für ConLite :wink:
Ich schau mir das mal an und versuch mal ein TuT für die ConLite zu schreiben mit dem man das dann in der Version 2.0 umsetzen kann.

Gruß aus Franken

Ortwin