Samostatná aplikace uvnitř aplikace postavené na Nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Budry
Člen | 88
+
0
-

Zdravím,
už v několika projektech postavených na Nette jsem narazil na potřebu jakéhosi „File Managera“, tak jsem se rozhodl konečně napsat finální řešení, ale narazil jsem na problém.

Celý manager je samostatná aplikace (neběží na Nette, pouze využívá některé třídy Nette).
Není možné file managera psát jako aplikaci na Nette protože používám také jako plugin do tinymce

Narazil jsem ovšem na problém s přístupem k tomuto „balíčku“. Když pro instalaci použiji composer tak společně s Nette kopíruje file managera do /libs a odkud ho nemohu načítat. (Není možné zobrazit …/libs/File-manager/index.php?editor=tinymce).

Jako možné řešení je umístění do /www pak už není problém s přístupem k editoru a všechno funguje jak má ale není možné použít celého file managera jako balíček a instalovat pomocí composeru což je také problém.

Jediné řešení které mě napadlo by bylo postavit celého File managera jako mini Nette apliakci s klasickou MVC strukturou (upravenou) s tím že by ho composer stahoval jako balíček normálně do /libs.
File manager by se pak zobrazoval normálně přes link ../filemanager
Struktura by pak vypadala:

root
	/app
	/libs
		/Nette
		/File-manager
			/presenters
				FilemanagerPresenter.php
			/models
				...
			/template
				manager.latte
	/log
	/...

Ale cpát presentery do /libs mi přijde divný. Tak nevím co stím.
Uměl by někdo poradit jak to celé udělat co nejjednodušeji, ale tak aby to bylo „správně“?

Všechny řešení mi přijdou špatná, ale nevím jak to udělat jinak.

Předem díky

P.S. Použití jako komponenta do Nette není možné

// Snad se to dá nějak pochopit

Editoval Budry (23. 9. 2012 15:30)

Filip Procházka
Moderator | 4668
+
0
-

Trošku ti tu tvou tezi zbořím

Není možné file managera psát jako aplikaci na Nette protože používám také jako plugin do tinymce

Omyl.

P.S. Použití jako komponenta do Nette není možné

Taky omyl.

Editoval HosipLan (24. 9. 2012 8:12)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Podle mě by bylo krásné, kdyby to jako komponenta bylo. Presentery v libs, proč ne? Jsou součástí komponenty, nikdo na ně nebude hrabat… ať se doplněk zaregistruje do router služby a nemusíš ani řešit, odkud bude dostupný. index.php by měl být jen jeden. Pak by to mohl být velice hodnotný addon :).

jtousek
Člen | 951
+
0
-

Nepoužívám TinyMCE ale CKEditor, nicméně integrace filemanageru je pokud vím poměrně podobná. Tj. stačí pomocí krátkého JS nastavit správné URL adresy. Jestli pod tím běží Nette je editoru srdečně jedno.

A ano, určitě by bylo vhodné mít to jako addon. Pokud jde o instalaci pomocí Composeru tak ono by to šlo pokud by se vyřešily CSS, JS a obrázky. Což imho není nemožné. CSS a JS tak jako tak proháním filtrem kvůli minifikaci a výsledek ukládám do složky cache, kam má přístup prohlížeč. Původní soubory mám ve složce app takže k nim prohlížeč vůbec nemůže. Jediné co nemám úplně vyřešené jsou ty obrázky.

Budry
Člen | 88
+
0
-

Kdyby to celé šlo napsat jako komponenta byl bych jenom rád.
Problém byl právě s tou implementací do tinymce (případně CKEditor) kdybych napsal celýho managera jako komponentu nevím jak ho pak dostat pomocí adresy. Komponentu musím vytvářet a pak zobrazovat v šabloně.

Musel by mít manager k dispozici nějaký presenter a šablonu. Nebo se pletu?

Ot@s
Backer | 476
+
0
-

Vazba mezi TinyMCE a filebrowserem je velmi jednoduchá. Stačí Ti jen samostatné URL filebrowseru (tj. komponenty Nette). Vyvýjej to jako samostatnou aplikaci, tak jak jsi zvyklý. Až to budeš chtít navázat na tinymce, stačí implementovat instrukce „How To Return Values“ z výše uvedeného linku.

Budry
Člen | 88
+
0
-

Ot@s: Vím jak implementovat do tinymce. Ale pokud vím tak klasická Nette komponenta (třída dědící od Control) nemá žádnou adresu ne?

Pokud by teda ničemu nevadilo použít presenter v /libs kde by se komponenta vytvořila následně zobrazit v šabloně a samotného file managera umístit někam vedle jako komponentu.

jtousek
Člen | 951
+
0
-

@Budry: Nepsal bych to jako komponentu, ale jako modul.

Budry
Člen | 88
+
0
-

Jojo, díky já měl právě trochu obavy z toho že použít presenter v balíčku v /libs by bylo špatné. Pokud to ničemu nevadí odpadají veškeré problémy :)

Budry
Člen | 88
+
0
-

@jtousek +1

O tom jsem také přemýšlel, ale pořád tu byl problém s tím že si nejsem jistý jestli by bylo ok psát to jako modul a stahovat potom komposerem do /libs

Filip Procházka
Moderator | 4668
+
0
-

Raději bych to psal jako komponentu a pak načítal do stránky ajaxem, popř vykresloval v nějakém presenteru (zase jako komponentu) – na to nepotřebuješ, aby měl Control adresu.

Editoval HosipLan (24. 9. 2012 16:45)

Budry
Člen | 88
+
0
-

@Hosiplan:
na běžné použití ne, ale do těch editorů potřebuju mít samotný manager přístupný přes url. Proto bych musel odkazovat na presenter, který v sobě má komponentu vytvořenou a zobrazenou v šabloně. A stejně tak chci mít vše pohromadě aby stačilo natáhnout composerem bez ručních úprav. Takže k samotnej komponentě bych musel připsat presenter a šablonu.

Nebo
to celé napsat jako modul, umístit do libs, jak psal @jtousek