Mit einem Klick in die Dateiverwaltung

Gesperrt
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Mit einem Klick in die Dateiverwaltung

Beitrag 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
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
CharlyBrown
Beiträge: 77
Registriert: Sa 13. Feb 2010, 16:07
Kontaktdaten:

Re: Mit einem Klick in die Dateiverwaltung

Beitrag 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
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Mit einem Klick in die Dateiverwaltung

Beitrag 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
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
CharlyBrown
Beiträge: 77
Registriert: Sa 13. Feb 2010, 16:07
Kontaktdaten:

Re: Mit einem Klick in die Dateiverwaltung

Beitrag 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
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Mit einem Klick in die Dateiverwaltung

Beitrag 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
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Gesperrt