Confirm dialog – používat?

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

Chci se zeptat zda ještě mám používat

https://componette.org/search/?…

Nebo jeslti už není něco aktuálnějšího. Pokud je to ještě aktuální stále, tak mohl by někdo dát odkaz ke stažení, odkaz v doplňcích je nefunkční.

Díky

llsm
Člen | 121
+
0
-

Spis bych doporucil neco jineho. Sam aktualne pouzivam vlastní úpravu jQuery Easy Confirm Dialog plugin
Ten stačí jen inicializovat a přidat odkazům, které chtějí potvrzení, třídu podle které se pozná, že má to potvrzení vyskočit. Ale je to založené jen na javascriptu, když se vypne, tak žádné potvrzování nebude.

akadlec
Člen | 1326
+
+1
-

@ondrej256: jo ten co je v doplňcích nejede, ale já jej používám, tedy musel jsem jej upravit ale funguje dobře, takže dá se využít.

@llsm: no jo ale ten přes jQuery je úplně o něčem jiném. Díky tomu řešení co je v doplňcích ti to pojede i bez js a navíc tam máš ochranu aby ti někdo nepodvrhl akci.

llsm
Člen | 121
+
0
-

jj, toho jsem si vedom, ale pro zacatecnika mi prislo lepsi doporucit neco jednodussiho a funkcniho a vic se v tom nevrtat

petr.pavel
Člen | 535
+
+1
-
$(document).on("click", 'a.confirm', function() {
  if (confirm('Are you sure?')) {
    location.href = $(this).attr('href');
  }
  return false;
});
JarekSt
Člen | 39
+
0
-

akadlec napsal(a):

@ondrej256: jo ten co je v doplňcích nejede, ale já jej používám, tedy musel jsem jej upravit ale funguje dobře, takže dá se využít.

@llsm: no jo ale ten přes jQuery je úplně o něčem jiném. Díky tomu řešení co je v doplňcích ti to pojede i bez js a navíc tam máš ochranu aby ti někdo nepodvrhl akci.

Mohl by se nekdo obetovat a krok po kroku popsat, jak ten ConfirmationDialog, ktery je v doplncich, zprovoznit? Jak jeho upravu tak i vlastni nasazeni. Diky.

akadlec
Člen | 1326
+
+1
-

Ten co je v doplních bez přepsání komponenty nelze použít, pokud nepoužíváš verzi nette pro kterou byl napsán.

duskohu
Člen | 778
+
0
-

@JarekSt
TB2 alebo Vojto to trosku upratal :-) a tu je TB3

akadlec
Člen | 1326
+
+1
-

@duskohu: ale to je zase jen JS verze ;)

Jestli se k tomu dokopu tak zkusím dát ven použitelnou verzi toho přepsaného confirmation dialogu.

JarekSt
Člen | 39
+
0
-

akadlec napsal(a):

@duskohu: ale to je zase jen JS verze ;)

Jestli se k tomu dokopu tak zkusím dát ven použitelnou verzi toho přepsaného confirmation dialogu.

To by bylo super. Myslim, ze by to ocenilo hodne lidi.

srigi
Nette Blogger | 558
+
0
-

@akadlec, mozes prosim ta zverejnit upravu? Rad by som to integroval, chcem sa pozriet na tvoje riesenie. Pisem hlavne preto, ze mozno nemas cas to plne pripravit (git, composer), spravim to za teba, len potrebujem kod.

akadlec
Člen | 1326
+
+3
-

neboj bude, vcera sem to vyclenil z projektu tak snad dnes to hodim na git.

akadlec
Člen | 1326
+
0
-

Tak jo něco málo sem sesmolil a uvolnil vychází to z původního dialogu jen je to tedy funkční pod 2.1

Je to vytvořeno jako extension, vytvoří si to vlastní továrničku, takže confirmer vytvářejte pomocí továrničky jak je uvedeno v návodu.

Jsou tam udělané dvě templaty – default a tw bootstrap. Default se použije vždy pokud není řečno jinak. Pokud chcete šablonu twitteru tak se dá confirmer donutit přepnout:

protected function createComponentConfirmAction(ConfirmationDialog\IControl $factory)
{
	// Init action confirm
	$form = $factory->create();

	// Define confirm windows
	$form
		// Switch template to bootstrap
		->setTemplate('bootstrap.latte')
		// First confirmation window
		->addConfirmer(
			'confirmerName',
			array($this, 'handleCallback'),
			array($this, 'questionCallback'),
		);

	return $form;
}

Pomocí setTemplate je možné zadat celou cestu k souboru latte pokud chcete vlastní template.

Jinak oproti původnímu confirmeru je tam navíc možnost zadat si titulek okna a ikonku. Je tam k dispozici i sada CSS s ikonkama ale zatím jen připraveno…

Samotná komponenta má symbiozu s nette.ajax a není potřeba ji nějak přidávat, všechny třídy už tam jsou přidány a je tam také deaktivace scroll a history extension.

Samo připomínky a návrhy jak to vylepšit dále jsou vítány.

JarekSt
Člen | 39
+
0
-

Diky moc. Urcite dneska vyzkousim.

akadlec napsal(a):

Tak jo něco málo sem sesmolil a uvolnil vychází to z původního dialogu jen je to tedy funkční pod 2.1

Je to vytvořeno jako extension, vytvoří si to vlastní továrničku, takže confirmer vytvářejte pomocí továrničky jak je uvedeno v návodu.

Jsou tam udělané dvě templaty – default a tw bootstrap. Default se použije vždy pokud není řečno jinak. Pokud chcete šablonu twitteru tak se dá confirmer donutit přepnout:

protected function createComponentConfirmAction(ConfirmationDialog\IControl $factory)
{
	// Init action confirm
	$form = $factory->create();

	// Define confirm windows
	$form
		// Switch template to bootstrap
		->setTemplate('bootstrap.latte')
		// First confirmation window
		->addConfirmer(
			'confirmerName',
			array($this, 'handleCallback'),
			array($this, 'questionCallback'),
		);

	return $form;
}

Pomocí setTemplate je možné zadat celou cestu k souboru latte pokud chcete vlastní template.

Jinak oproti původnímu confirmeru je tam navíc možnost zadat si titulek okna a ikonku. Je tam k dispozici i sada CSS s ikonkama ale zatím jen připraveno…

Samotná komponenta má symbiozu s nette.ajax a není potřeba ji nějak přidávat, všechny třídy už tam jsou přidány a je tam také deaktivace scroll a history extension.

Samo připomínky a návrhy jak to vylepšit dále jsou vítány.

srigi
Nette Blogger | 558
+
0
-

Vdaka za share. Kukam, ze _handle() metoda ma natvrdo jeden argument. Ja som sa prave snazil CD updatnut pre Nette 2.1 tak aby bola zachovana funkcnost povodneho riesenia – dynamicky pocet argumentov. Bohuzial ako sa zda, nie je to mozne.

akadlec
Člen | 1326
+
0
-

@srigi: o to jsem se snažil taky ale zatím bez úspěchu.

JarekSt
Člen | 39
+
0
-

Nejak se mi nedari to zprovoznit. Nainstaloval jsem si confirmationdialog pomoci composeru a pak upravil dle instrukci config.neon. Pada mi to ale na hlasku: Interface ‚Kdyby\Translation\DI\ITranslationProvider‘ not found. Co mam spatne? Diky.

akadlec
Člen | 1326
+
0
-

aaaa jasne, ja tam pridal závislost na Kdyby\Translation pokud nepoužíváš tak můžeš dočasně upravit ConfirmationDialogExtension a odstranit z něj ITranslationProvider a getTranslationResources

JarekSt
Člen | 39
+
0
-

akadlec napsal(a):

aaaa jasne, ja tam pridal závislost na Kdyby\Translation pokud nepoužíváš tak můžeš dočasně upravit ConfirmationDialogExtension a odstranit z něj ITranslationProvider a getTranslationResources

Vyse zminene jsem odtsranil, ale stale bojuju: Argument 1 passed to App\NecoPresenter::createComponentConfirmAction() must implement interface IPub\ConfirmationDialog\Components\IControl, string given, called in C:\web\projects\NetteElearning\vendor\nette\nette\Nette\ComponentModel\Container.php on line 174 and defined

akadlec
Člen | 1326
+
0
-

Co máš za verzi nette a jak tu komponentu vytváříš?

JarekSt
Člen | 39
+
0
-

akadlec napsal(a):

Co máš za verzi nette a jak tu komponentu vytváříš?

Uz jsem mel 2.2.1, ale po modifikaci composer.json (dopsani „require“: {„ipub/confirmationdialog“: „dev-master“}) se mi stahla zpatky verze 2.1.4.
Vytvarim ji takto (dle Tveho navodu):

protected function createComponentConfirmAction(ConfirmationDialog\IControl $factory)
    {
        // Init action confirm
        $form = $factory->create();

        // Define confirm windows
        $form
            // First confirmation window
            ->addConfirmer(
                'confirmerName',
                array($this, 'handleCallback'),
                array($this, 'questionCallback'),
                'Heading of the window'
            );
        return $form;
    }
akadlec
Člen | 1326
+
0
-

Mno na 2.2.* to chcu během týdne předělat. Ale na 2.1 by to mělo fachčit.
AAAA tak mě napadá že já to používám s pomocí kdyby\Autowired takže zkus si přidat:

class YourPresenter
{
	/**
	 * @inject
	 * @var \IPub\ConfirmationDialog\Components\IControl
	 */
	public $confirmDialogFactory;

	protected function createComponentConfirmAction()
	{
		// Init action confirm
		$form = $this->confirmDialogFactory->create();

		// Define confirm windows
		$form
			// First confirmation window
			->addConfirmer(
				'confirmerName',
				array($this, 'handleCallback'),
				array($this, 'questionCallback'),
				'Heading of the window'
			);
		return $form;
	}
}

Snad jsem to napsal dobře, osobně jsem tohle nikdy nepoužíval ;)

Editoval akadlec (12. 6. 2014 7:27)

JarekSt
Člen | 39
+
0
-

akadlec napsal(a):

Mno na 2.2.* to chcu během týdne předělat. Ale na 2.1 by to mělo fachčit.
AAAA tak mě napadá že já to používám s pomocí kdyby\Autowired takže zkus si přidat:

class YourPresenter
{
	/**
	 * @inject
	 * @var \IPub\ConfirmationDialog\Components\IControl
	 */
	protected $confirmDialogFactory;

	protected function createComponentConfirmAction(ConfirmationDialog\IControl $factory)
	{
		// Init action confirm
		$form = $this->confirmDialogFactory->create();

		// Define confirm windows
		$form
			// First confirmation window
			->addConfirmer(
				'confirmerName',
				array($this, 'handleCallback'),
				array($this, 'questionCallback'),
				'Heading of the window'
			);
		return $form;
	}
}

Snad jsem to napsal dobře, osobně jsem tohle nikdy nepoužíval ;)

Hmm, to nepomohlo.
Puvodne jsem chtel confirmation dialogy delat pomoci javascriptu a timhle se vubec nezabyvat, ale tam jsem taky narazil na problem. Confirmation dialog mi naskocilo pouze pri prvni akci, ktera vyzadovala potvrzeni – ta byla ajaxove obslouzena. Jakmile se mi ajaxem vratil obsah snippetu a kliknul jsem na dalsi odkaz, ktery se mel ajaxove poresit, tak mi confirmation z nejakeho duvodu nevyskocil. Trapim se s tak na prvni pohled jednoduchou veci..... :-(

akadlec
Člen | 1326
+
0
-

No a co to teď dělá?

JarekSt
Člen | 39
+
0
-

akadlec napsal(a):

No a co to teď dělá?

porad to same: Argument 1 passed to App\NecoPresenter::createComponentConfirmAction() must implement interface IPub\ConfirmationDialog\Components\IControl, string given, called in C:\web\projects\NetteElearning\vendor\nette\component-model\src\ComponentModel\Container.php on line 174 and defined

akadlec
Člen | 1326
+
0
-

Kurňa sry, umazej tam tu $factory sem to tam neumazal

Filip Procházka
Moderator | 4668
+
0
-

@akadlec @inject funguje pouze na public.

akadlec
Člen | 1326
+
0
-

aaa jasně ;) no já to nepoužívám tak holt nevím no ;)

JarekSt
Člen | 39
+
0
-

Jo, vypada to, ze tohle uz proslo. Problem je ale jeste dal v IPub\ConfirmationDialog\Components\Control.php. Je to asi cele stavene na translator. Argument 1 passed to IPub\ConfirmationDialog\Components\Control::setTranslator() must be an instance of Nette\Localization\ITranslator, null given, called in C:\web\projects\NetteElearning\vendor\ipub\confirmationdialog\src\IPub\ConfirmationDialog\Components\Control.php on line 104 and defined

akadlec
Člen | 1326
+
0
-

uf :( tak jsem to snad pofixoval a je to rozdělene na 2.1 verzi takže instalace takto:

composer require ipub/confirmationdialog:dev-nette-2.1

No a do konce tydne snad bude ready verze na 2.2

PS: díky za trpělivost ;)

Editoval akadlec (12. 6. 2014 21:58)

JarekSt
Člen | 39
+
0
-

[UnexpectedValueException]
Could not parse version constraint @dev-nette-2.1: Invalid version string "@dev-nette-2.1"

JarekSt
Člen | 39
+
0
-

akadlec napsal(a):

uf :( tak jsem to snad pofixoval a je to rozdělene na 2.1 verzi takže instalace takto:

composer require ipub/confirmationdialog:dev-nette-2.1

No a do konce tydne snad bude ready verze na 2.2

PS: díky za trpělivost ;)

Hele, je mi to blbe furt otravovat, ale…
Narazil jsem na dalsi chybu: Unknown macro {button} in …\template\default.latte:12

JarekSt
Člen | 39
+
0
-

Ohledne problemu s javascriptem, ktery jsem resil vyse: uz jsem prisel na to, proc po prvnim kliku na ajaxovy odkaz se confirmation provedlo a po vraceni snippetu uz ne. Je to dano rozdilem v chovani mezi kdysi pouzivanym „live“ a aktualne pouzivanym „on“. Aspon neco.

akadlec
Člen | 1326
+
0
-

@JarekSt: jj to macro tam nemá být, taky jsem na to narazil ale teď jsem byl docela zasekaný :( snad už v týdnu vyhodím jak 2.1 tak 2.2 verzi bez bugů.

akadlec
Člen | 1326
+
0
-

Sice po delší odmlce, ale konečně jsem se dostal k tomu to překopat, takže tahle extension prošla docela rozsáhlým refactorem. Je otestovaná jak přes travise, tak i přes sandbox nette a měla by plně fungovat. Zatím tedy testovací verze, tak kdo chce může zkusit.

japlavaren
Člen | 404
+
0
-
protected function createComponentConfirmAction(ConfirmationDialog\IControl $factory)
{
	// Init action confirm
	$form = $factory->create();

	// Define confirm windows
	$form
		// Switch template to bootstrap
		->setTemplate('bootstrap.latte')
		// First confirmation window
		->addConfirmer(
			'confirmerName',
			array($this, 'handleCallback'),
			array($this, 'questionCallback'),
		);

	return $form;
}

tá factory v create component je asi záležitosť extension však? pretože páči sa mi zápis, ak by sa takto dali predávať továrničky priamo do create component, bohužial s inou továrničkou mi to nefunguje (mimo túto extension)

David Matějka
Moderator | 6445
+
0
-

@japlavaren kdyby/autowired

japlavaren
Člen | 404
+
0
-

matej21 napsal(a):

@japlavaren kdyby/autowired

:( Kdyby/Autowired requires PHP 5.4 or higher.

akadlec
Člen | 1326
+
0
-

@japlavaren ano extension vytvoří službu továrničky a ty si ji do presenteru/controlu vložíš pomocí traity, pokud máš php 5,4+ pokud ne tak holt obsah traity překopíruješ.

Jinak kdybys použil zmíněné kdyby/autowired tak to ti je schpno tu továrničku do té metody createComponent dovézt samo a tu traitu z ext. bys nepotřeboval.

David Kudera
Člen | 455
+
0
-

V té traitě používáš metodu injectAssetsLoader, což používáš i ve svém doplňku assets-loader ;-)

akadlec
Člen | 1326
+
0
-

@DavidKudera dík, typo no ;)