Samostatná aplikace uvnitř aplikace postavené na Nette
- Budry
- Člen | 88
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
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
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
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
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
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
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.
- Filip Procházka
- Moderator | 4668
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
@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