jQuery-FileUpload, snadný upload souborů

dkoleckar
Člen | 10
+
0
-

Zdravím, přešel jsem z verze 1.2 na 2 a háže mi to error:

User Deprecated
Replace deprecated Nette\Object with trait Nette\SmartObject in C:\xampp\htdocs\tvonfire\vendor\jzechy\jquery-fileupload\src\Template\JavascriptBuilder.php:16

Takto vypadá můj Upload Model:

<?php

namespace App\Model;

use Nette\SmartObject;
use Nette\Utils\FileSystem;
use Zet\FileUpload\Model;

class UploadFilesRepository implements \Zet\FileUpload\Model\IUploadModel {
    use SmartObject;

    /**
     * Zpracování požadavku o smazání souboru.
     * @param $uploaded Hodnota navrácená funkcí save.
     */
    public function remove($uploaded) {


    }

    /**
     * Zpracování přejmenování souboru.
     * @param $upload Hodnota navrácená funkcí save.
     * @param $newName Nové jméno souboru.
     * @return mixed Vlastní návratová hodnota.
     */
    public function rename($upload, $newName) {
        Nette\Utils\FileSystem::rename($upload,"../upload_files/".$newName);
    }

    /**
     * Uložení nahraného souboru.
     * @param \Nette\Http\FileUpload $file
     * @param array $params Pole vlastních hodnot.
     * @return mixed Vlastní navrátová hodnota.
     */
    public function save(\Nette\Http\FileUpload $file, array $params = []) {
        $file->move("../upload_files/".$file->getSanitizedName());
        return $file->getSanitizedName();
    }

}

Nevíte někdo co s tím. Budu rád za každou pomoc

JZechy
Člen | 161
+
0
-

@dkoleckar Udělal jsem release 2.0.1, ten už by měl být kompabitilní s aktuálním Nette a PHP 7.2.

dkoleckar
Člen | 10
+
0
-

Paráda díky moc

dkoleckar
Člen | 10
+
0
-

Ještě dotaz, jaké všechny js (jquery,boostrap) a css includy tento doplněk potřebuje? Uploader se mi normálně zobrazí ale po vybrání souboru se nic neděje… + konzole js mi hlásí Renderer is not defined, ikdyž mám v configu renderer: Zet\FileUpload\Template\Renderer\Bootstrap4Renderer. Což by mu nemělo ani vadit když výchozí bere ten HTML5 renderer…

Díky

Editoval dkoleckar (26. 2. 2018 20:55)

JZechy
Člen | 161
+
0
-

@dkoleckar Aplikoval sis následující metody do šablony?

dkoleckar
Člen | 10
+
0
-

Ano, můj layout.latte: Záleží nějak na pořadí vložených scriptů? V main.js mám akorát $.nette.init();

<!DOCTYPE html>
<html lang="cs">
<head>
  <meta charset="utf-8">
  <meta name="description" content="neco">
  <meta name="author" content="">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <!--CSS -->
  <link href="{$basePath}/bootstrap.min.css" rel="stylesheet">
  <link href="{$basePath}/style.css" rel="stylesheet">
  <link href="{$basePath}/signin.css" rel="stylesheet">
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

  <!--JS -->
  <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
  <script src="{$basePath}/js/jquery.ui.widget.js"></script>
  <script src="{$basePath}/js/nette.ajax.js"></script>
  <script src="{$basePath}/js/main.js"></script>
  <script src="https://nette.github.io/resources/js/netteForms.min.js"></script>
  <script src="https://npmcdn.com/tether@1.2.4/dist/js/tether.min.js"></script>
  <script src="https://npmcdn.com/bootstrap@4.0.0-alpha.5/dist/js/bootstrap.min.js"></script>
  {\Zet\FileUpload\FileUploadControl::getHead($basePath)}
  {\Zet\FileUpload\FileUploadControl::getScripts($basePath)}
  <title>{ifset title}{include title|stripHtml} | {/ifset}Nazev</title>
</head>

<body>
  <div n:foreach="$flashes as $flash" n:class="flash, $flash->type">{$flash->message}</div>

  {include content}

  <div class="container">

	<footer>
    	<p>&copy; Company 2017</p>
  	</footer>

  </div>

</body>
</html>
JZechy
Člen | 161
+
0
-

@dkoleckar Takhle to vypadá v pořádku, nic bránit by tomu nemělo. Nicméně, píšeš, že sis aktualizoval z 1.2 na 2.0, aktualizoval sis i skripty?

dkoleckar
Člen | 10
+
0
-

Které skripty máš na mysli? Komponentu jsem stahnul pomocí composeru takže všechny soubory jsou aktuální. Dokonce jsem z tvého dema stáhnul jquery.ui.widget.js, jquery.min.js takže bych to měl mít stejné. Jenže pořád mi konzole háže ReferenceError: Renderer is not defined. Je to fakt zvláštní, protože předtím (verze 1.2) mi běžela v klidu.

JZechy
Člen | 161
+
0
-

@dkoleckar Prohlídni si znova návod na instalaci skriptů, z WWW složky, co je stažená composerem, si znova musíš vykopírovat všechny soubory do své www složky. I skripty na druhou verzi prošli zásadní předělávkou, proto máš tu chybu.

duskohu
Člen | 778
+
0
-

Ahoj skusam sa pouzit novu verziu a mam problem:
config

fileUpload:
	maxFiles: 200
	fileFilter: Zet\FileUpload\Filter\ImageFilter
	uploadModel: NasExt\Framework\FileUpload\UploadModel

form

/** @var FileUploadControl $upload */
$upload = $form->addFileUpload('files');
$upload->setRenderer(Bootstrap3Renderer::class);

a v sablone:

{input files}

Lenze mi to nadava:

add:433 Uncaught ReferenceError: Renderer is not defined
    at add:433
    at HTMLDocument.ready (functions.js:24)

Robim nieco zle?

Editoval duskohu (18. 6. 2018 17:01)

iguana007
Člen | 970
+
0
-

V sablone nevidim neco jako:

{block header}
    {\Zet\FileUpload\FileUploadControl::getHead($basePath)}
{/block}

{block footer}
    {\Zet\FileUpload\FileUploadControl::getScripts($basePath)}
{/block}
duskohu
Člen | 778
+
0
-

iguana007 napsal(a):

V sablone nevidim neco jako:

{block header}
    {\Zet\FileUpload\FileUploadControl::getHead($basePath)}
{/block}

{block footer}
    {\Zet\FileUpload\FileUploadControl::getScripts($basePath)}
{/block}

Mam to v layoute:

{\Zet\FileUpload\FileUploadControl::getHead($basePath)}
{\Zet\FileUpload\FileUploadControl::getScripts($basePath)}
JZechy
Člen | 161
+
+2
-

Nahrál sis do www aktuální JS skripty? Zjevně ne.

duskohu
Člen | 778
+
0
-

@JZechy bingo, dakujem, na tom uplne zabudol, dakujem

cafesk8
Člen | 103
+
0
-

Zdravím,

ad 1) Vypadá to, že tento plugin nepodporuje live-form-validation.js, tzn. že když procházím formulář pomocí TAB a přejedu přes povinné pole uploadu fotografii tak mi to nevyhodí hlášku, že musím nějaké soubory nahrát. Nemáte někdo zkušenost jak toto vyřešit?

ad 2) Když ve formuláři přes upload nahraju fotografie a potom dám odeslat formulář (přes ajax), tak pokud neprojde validací a je v něm nějaká chyba, tak se mi všechny soubory, které jsem před odesláním nahrál zase smažou a musím je nahrát znovu. Nevíte někdo co s tím?

Díky

cafesk8
Člen | 103
+
0
-

Zdravím,

jaká je podpora setRequired u tohoto prvku? Pokud nedám pole pro upload jako povinné, tak mi vše funguje přesně jak má. V momentě kdy přidám setRequired tak se mi nikdy nezavolá onSuccess, z formuláře se mi nahrané fotografie ztratí a pod controllem se mi vypíše hláška, že musím nahrát alespoň 1 fotografii.

presenter

protected function createComponentNewVozidloForm() {
	$form = new Nette\Application\UI\Form;
	$form->setRenderer(new \AlesWita\FormRenderer\BootstrapV4Renderer);
	$form->getElementPrototype()->class = 'ajax';
	$form->addProtection('Vypršel časový limit, odešlete formulář znovu');

	$form->addFileUpload('Fotografie', 5)
		->setRequired('Musíte vložit alespoň 1 fotografii');

	$form->addText('nv_jmeno', 'Jméno')
		->addRule(Form::MIN_LENGTH, 'Jméno se musí skládat ze 4 až 20 libovolných znaků.', 4)
		->addRule(Form::MAX_LENGTH, 'Jméno se musí skládat ze 4 až 20 libovolných znaků.',20)
		->setAttribute('placeholder', 'Jan Novák')
		->setRequired('Zadejte prosím Vaše jméno.');

	$form->addSubmit('nv_submit', 'Přidat');

	$form->onSubmit[] = [$this,'handleZkontrolujForm'];
	$form->onSuccess[] = [$this,'handleNewWhatever'];

	return $form;
}


public function handleZkontrolujForm(Form $form) {
	if ($this->isAjax()) {
		$this->redrawControl('formSnippet');
	}
}

public function handleNewWhatever(Form $form) {
	$hodnoty = $form->getValues();

	$this->flashMessage('Váš záznam byl úspěšně vložen.','success');
	$form->reset();

	if ($this->isAjax()) {
		$this->redrawControl('formSnippet');
		$this->redrawControl('flashes');
	}
}

latte

{snippet flashes}
	<div n:if="$flashes" class="float-alerts">
    {foreach $flashes as $flash}
        <div class="alert alert-{$flash->type} alert-dismissible" role="alert">
            <button type="button" class="close" data-dismiss="alert" aria-label=Close><span aria-hidden="true">&times;</span></button>
            {$flash->message}
        </div>
    {/foreach}
	</div>
{/snippet}
{snippet formSnippet}
	{control newVozidloForm}
{/snippet}

upload model

namespace App\Model;

use Nette\SmartObject;
use Nette\Utils\FileSystem;
use Zet\FileUpload\Model;

class UploadFilesRepository implements \Zet\FileUpload\Model\IUploadModel {
    use SmartObject;

    /**
     * Zpracování požadavku o smazání souboru.
     * @param $uploaded Hodnota navrácená funkcí save.
     */
    public function remove($uploaded) {


    }

    /**
     * Zpracování přejmenování souboru.
     * @param $upload Hodnota navrácená funkcí save.
     * @param $newName Nové jméno souboru.
     * @return mixed Vlastní návratová hodnota.
     */
    public function rename($upload, $newName) {
        Nette\Utils\FileSystem::rename($upload,"../upload_files/".'ey'.$newName);
    }

    /**
     * Uložení nahraného souboru.
     * @param \Nette\Http\FileUpload $file
     * @param array $params Pole vlastních hodnot.
     * @return mixed Vlastní navrátová hodnota.
     */
    public function save(\Nette\Http\FileUpload $file, array $params = []) {
        $file->move("../upload_files/".$file->getSanitizedName());
        return $file->getSanitizedName();
    }

}

Nutno dodat, že soubory se vždy správně do složky nahrají.

EDIT: Zkoušel jsem vypnout svůj model zakomentováním v config.neon, tudíž to používalo BaseUploadModel a výsledek stejný :(

EDIT2: Zkoušel jsem i vypnout ajax jestli to není tím. Bohužel …

Editoval cafesk8 (26. 6. 2018 11:55)

JZechy
Člen | 161
+
0
-

@cafesk8 Ahoj, setRequired() bohužel využít nelze. Nutnost souboru lze kontrolovat na straně serveru při validaci formuláře, zda vrátí nějaké hodnoty.

d3tr1tus
Člen | 52
+
0
-

Ahoj mám docela zvláštní problém. Při nahrávání fotky se mi občas stane, že nahrávaná fotka je otočená o 180 stupňů. Nestává se to vždy, ale jednou za čas to tak prostě je. Už se mě ptal klient jestli bych to mohl opravit, ale já za boha netuším proč se to děje. Mohl by mi někdo prosím poradit? Koukal jsem na nahranou fotku a opravdu byla nahrána obráceně neotočil to až prohlížeč nebo moje CSS. Mám verzi 2.0. Díky za rady :)

JZechy
Člen | 161
+
0
-

@d3tr1tus To je taková sranda, nevšiml jsem si, že by to dělali jiné telefony než samsung… :D Obrázek má v sobě uložená jistá data o orientaci a občas příjde právě otočený jiným směrem, což je zaznamenáno v těch datech.

Tady máš gist jak s tím pracuji https://gist.github.com/…64f21bac0a11, bude tě tam hlavně zajímat ta část okolo switche. Ten to vždycky napraví do správného otočení.

Editoval JZechy (5. 7. 2018 14:16)

d3tr1tus
Člen | 52
+
0
-

@JZechy podívám se na to. Díky moc za radu :)

rumcais1
Člen | 80
+
0
-

Ahoj nevíte jak při vložení a odstranění file odstranit i z inputu formuláře. Dělá to i na demo. Díky

JZechy
Člen | 161
+
0
-

@rumcais1 Co máš přesně na mysli…? Myslíš to, když zmizí ten řádek s tím souborem z tabulky při smazání? To by default dělá sám uploader. Neupravoval sis nějak výpis souborů?

rumcais1
Člen | 80
+
0
-

Ne vemu třeba tvoje demo. Přidám nějaký jpeg zase ho odeberu a dám odeslat formulář. A vypíše mi to Nahrány byly následující obrázky. I když tam už vlastně nic nemám. Díky

JZechy
Člen | 161
+
0
-

@rumcais1 To není žádná extra logika, když odešleš formulář, tak se přenačte stránka, proto to zmizí.

rumcais1
Člen | 80
+
0
-

@JZechy Ne asi to píšu blbě přidám dvě fotky. Jednu smažu a odešlu formulář. A on mi vypíše, že uložil dvě. M.

JZechy
Člen | 161
+
0
-

@rumcais1 To potom není feature, ale bug… To by dělat neměl :D

cafesk8
Člen | 103
+
0
-

Ahoj,

upload souborů mi na PC funguje bez problému, akorát na mobilu, konkrétně Android 7.0 mám problém. Pokud kliknu na upload button, vyjede mi tabulka „Vyberte činnost“, kde je na výběr Fotoaparát | Videokamera | Záznam zvuku | Dokumenty.

Pokud dám fotoaparát, vyfotím fotku a dám „fajfku“, tak se obrázek v pořádku nahraje. Pokud však chci vybrat nějakou fotografii z mobilu, např. dříve pořízené fotografie uložené v galerii, tak si najedu do složky „Galerie“. Kde je vybrat fotografii nebo video, kliknu si na požadovanou fotku, vpravo nahoře dám „fajfku“ u „Vybrat fotografii nebo video“ a v tuto chvíli se mi nenahraje nic a dole mi vyskočí „Předchozí operaci nelze dokončit z důvodu nedostatku paměti“. Žádný AJAX se nezavolá, žádná laděnka nevyskočí.

Nevíte si s tím někdo rady?

pitr82
Člen | 121
+
+1
-

Ahoj @JZechy, plánuješ podporu pro Nette 3.0 ?

d@rkWolf
Člen | 162
+
0
-

Zdravím, rozhodl sem se vyzkoušet tento plugin jako náhradu za starý MultipleFileUpload, který si s novějším Nette nerozumí, ale potřeboval bych poradit-dá se nějak vypnout ten "insta"upload?

Demo z Githubu nefunguje, takže jsem nějak očekával, že výchozí chování bude stejné, jako demo u Blueimpa. Tedy, že si dám „vybrat soubory“, ty se mi vyskládají do přehledu kde si budu moct případně nějaký zrušit a následně kliknu „nahrát soubory“(po kterém se nahrají obrázky, vypíše mi to message, překreslí okno, whatever).

Aktuálně tam mám button „nahrát soubor“(nejde přejmenovat a potřebuju to anglicky), který soubory nahraje a formulářový submit button „uložit“, kterým to uložím do DB, na což už žádný uživatel neklikne, takže se do DB neuloží nic(potenciál statisíce nahraných souborů, o kterých nikdo neví, dokud nedojde místo, nebo reportů že to nefunguje). Takže budu muset připojit DB rovnou k uploadModelu a pak pro jiné varianty kopírovat UploadModely a měnit db, ehm..budiž. Pak budu moct ten form submit zrušit páč bude k ničemu.

Poradil by někdo, jak to po dokončení uploadu rovnou překreslit nebo nějak vyčistit, aby tam ty nahrané obrázky nebyly? Zkoušel jsem form obalit do Snippetu a překreslit po zpracování formuláře, sice se to překreslí(mám pod uploadem hned výpis všech fotek v dané galerii), ale ta kompomenta je asi nějak zacacheovaná, protože s ní to ani nehne, zůstanou tam trčet ty poslední nahrané fotky. Na mazání fotek po nahrátí už mám tlačítka ve výpisu pod uploaderem, tam už to nemá co dělat.

JZechy
Člen | 161
+
0
-

@darkWolf Mechnika mi tehdy vylezla z toho, co jsme potřebovali na projektu… A postup jsme měli takový, že opravdu při nahrání se obrázek uložil a zapsal do databáze, ovšem označen jako nepotvrzený. Až když uživatel formulář odeslal, tak se potvrdil. Ostatně, evidentně do teď s ní nikdo neměl hlubší problém.

Ale co se týče autoodeslání, je to způsobeno výchozím zápisem pro událost „add“ (na blueimpově scriptu), kdy se rovnou odbouchne odeslání, tudíž když ji smažeš a přepíšeš vlastní, můžeš si to přizpůsobit.


@pitr82 a vlastně i do pléna … Aktuálně bohužel nemám čas ani priority se tomu nějak více věnovat, neb se zaměřuji jinými směry. Komponentu si tak může kdokoli forknout a jet si po svém, nebo ji klidně někomu i globálně předám k údržbě.

d@rkWolf
Člen | 162
+
0
-

@JZechy jo to pak dává asi smysl, akorát je to dle mého zbytečná práce navíc řešit pak věci k odstraňování nepotvrzených apod.

Já hlavně bohužel hledal co nejrychlejší hotovou náhradu za nefunkční MultipleFileUpload od Jana Kuchaře v projektu, kterej potřebuju dost narychlo revidovat, upravit na front-endu a vrátit zpět do běhu (klasické zákaznické „včera bylo pozdě“). Ideálně bez nutnosti přepisovat půl projektu a nebo hůř, přepisovat javascripty s kterýma nejsem extra kamarád. :-)

robert.sipek
Člen | 4
+
+1
-

Ahoj, snažím se tuto skvělou knihovnu přemigrovat pro Nette 3. Narazil jsem v místě, kde konstruktor třídy UploadController volá rodičovský konstruktor:

public function __construct(\Zet\FileUpload\FileUploadControl $uploadControl) {
    parent::__construct();
    ...
}

https://github.com/…ntroller.php#L44

Ten byl totiž v nové verzi Nette odstraněn a jeho volání tedy končí chybou: Cannot call constructor.

Pokud volání neexistujícího rodičovského konstruktoru vypnu, dojde k výjimce: Component of type ‚Zet\FileUpload\Model\UploadController‘ is not attached to ‚Nette\Application\UI\Presenter‘ při provádění kódu $this->template = $controller->template; v konstruktoru třídy JavascriptBuilder:

public function __construct(BaseRenderer $renderer, UploadController $controller) {
		...
		$this->controller = $controller;
		...
		$this->template = $controller->template;
		$this->template->setFile(__DIR__ . "/js.latte");
	}

https://github.com/…tBuilder.php#L63

Předpokládám, že k tomu dochází proto, že UploadController není připojen ke třídě Nette\Application\UI\Presenter a nemá tedy přístup k šabloně.

Jak ale UploadController ke třídě Nette\Application\UI\Presenter připojit?

robert.sipek
Člen | 4
+
0
-

Tak vyřešeno. Ten parent::__construct(); skutečně musí pryč.
Pak už stačí jen metodu attached, která je deprecated, nahradit voláním $this->monitor.

CZechBoY
Člen | 3608
+
+2
-

@robertsipek Posles pull request?

Allconius
Člen | 313
+
0
-

robert.sipek napsal(a):

Tak vyřešeno. Ten parent::__construct(); skutečně musí pryč.
Pak už stačí jen metodu attached, která je deprecated, nahradit voláním $this->monitor.

Ahoj, a jak si to mám nainstalovat do Nette 3 ?

<?php
Problem 1
    - jzechy/jquery-fileupload 2.0.1 requires nette/forms ^v2.4.0 -> satisfiable by nette/forms[v2.4.0, v2.4.1, v2.4.10, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.4.x-dev] but these conflict with your requirements or minimum-stability.
    - jzechy/jquery-fileupload 2.0.0 requires nette/forms ^v2.4.0 -> satisfiable by nette/forms[v2.4.0, v2.4.1, v2.4.10, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.4.x-dev] but these conflict with your requirements or minimum-stability.
    - Installation request for jzechy/jquery-fileupload ^2.0 -> satisfiable by jzechy/jquery-fileupload[2.0.0, 2.0.1].

?>

Při instalaci přes composer to chce Nette 2.4, neplánuje se úprava pluginu i pro Nette 3 ?

IJVo
Člen | 38
+
0
-

Allconius napsal(a):

Ahoj, a jak si to mám nainstalovat do Nette 3 ?

Ahoj, tady jsem upravil ‚jQuery-FileUpload‘ pro Nette 3.0
https://packagist.org/…y-fileupload
Snad je to komplet :-)

CZechBoY
Člen | 3608
+
0
-

@IJVo Nechces radsi poslat PR do puvodni knihovny?

Allconius
Člen | 313
+
0
-

IJVo napsal(a):

Allconius napsal(a):

Ahoj, a jak si to mám nainstalovat do Nette 3 ?

Ahoj, tady jsem upravil ‚jQuery-FileUpload‘ pro Nette 3.0
https://packagist.org/…y-fileupload
Snad je to komplet :-)

Ahoj,
hodilo mi to hlášku:

<?php
Nette\DI\InvalidConfigurationException

Unexpected option 'fileUpload › uiMode'. search►
?>
Allconius
Člen | 313
+
0
-

Allconius napsal(a):

IJVo napsal(a):

Allconius napsal(a):

Ahoj, a jak si to mám nainstalovat do Nette 3 ?

Ahoj, tady jsem upravil ‚jQuery-FileUpload‘ pro Nette 3.0
https://packagist.org/…y-fileupload
Snad je to komplet :-)

Ahoj,
hodilo mi to hlášku:

<?php
Nette\DI\InvalidConfigurationException

Unexpected option 'fileUpload › uiMode'. search►
?>

V konfigu je totiž toho:

<?php
fileUpload:
	maxFiles: 10
	maxFileSize: 7M
	fileFilter: Zet\FileUpload\Filter\ImageFilter
	uploadModel: App\Model\MyUploadModel
	uiMode: full # full nebo minimal
?>
IJVo
Člen | 38
+
0
-

Řádek
uiMode: full # full nebo minimal
smaž.

d@rkWolf
Člen | 162
+
0
-

Zdravím, využil jsem tenhle doplněk dříve jako náhradu starého multiplefileupload v jednom Nette 2.4 projektu, šlapalo to v poho, tak jsem to teď dal do nové věci na Nette 3, celý odpoledne se snažím opravit inicializaci(neustále se dívám na ReferenceError) a až teď mi došlo, že to asi vůbec fungovat nebude-mám celý admin ajaxový a ta komponenta se celá funkčně zaktivuje leda, když obnovím stránku kde ju mám F5kou… Chápu to dobře, že je to ve full ajax nefunkční a moje snaha je naprosto zbytečná? Protože všecek ten kód, co se tam rve přes <script> uvnitř přidruženého latte se prostě při obnovení ajaxem neprovede – a skopírovat ho do JS souboru s inicializací Naji nemůžu, když je plnej Latte tagů.

Radši se ptám, jestli nedělám chybu někde jinde…

n.u.r.v.
Člen | 485
+
0
-

Ahoj, používám ještě verzi 1.2.2 (od roku 2018), ale do teď nebyl problém. Teď se ale stává, že při uploadu se soubor jakoby uploaduje (běží pruh), ale požadavek je pending a trvá třeba 30–40 sekund, než se 4,5MB velký jpg uploaduje. Někdy to ale dělá i txt soubor. Ale přitom progress proběhne až na konec.
Vůbec netuším, čím to může být, zda starší verzí a novýma browserama, nebo problém serveru, ale na localu mi to nedělá, takže spíš je to serverem, ale proč progres ukazuje, že upload je dokončený a přitom je požadavek pending?

Nesetkal se s tím někdo? Díky

luken
Člen | 1
+
0
-

Ahoj, začal jsem používat tuto komponentu, asi jsem rozchodil co potřebuji, ale mám problém s lokalizací. Používám Bckp\Translator.

config.neon

extensions:
	translator: Bckp\Translator\Nette\Bridges\TranslatorExtension(%tempDir%/translator)
	fileUpload: Zet\FileUpload\FileUploadExtension


translator:
	languages:
		- en #Language codes
		- cs #Language codes
	path:
		- %appDir%/Locale # Where to search for language file
	resolver: true # Use resolver to get proper language?
	debugger: %debugMode%

fileUpload:
	maxFiles: 10
	maxFileSize: 5M
	fileFilter: Zet\FileUpload\Filter\ImageFilter
	uploadModel: App\Model\UploadFilesRepository
	renderer: Zet\FileUpload\Template\Renderer\Bootstrap4Renderer
	translator: Bckp\Translator\Nette\Translator

používám Contributte\FormsBootstrap\BootstrapForm

    protected function createComponentItemForm(): BootstrapForm
    {
        $form = $this->formFactory->create();
...
        $form->addFileUpload('files');
...
        $form->onSuccess[] = [$this, 'formSucceeded'];
        $form->setTranslator($this->translator);
        return $form;
    }

dostávám tuto chybu(když v config.neon odeberu v sekci fileUpload: parametr translator – tak to funguje, ale samozřejmě jen v CZ).

zkoušel jsem i na úrovni controlu toto (ale s podobnou chybou):

 $form->addFileUpload('files')->setTranslator( "Bckp\Translator\Nette\Translator ");

nebo

 $form->addFileUpload('files')->setTranslator( $this->translator );

Chybu dostávám:

Argument 1 passed to Nette\Forms\Controls\BaseControl::setTranslator() must implement interface Nette\Localization\ITranslator or be null, string given, called in C:\xampp\htdocs\ga\vendor\ijvo\jquery-fileupload\src\FileUploadControl.php on line 163

Nevíte, co tam je špatně nebo jak to rozchodit? Díky za radu.

dehtak
Člen | 113
+
-11
-

No muzu jen rict ze je to nepouzitelnej odpad plnej chyb. Nechapu proc takovej odpad davate na web

Marek Bartoš
Nette Blogger | 1146
+
+4
-

@dehtak No můžu jen říct, že jsi dneska pěkně toxickej. Nechápu proč místo stěžování si na to jak jsou všechny knihovny špatný nehneš sám zadkem a nepředvedeš nám všem, jak se ty knihovny teda píšou správně.

dehtak
Člen | 113
+
-2
-

Marek Bartoš no jako v componete je toho hodne nepouzitelneho. Jako nezlob se na me, ale je to tak. Bud se tam hadaj verze nebo je tam vzdy nejaka chyba nebo k tomu neni dostatecnej manual. Nebo to neni to pravy orechovy. Ja si pisu radeji vsechno sam. Nez travit spoustu casu zkousenim balicku z komponete. Muzu rict ze tam je pozitelny tak 1% balicku. Nekdo by to mel filtrovat a davat tam opravdu jen funkcni balicky.

Editoval dehtak (16. 7. 2021 10:08)

Marek Bartoš
Nette Blogger | 1146
+
+6
-

Takže @dehtak:

  • To že jsou balíky neudržované není problém componette, packagistu ani žádné jiné stránky s balíky nebo package manageru. Long-term support prostě většina balíků nemá, protože je autor už nepoužívá nebo na tom tratí čas a peníze. Přispíváš na alespoň jeden opensource projekt?
  • Když se objeví nějaká chyba nebo není dostatečná dokumentace, založíš issue? Uděláš minimální repozitář s replikací problému nebo padající test? Podpoříš nějak autora aby se tvému problému věnoval? Jestliže nerozumíš například DI a balík ho používá, tak je čas se naučit s DI a nesvádět to na balík. Jestliže nezvládáš angličtinu, tak je mi líto, ale v našem odvětví je to průmyslový standard a jediný koho můžeš vinit jestliže se neučíš nebo si aspoň nepomáháš s DeepL translatorem jsi ty sám.
  • Někdo by měl filtrovat componette a dávat tam funkční balíky? Okay, kdo by měl být ten, kdo bude hodnotit co je dost dobré a co ne? Na jednu stranu jsou tu lidi, co nejspíš ještě používají jQuery-FileUpload, na druhou stranu jsem tu já u koho balík bez testů a phpstanu do projektu prostě nesmí. Kdo tomu bude věnovat volný čas nebo kdo toho člověka zaplatí? Většinu času na componette pracoval jediný aktivní autor, momentálně je tam jediný další aktivní přispěvatel za celý poslední rok! Kromě oněch dvou je tam za poslední rok pouze jeden commit od dalšího přispěvatele.

Kdy jsi posledně podpořil opensource finančně, neodfláknutým PR nebo alespoň dobře sepsanou issue, která může pomoci ostatním? Na to že všechno dostáváš zadarmo od nás co tomu věnují moře volného času toho chceš nějak moc.