Confirm dialog – používat?
- ondrej256
- Člen | 187
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
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
@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.
- petr.pavel
- Člen | 535
$(document).on("click", 'a.confirm', function() {
if (confirm('Are you sure?')) {
location.href = $(this).attr('href');
}
return false;
});
- JarekSt
- Člen | 39
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
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
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.
- akadlec
- Člen | 1326
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
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
- JarekSt
- Člen | 39
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
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
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..... :-(
- JarekSt
- Člen | 39
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
- JarekSt
- Člen | 39
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
- JarekSt
- Člen | 39
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
- japlavaren
- Člen | 404
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)
- japlavaren
- Člen | 404
matej21 napsal(a):
@japlavaren kdyby/autowired
:( Kdyby/Autowired requires PHP 5.4 or higher.
- akadlec
- Člen | 1326
@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
V té traitě používáš metodu injectAssetsLoader
, což
používáš i ve svém doplňku assets-loader ;-)