[addon multiplefileupload] MultipleFileUpload – form control

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

To je opravdu zváštní… Ještě se mi to nestalo. Takže bych to tipoval na Nette 2.0-dev nebo bych zkusil přehodit pořadí

MultipleFileUpload::setQueuesModel(new MFUQueuesDibi());
MultipleFileUpload::getUIRegistrator()
    ->clear()
    ->register('MFUUISwfupload');
MultipleFileUpload::register();

Ale možná to nehraje roli, moc si nepamatuji, jestli to může mít nějaký vliv. Spíše asi ne, ale je to první co mě napadlo.

xpitris
Člen | 9
+
0
-

Tak uz jsem na to prisel. Spatne jsem inicializoval model v presenteru.
Nyni to mam v presenteru takto a funguje to:

public function getFileModel($queueId) {
    if (!isset($this->mfuQueue)) {
        $mfuQueues = \MultipleFileUpload::getQueuesModel();
    }
    return $mfuQueues->createQueueObj($queueId);
}

Mozna by nebylo od veci to nekde napsat, protoze na strance doplnku tohle chybi a mne chvili trvalo nez jsem dosel na to jak je ten cely model postaveny.

Chapu to dobre ze sloupecek queueId v tabulce files funguje jako cizi klic do moji zvolene tabulky?

Objevil se mi jeste jeden problem. Z tabulky files mi mizi uz ulozene soubory a nemuzu nejak prijit na to jak obrazek z tabulky zase vybrat. Nemohl by tady nekdo napsat kousek kodu, ktery to zajistuje?

Honza Kuchař
Člen | 1662
+
0
-

Vůbec netuším, cos s tím provedl. Do Presenteru MFU vůbec nezasahuje. Tedy do presenteru nic nepřidávej a už vůbec nechápu proč šaháš přímo do modelu MFU. Ten by tě za normálních okolností vůbec neměl zajímat, protože se MFU chová jako standardní formulářový prvek. Tedy stačí na něm zavolat ->getValue(). Všechno ostatní se řeší automaticky.

Honza Kuchař
Člen | 1662
+
0
-

Z tabulky files mi mizi uz ulozene soubory a nemuzu nejak prijit na to jak obrazek z tabulky zase vybrat. Nemohl by tady nekdo napsat kousek kodu, ktery to zajistuje?

To je v pořádku. To je automatický cleanup. Do té tabulky nemáš vůbec co šahat, pokud nevyvíjíš MFU. Pokud vyvíjíš aplikaci, ten model tě opravdu nezajímá.

→ tedy to co je v dokumentaci je kompletní.

Lopo
Člen | 277
+
0
-

dnes som nasiel a uspesne zakomponoval http://valums.com/ajax-upload/ … celkom zaujimavo rieseny upload zvladajuci aj MFU, takze odporucam minimalne skusit ocumnut

ja osobne sa asi pokusim urobit z toho BailIff/Nette control

Honza Kuchař
Člen | 1662
+
0
-

ja osobne sa asi pokusim urobit z toho BailIff/Nette control

Nechceš udělat ovladat pro MFU? Vypadá ten uploader vskutku dobře. :) A potom do toho BailIff zakomponovat celé MFU? Bude to jistě mnohem univerzálnější. ;)

Lopo
Člen | 277
+
0
-

Honza Kuchař napsal(a):

mno … ak aj nahodu to budem niekedy robit, tak urcite to nebude tak skoro … dovolim si tvrdit ze tento rok nehrozi …

vo worku mam stale roboty vyse hlavy a v BailIff-e som teprv na zaciatku takze nez sa dostanem ku tvorbe takychto control-ov tak este chvilu potrva

ale ako sa hovori – nikdy nehovor nikdy :)

Honza Kuchař
Člen | 1662
+
0
-

Hlavně, že optimismus nechybí – nikdy není pozdě. :) (zde si to nikdy dovolím :))

Vyki
Člen | 388
+
0
-

Já ten driver pro Valums ajax uploader udělám. Už jsem na to dneska koukal a něco málo vytvořil, ale musím to ještě dodělat.

Editoval Vyki (4. 11. 2010 14:11)

B4nan
Člen | 13
+
0
-

Dá se nějak jednoduše upravovat nastavení uploadify zvlášť pro každý formulář? Používám to na upload fotek do galerie, kde jsem si nastavil omezení jen na obrázky už v uploadify, a teď bych to rád použil ve stejném projektu znovu, ale pro upload všech typů souboru.

Honza Kuchař
Člen | 1662
+
0
-

Asi si budeš MFU lehce upravit. Možná to tam časem přidám.

gula23
Člen | 5
+
0
-

Snažím se rozchodit MFU v nette 2.0 a zasekl jsem se na chybě:

InvalidStateException

Callback 'EnvFormContainer_addMultipleFileUpload' is not callable.

Nemáte s tím někdo zkušenost? Díky

westrem
Člen | 398
+
0
-

Ahoj,
ide tento doplnok stiahnut aj odniekial inakade ako zo SVN? Pri pokuse o stiahnutie z odkazu na repo, ktory je v dokumentacii a po zadani username guest mi hadze TortoiseSVN chybu:

Server sent unexpected return value (403 Forbidden) in response to MKACTIVITY

Viete niekto pomoct? Dakujem.

Panda
Člen | 569
+
0
-

Mě stáhnout jde: mfu-10–12–06.zip.

Honza Kuchař
Člen | 1662
+
0
-

Díky Pando. ;)

westrem
Člen | 398
+
0
-

Vrela vdaka ;) .. neviem, TortoiseSVN proste zapipalo a neslo to dalej ..

o.x.i
Člen | 7
+
0
-

Mám stejný problém jako gula23:

InvalidStateException

Callback 'EnvFormContainer_addMultipleFileUpload' is not callable.

jde někomu MFU v Nette 2.0 pls?

Honza Kuchař
Člen | 1662
+
0
-

Bohužel nemám čas to teď ladit ani vyzkoušet. Samozřejmě jakýkoli patch vítám.

Thomas
Člen | 22
+
0
-

Ahoj, chtěl bych se zeptat kde a jak je řešený problém s odhlašováním v IE8, neboť se mi stále odhlašuje (neodhlásí se pouze při použití klasických inputů). Nevím co jsem mohl udělat špatně. Revizi MFU mám 74, PHP 5.2.6, Nette 2.0 dev.

Až na tuhle drobnou chybičku ale funguje skvěle, díky!

B4nan
Člen | 13
+
0
-

Thomas napsal(a):

Ahoj, chtěl bych se zeptat kde a jak je řešený problém s odhlašováním v IE8, neboť se mi stále odhlašuje (neodhlásí se pouze při použití klasických inputů). Nevím co jsem mohl udělat špatně. Revizi MFU mám 74, PHP 5.2.6, Nette 2.0 dev.

Až na tuhle drobnou chybičku ale funguje skvěle, díky!

Tím odhlašováním myslíš co? :)

o.x.i napsal(a):

Mám stejný problém jako gula23:

InvalidStateException

Callback 'EnvFormContainer_addMultipleFileUpload' is not callable.

jde někomu MFU v Nette 2.0 pls?

Mě teda MFU v posledním dvojkovým nette běží bez problémů, ale s touhle chybou jsem se zatím nesetkal. Podle názvu funkce to vypadá jako by to byla chyba při registraci, což já teda mám přes MultipleFileUpload::register();. Co si pamatuju tak jediný problém v nette 2 bylo přejmenování tříd s šablonami (Template => FileTemplate myslím).

Thomas
Člen | 22
+
0
-

Odhlašováním myslím to, že v IE8 (jiné IE jsem nezkoušel) výběr souborů proběhne v pohodě, všechno vypadá, že se to uploaduje, ale po ukončení uploadu se mi administrace automaticky odhlásí (asi přijde o sessions) a soubory stále nejsou na serveru. Po opětovném přihlášení do administrace se soubory přesunou a je to ok.

V Opeře, FF ani v Chrome mi to nedělá.

B4nan
Člen | 13
+
0
-

Tak tenhle problém já nemám (a MFU využívám ve vlastním CMS taky schované za administrací). Bohužel, neporadím.

Thomas
Člen | 22
+
0
-

No zatím to řeším voláním fallbacku, když zjistím, že uživatel používá IE, takže se mu tam zobrazí jen obyčejné formuláře, ale stav to není úplně ideální …

Ale díky za snahu.

Thomas
Člen | 22
+
0
-

A ještě mě napadla jedna věc – je nějak možné po výběru souborů automaticky formulář odeslat? Bylo by to více user-friendly. Díky

B4nan
Člen | 13
+
0
-

Thomas napsal(a):

A ještě mě napadla jedna věc – je nějak možné po výběru souborů automaticky formulář odeslat? Bylo by to více user-friendly. Díky

To si můžeš dodělat sám, http://www.uploadify.com/documentation/ odeslání navěsíš na event onComplete.

Thomas
Člen | 22
+
0
-

B4nan napsal(a):

To si můžeš dodělat sám, http://www.uploadify.com/documentation/ odeslání navěsíš na event onComplete.

Díky, už se mi to podařilo. Jen doplním, že se nejedná o event onComplete (ten reaguje až po ukončení uploadů), ale o událost onSelectOnce(ta vyskočí hned po výběru souborů).

Honza Kuchař
Člen | 1662
+
0
-

Nevím jak máš udělaný bootstrap, že se ti to odhlašuje. Ale musí to být tak, že se ještě před MFU inicializuje session, což je špatně. To se nesmí stát! (proto se registruje v bootstrapu) Tedy zkus poslat bootstrap.

Thomas
Člen | 22
+
0
-

Můj bootstrap vypadá asi následovně:

require LIBS_DIR . '/Nette/loader.php';

Debug::enable(Debug::DEVELOPMENT);

Environment::loadConfig();

$application = Environment::getApplication();

dibi::connect(Environment::getConfig('database'));


$router = $application->getRouter();

if (function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules())) {

	$router[] = new Route('admin/<presenter>/<action>/<id>', array(
		'module'    => 'Admin',
		'presenter' => 'Default',
		'action' => 'default',
		'id' => NULL,
	));


} else {
	$router[] = new SimpleRouter('Site:Default:default');
}

MultipleFileUpload::register();

MultipleFileUpload::getUIRegistrator()
	->clear()
	->register("MFUUIHTML4SingleUpload")
	->register("MFUUIUploadify");

MultipleFileUpload::setQueuesModel(new MFUQueuesDibi());

$application->run();
Honza Kuchař
Člen | 1662
+
0
-

Hmm, tak to vypadá v pořádku. Tedy zkusil bych krokovat pomocí debugeru. Tímto mi došly nápady.

Thomas
Člen | 22
+
0
-

Honza Kuchař napsal(a):

Hmm, tak to vypadá v pořádku. Tedy zkusil bych krokovat pomocí debugeru. Tímto mi došly nápady.

Obávám se, že na to jsem zatím krátký … :(

Honza Kuchař
Člen | 1662
+
0
-

Zkusím se na to podívat. Ale asi budu potřeboval nějakou mini-aplikaci, tedy aplikaci, ořezanou na minimum, ve které se projevuje chyba. Myslíš, že je to možné?

Thomas
Člen | 22
+
0
-

Honza Kuchař napsal(a):

Zkusím se na to podívat. Ale asi budu potřeboval nějakou mini-aplikaci, tedy aplikaci, ořezanou na minimum, ve které se projevuje chyba. Myslíš, že je to možné?

Ano, ale určitě ne během následujícího týdne, nestíhám a toto není úplně priorita. Pokud ti to nebude vadit, aplikaci připravím a pošlu ti přístup a informace na mail.

Honza Kuchař
Člen | 1662
+
0
-

Samozřejmě, že mi to nevadí. Také neříkám, že se na to podívám úplně hned. Ale pokud to bude připravené, tak si na to chvilku určitě najdu. ;)

Hanz
Člen | 16
+
0
-

Teď jsem řešil problém při nasazení společně s AJAX-ovými formuláři. Pokud se dá celý formulář do snippetu, vyberete a nahrajete soubory MFU a pak znovu načtete ten snippet přes AJAX (přes jiné tlačítko, než uložení), tak dojde k tomu, že se ty soubory smažou z databáze a po odeslání formuláře se tedy nenahrají. Myslím, že by bylo lepší chování, kdyby se nahrály.
Udělal jsme si tedy malou úpravu v „MultipleFileUpload.php“. Přidal jsem:

<?php
private $submitterControl;

public function setSubmitWith(ISubmitterControl $submitterControl){
	$this->submitterControl = $submitterControl;
}
?>

A upravil původní metodu „__destruct“ takto:

<?php
public function __destruct() {
	if ($this->getForm()->isSubmitted()) {
		if($this->submitterControl == NULL || $this->submitterControl == $this->getForm()->isSubmitted()){
			$this->getQueue()->delete();
		}
	}
}
?>

Teď se soubory smažou pouze pokud se formulář odešle přednastaveným tlačítkem.

Snad se to bude někomu hodit…

Honza Kuchař
Člen | 1662
+
0
-

To není špatný nápad. Jste pro takovéto chování?

wizzard
Člen | 5
+
0
-

Dobrý den, mám tehnle doplněk imlementován v projektu a vše funguje vpořádku. Poté jsem projekt překopíroval projekt na jiný hosting a MFU soubor uploaduje ale nevrátí ho ve formuláři = pole je prázdné. Nebyl by někdo tak laskavý a poradil co s tím. Děkuji

EDIT: Ještě jsem zjistil, že po uploadu se mi v IE uživatel odhlásí.

Editoval wizzard (20. 2. 2011 23:45)

Honza Kuchař
Člen | 1662
+
0
-

Zdá se, že bude potřeba více informací, ale zatím nevím jakých. Máš možnost debugovat?

wizzard
Člen | 5
+
0
-

Debugovat můžu. Dělal sem dump proměnných, ale pole prázdné…

Honza Kuchař
Člen | 1662
+
0
-

Tak potom budete muset jít více do hloubky, projít si ten doplněk a pochopit jak funguje. Postupovat bych asi takto:

  1. logoval bych všechny vstupy
  2. zjistil bych co dělá nebo nedělá model
  3. změnil bych hosting

Myslím, že více asi poradit nemohu se současnou znalostí tvého problému. Může to být totiž opravdu cokoliv.

Honza Kuchař
Člen | 1662
+
0
-

Hurá volejme sláva! Plupload implementován.
http://multiplefileupload.projekty.mujserver.net/

Zatím však bez flashe! K tomu potřebuji vaši pomoc, protože já už opravdu nevím. Po přepnutí na runtime flash, se prostě nic nezobrazí. Netušíte někdo, čím by to mohlo být? Ten flash se však normálně načte a ale nezinicializuje se. :-(

Matúš Matula
Člen | 257
+
0
-

rad by som to pozrel, ale nejak sa nemozem prebojovat na tvoj local ;)

Honza Kuchař
Člen | 1662
+
0
-

Jéé, měl jsem raději jít spát. :-)

Nicméně výborné zprávy! Podařilo se mi opravit bug v pluploadu, který zabraňoval použití flashe, pokud se plupload nacházel v tabulce. Tedy teď už je plupload v kompletní náloži a připraven k použití. :-)

http://multiplefileupload.projekty.mujserver.net/
(ta samá stránka jako je v dokumentaci)

bojovyletoun
Člen | 667
+
0
-

Skvělá práce, myslím že plupload je jeden z nejpropracovanějších nástrojů. Trochu mě odrazuje ta desítka skriptů.
PS: umí se to chovat jako snippet? Jako že si načtu stránku, vyberu soubory, ty se na pozadí odešlou(přes iframe…) a pak se invaliduje nějaký snippet na stránce a v něm se zobrazí třeba názvy souborů s jejich náhledy.

lvq
Člen | 47
+
0
-

Doplnek se me libi, diky za nej. Ale at se snazim jak se snazim, nedari se me ho rozbehnout pod nette 2 s prefixy N pred tridami (php 5.2). Prejmenuju tridy, nahradim Template za FileTemplate a porad to nechce jet, pritom ukazka na localu jede ok. Pokud by se tedy nasel nekdo, kdo ma doplnek upraven na stejnou konfiguraci a uploudnul ho zde, byl bych mu moc vdecny.

Aurielle
Člen | 1281
+
0
-

Template máš samozřejmě nahradit za NFileTemplate.

lvq
Člen | 47
+
0
-

@gmvasek: jj to tak samozrejme mam…

LuKa
Člen | 3
+
0
-

Zdravim, hraji si s novym MFU, vsechno mi funguje, ale jeste resim hlaseni chyb, kdyz uzivatel nahraje soubory pres HTML4Single. V MultipleFileUpload->handleUploads tu chyby jeste mam, ale jak se prekresli formular tak se ta promena vymaze. Neslo by nejak dat do error formulare a jak? Diky moc za radu, vitam vsechny rady. Diky.

Flipajs
Člen | 29
+
0
-

Zdravím!

Chci se přidat do řady „děkovačů“, opravdu povedený doplněk! Stáhl jsem nejnovější revizi (91) a u Plupload Interface dochází při uploadu vždy k 500 Internal Server Error. Ostatní módy fungují tak jak mají.

Setkal jste se s tím také někdo a víte případně kde je zakopaný pes?

Díky! S pozdravem Flip

Honza Kuchař
Člen | 1662
+
0
-

Ajaj, to tedy nevím a Nette\Debug nic nezapsal do logu? (pokud ne zapni si produkční režimu v bootstrapu).

Už mám teď MFU s pluploadem nasazený v testovacím provozu a žádné chyby na serverové straně se mi neobjevily.

Ještě mě napadá jedna. Pokud jsi pováděl update z předchozí verze MFU smaž SQLLite databázi v /controls/mfu/models/sqlite/database.sdb.

Honza Kuchař
Člen | 1662
+
0
-

@LuKa: Asi nevím přesně co myslíš. Zkus to více popsat.