Grido – DataGrid pro Nette
- xxxmisko
- Člen | 140
o5:
nehnevaj sa na mňa, som nováčik :D
‚Môžete použiť <, <=, >, >=, <>. Napr.: „>=
%d“‘ ⇒ ‚You can use <, <=, >, >=, <>. Např.: „>=
%d“‘,
‚Vyberte riadok‘ ⇒ ‚Select some row‘,
‚Označené…‘ ⇒ ‚Selected…‘,
‚Reset‘ ⇒ ‚Reset‘,
‚Hľadať‘ ⇒ ‚Search‘,
‚Položiek na stránke‘ ⇒ ‚Items per page‘,
‚Tlačiť‘ ⇒ ‚Print‘,
‚Zmazať‘ ⇒ ‚Delete‘,
‚Ste si istý, že chcete zmazať túto položku?‘ ⇒ ‚Are you sure, you
want to delete this item?‘,
tieto mi prekladač nezožral.
- Kryšpin
- Člen | 27
Tak jsem trošku opět narazil.
Testoval jste někdo filtr?
<?php
->setFilter(Grido\Components\Filters\Filter::TYPE_CHECK);
?>
Pokud jej použiji, tak generátor pro dibifluent vyplodí toto:
SELECT COUNT(*) FROM `view_temata
WHERE (obhajeno
IS NOT NULL ) 1 LIMIT 1`
Je tam navíc ta jednička za podmínkou.
- tomastomb
- Člen | 9
Ahoj,
chtěl bych poprosit o opravu exportu do CSV.
Již zde zmiňovaná chyba:
Illegal offset type in isset or empty
se u mě projevuje i při exportu tabulek, které nejsou joinované a
obsahují sloupec datum ve formátu: „rrrr-dd-mm hh:ii:ss“.
Chyba je v souboru: Column.php v místě:
277: protected function applyReplacement($value)
278: {
279: return isset($this->replacements[$value])
po kliknutí na tlačítko export.
Existuje nějaké řešení, jak to opravit? Moc děkuji
- Kryšpin
- Člen | 27
Tak jsem laboroval na tím jak jsem psal výše:
<?php
//Sloupec
$grid->addColumn('obsazeno2', 'Obsazeno', Grido\Components\Columns\Boolean::TYPE_BOOLEAN)
->setSortable()
->setFilter(Grido\Components\Filters\Filter::TYPE_CHECK);
?>
Filter není vůbec použitelný. V DEMU je ukázka pouze pro použití vlastní podmínky:
<?php
//Sloupec
$grid->addColumn('obsazeno2', 'Obsazeno', Grido\Components\Columns\Boolean::TYPE_BOOLEAN)
->setSortable();
//Filtry
$grid->addFilter('obsazeno2', 'Obsazeno:', Grido\Components\Filters\Filter::TYPE_CHECK)
->setCondition(Grido\Components\Filters\Filter::CONDITION_CUSTOM, array(
TRUE => '[obsazeno2] > 0'
?>
Ten samozřejmě funguje, protože se řídí podmínkou uvedenou v setCondition.
Očekával bych při nedodání vlastní podmínky, že to bude fungovat také, ale nefunguje. Generuje to pak nesmyslný SQL dotaz (a není to chyba dibifluent, ale už základu).
SELECT COUNT(*) FROM `view_temata WHERE (obsazeno2 IS NOT NULL ) 1 LIMIT 1
Chybná je funkce makeFilter a proměnná $condition v Check.php. Tento filtr jak je napsán nemůže fungovat a ztrácí smysl. Předává totiž v poli 2 proměnné ((obsazeno2 IS NOT NULL ) a 1), ale v $condition není pro ni připravená substituce a tak se přiřadí nakonec za závorku.
Pro svoji potřebu jsem si vytvořil fungující filtr Check2.php a přidal do Filter.php.
<?php
namespace Grido\Components\Filters;
/**
* Check2 box filter.
*
* @package Grido
* @subpackage Components\Filters
* @author Pavel Kryštůfek
*/
class Check2 extends Filter
{
/* representation TRUE in URI */
const TRUE = '✓';
/** @var string for ->where('<column> > 0) */
protected $condition = '>';
/**
* @return \Nette\Forms\Controls\Checkbox
*/
protected function getFormControl()
{
return new \Nette\Forms\Controls\Checkbox($this->label);
}
/**
* @param string $column
* @param string $value
* @return array condition|value
*/
public function _makeFilter($column, $value)
{
$condition = array(
"[$column] ".$this->condition." %i", 0
);
return $condition;
}
/**
* @internal
* @param bool $value
* @return string
*/
public function changeValue($value)
{
return $value === TRUE ? self::TRUE : $value;
}
}
?>
Uvažuji správně?
- tomastomb
- Člen | 9
o5 napsal(a):
@tomastomb: mas aktualni verzi Grida? (ty radky co jsi uvedl nesedi na aktualni verzi) ladenka? definice gridu?
Aktuální verzi jsem neměl, provedl jsem update a chyba zůstala. Hlášení laděnky je nyní toto:
Warning
Illegal offset type in isset or empty
Source file ▼
File: …/home/libs/Grido/Components/Columns/Column.php Line: 284
274: return $row->$column;
275: } elseif (is_callable($column)) {
276: return callback($column)->invokeArgs(array($row));
277: } else {
278: throw new \Nette\InvalidArgumentException(‚Column must be string or
callback.‘);
279: }
280: }
281:
282: protected function applyReplacement($value)
283: {
284: return isset($this->replacements[$value])
285: ? str_replace(self::VALUE_IDENTIFIER, $value,
$this->replacements[$value])
286: : $value;
Definice Gridu – presenter:
<?php
protected function createComponentZobraz($name) {
$grid = new Grid($this, $name);
$grid->setTranslator(new \Grido\Translations\FileTranslator("cs"));
$fluent = $this->getTableService()->vypis();
$grid->setModel($fluent);
$grid->addColumn('id', 'id')
->setSortable()
->setFilter();
$grid->addColumn('stav', 'stav')
->setSortable()
->setFilter()
->setSuggestion();
$grid->addColumn('platnost_do', 'platnost do')
->setSortable()
->setFilter()
->setSuggestion();
$grid->addAction('editovat', 'Edituj')
->setIcon('pencil');
$grid->addAction('dataGridSmaz', 'Smaž')
->setIcon('trash')
->setConfirm('Opravdu chcete tuto položku vymazat?');
$operations = array('dataGridSmaz' => 'Delete');
$grid->setOperations($operations, callback($this, 'gridOperationsHandler'))
->setConfirm('dataGridSmaz', 'Opravdu chcete vymazat %i položek?');
$grid->setExporting();
$grid->setRememberState(true);
}
?>
model:
<?php
public function vypis() {
$rows = $this->connection->table($this->getTable());
return $rows;
}
?>
Zde si myslím, že je chyba:
Variables ▼
$value
Nette\DateTime(3) ▼ {
date ⇒ „2013–04–21 16:22:38“ (19)
timezone_type ⇒ 3
timezone ⇒ „Europe/Prague“ (13)
}
Stačí tyto informace? Děkuju
- o5
- Člen | 416
@tomastomb: Ve verzi Grida co máš, je potřeba pro export specifikovat, že se jedná o TYPE_DATE. Takto:
$grid->addColumn('platnost_do', 'platnost do', Column::TYPE_DATE);
Přidal jsem ale raději podmínku i do Column, pokud by tam někdo chtěl posílat něco jiného než string. Takže si stáhni aktuální verzi Grida pokud nechceš specifikovat typ.
TIP: ta česká mutace tam jde nastavit i jednodušeji ;)
$grid->translator->lang = 'cs';
- lubos.bajkai
- Člen | 6
Dobrý den,
rád bych Vás požádal o radu, datagrid je super ale aktualně řešíme problem kdy v datagridu mame tlačítka VIEW / EDIT / DELETE. Jedna se o seznam uživatelu a chceme znepřístupnit nekteré tlačítka pro EDITACI a MAZANI pro nekteré položky v gridu dle opravnení. V podstate to znamena že když se někdo s opravnením ADMIN podívá do teto tabulky tak bude mít možnost smazat a editovat uživatele se stejným nebo nižším opravněním ale u žádku s uživatelem SUPERVISOR by neměl vidět tlačítka EDIT / DELETE popřípadě by měli být neaktivní. Popravdě nemame moc zkušeností s použitím datagridu a popřebujeme jen trošičku nasměrovat.
- o5
- Člen | 416
@lubos.bajkai: Je to v dokumentaci…
$grid->addAction('edit', 'Edit')
->setDisable(function($item) {
return $item->gender == 'male';
});
Editoval o5 (27. 3. 2013 11:50)
- tomastomb
- Člen | 9
o5 napsal(a):
@tomastomb: Ve verzi Grida co máš, je potřeba pro export specifikovat, že se jedná o TYPE_DATE. Takto:
$grid->addColumn('platnost_do', 'platnost do', Column::TYPE_DATE);
Přidal jsem ale raději podmínku i do Column, pokud by tam někdo chtěl posílat něco jiného než string. Takže si stáhni aktuální verzi Grida pokud nechceš specifikovat typ.
TIP: ta česká mutace tam jde nastavit i jednodušeji ;)
$grid->translator->lang = 'cs';
Stáhnul jsem si aktuální verzi a export funguje perfektně.
Děkuju za opravu, jsem spokojený :-)
A definice translatoru je taky fajn, měl jsem to poněkud kostrbaté :-)
Btw: Nešlo by založit nějaký version log, kde by se vedly verze s popisem, co je nového či opraveného a případně s ukázkou použití? Vím, že je to vidět na Githubu, ale pokud kódu úplně nerozumím, je těžké pochopit, o co ve změnách jde.
- cujan
- Člen | 410
no model som nastavil takto
<?php
$grid->setModel($this->context->vychovavateliaRepository->findAll());
?>
ale zrejme som nastavil iba pohlad na tabulku vychovavatel
lebo skusil som nastavit stlpec takto
<?php
$grid->addColumn('skupina', 'Skupina')->setColumn('skupina->nazov');
?>
ale to mi akosi nefunguje…
- o5
- Člen | 416
cujan napsal(a):
no model som nastavil takto
<?php $grid->setModel($this->context->vychovavateliaRepository->findAll()); ?>
ale zrejme som nastavil iba pohlad na tabulku vychovavatel
lebo skusil som nastavit stlpec takto
<?php $grid->addColumn('skupina', 'Skupina')->setColumn('skupina->nazov'); ?>
ale to mi akosi nefunguje…
Něco podobného se tu nedávno řešilo.
EDIT: do dokumentace jsem to zapomněl dát, přidám
Editoval o5 (3. 4. 2013 14:02)
- tomastomb
- Člen | 9
tomastomb napsal(a):
Měl bych zase jednu otázečku: jak nastavit jiný styl tlačítku delete?
Konkrétně bych chtěl ke class btn-mini (generovaný Grido) doplnit ještě class btn-danger.
Nejspíš se jedná o použití metody getElementPrototype(), ale nevím jak.
Moc děkuju
Nakonec jsem na to přišel sám pokusem :-), tak kdyby to někdo řešil taky:
<?php
$grid->addAction('dataGridSmaz', 'Smaž')
->setIcon('trash')
->setConfirm('Opravdu chcete tuto položku vymazat?')
->getElementPrototype()->class[] = 'btn-warning';
?>
- cujan
- Člen | 410
o5 napsal(a):
cujan napsal(a):
no model som nastavil takto
<?php $grid->setModel($this->context->vychovavateliaRepository->findAll()); ?>
ale zrejme som nastavil iba pohlad na tabulku vychovavatel
lebo skusil som nastavit stlpec takto
<?php $grid->addColumn('skupina', 'Skupina')->setColumn('skupina->nazov'); ?>
ale to mi akosi nefunguje…
Něco podobného se tu nedávno řešilo.
EDIT: do dokumentace jsem to zapomněl dát, přidám
no pridal som tam nieco take
<?php
$grid->addColumn('skupina', 'Skupina')->setColumn(function($item){
return $item->skupina->nazov;
?>
a zatial to nefacha…
- o5
- Člen | 416
cujan napsal(a):
no pridal som tam nieco take
<?php $grid->addColumn('skupina', 'Skupina')->setColumn(function($item){ return $item->skupina->nazov; ?>
a zatial to nefacha…
Těžko říct z jakého důvodu ti to nefachá, tipuju že tam nebudeš mít správně nastavené primární klíče v tabulce…
- cujan
- Člen | 410
ono jak tak nato pozeram…tak model mam nastaveny tabulku vychovavatel, cize ako ono pozna tabulku skupina?
moj cely presenter vyzera takto
<?php
<?php
use Grido\Grid,
Grido\Components\Filters\Filter,
Grido\Components\Columns\Column,
Nette\Utils\Html,
Nette\Application\UI\Form;
/**
* Description of VychovavateliaPresenter
*
* @author cujan
*/
class VychovavateliaPresenter extends BasePresenter {
/**
* (non-phpDoc)
*
* @see Nette\Application\Presenter#startup()
*/
private $vychovavateliaRepository;
private $skupinaRepository;
protected function startup() {
parent::startup();
$this->vychovavateliaRepository = $this->context->vychovavateliaRepository;
$this->skupinaRepository = $this->context->skupinaRepository;
}
public function actionDefault() {
}
public function renderDefault() {
}
/************** edit ****************************/
public function renderEdit($id = 0)
{
$form = $this['vychovavateliaForm'];
if (!$form->isSubmitted()) {
$vychovavatel = $this->vychovavateliaRepository->findById($id);
if (!$vychovavatel) {
$this->error('Zaznam nenajdeny');
}
$form->setDefaults($vychovavatel);
}
}
/********************* view delete *********************/
public function renderDelete($id = 0)
{
$this->template->vychovavatelia = $this->vychovavateliaRepository->findById($id);
if (!$this->template->vychovavatelia) {
$this->error('Record not found');
}
}
//grid udajjov o vychovavateloch
protected function createComponentGridVychovavatelia($name)
{
$grid = new Grid($this, $name);
$grid->translator->lang = 'cs';
$grid->setModel($this->context->vychovavateliaRepository->findAll());
$grid->addColumn('priezvisko', 'Priezvisko')->setSortable()->setFilter();
$grid->addColumn('meno', 'Meno')->setSortable()->setFilter();
$grid->addColumn('skupina', 'Skupina')->setColumn(function($item){
return $item->skupina->nazov;
});
$grid->addAction('edit', 'Edit')->setIcon('pencil');
$grid->addAction('delete', 'Delete')->setIcon('pencil');
//$grid->setOperations(array('delete' ⇒ 'Delete'), function($operation, $id) );
}
protected function createComponentVychovavateliaForm() {
$form = new Form;
$form->addText('priezvisko', 'Priezvisko');
$form->addText('meno', 'Meno');
$form->addSubmit('save', 'Uloz')->onClick[] = $this->albumFormSucceeded;
$form->addSubmit('cancel', 'Cancel')->setValidationScope(NULL)->onClick[] = $this->formCancelled;
return $form;
}
public function albumFormSucceeded($button)
{
$values = $button->getForm()->getValues();
$id = (int) $this->getParameter('id');
if ($id) {
$this->vychovavateliaRepository->findById($id)->update($values);
$this->flashMessage('The album has been updated.');
} else {
$this->vychovavateliaRepository->insert($values);
$this->flashMessage('The album has been added.');
}
$this->redirect('default');
}
public function formCancelled()
{
$this->redirect('default');
}
/**
* Delete form factory.
* @return Form
*/
protected function createComponentDeleteForm()
{
$form = new Form;
$form->addSubmit('cancel', 'Cancel')
->onClick[] = $this->formCancelled;
$form->addSubmit('delete', 'Zmaž')
->setAttribute('class', 'default')
->onClick[] = $this->deleteFormSucceeded;
$form->addProtection();
return $form;
}
public function deleteFormSucceeded()
{
$this->vychovavateliaRepository->findById($this->getParameter('id'))->delete();
$this->flashMessage('Vzychovávateľ bol úspešne vymazaný.');
$this->redirect('default');
}
//koncova zatvorka
}
?>
- quiced
- Člen | 85
Zdravím,
snažím se vyřešit menší problém. Potřebuju Grido použít pro různé kategorie, které rozpoznávám přes ID přenášené přes Get. Problém je v tom, že nevím jak nastavit filter u Grida tak, aby počítal s tímto ID a tudíž mi filtrovat z dat v té jedné kategorii.
V dokumentaci jsem narazil na setCondition, což by mělo moje potíže vyřešit, bohužel se mi tuto funkci nepodařilo rozchodit. Snažil jsem se to použít takto
$grid->addColumn('title', 'Název')
->setFilter()
->setSuggestion()
->setDefaultValue($url)
->setCondition(Filter::CONDITION_CUSTOM, array('catid' => $catid));
Dokázal by mi někdo poradit? Díky.
- tomastomb
- Člen | 9
Jen zasílám zjištěnou vlastnost ukládání stavu Grido, funkce
$grid->setRememberState().
Měl jsem konstrukci:
<?php
class UzivatelePresenter {
protected function createComponentZobraz($name) {
...
}
}
?>
a následně třeba:
<?php
class AktivityPresenter {
protected function createComponentZobraz($name) {
...
}
}
?>
Pokud v obou komponentách použiju funkci setRememberState, tak se uložený stav přepisuje. Nejspíše se do sessions ukládá jméno komponenty, které je v obou případech stejné. Řešením je mít každou komponentu pojmenovanou jinak.
- tomastomb
- Člen | 9
Znovu bych potřeboval otevřít diskuzi k tématu spojování tabulek.
Proč nemůžu používat tečkový zápis při definici Grida?
<?php
$grid->addColumn('inzeraty.id', 'id');
?>
Mám dvě tabulky propojené cizím klíčem a pokud použiji filtr, definovaný takto:
<?php
$grid->addColumn('id', 'id')
->setSortable()
->setFilter();
?>
dostanu chybu:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column ‚id‘ in where
clause is ambiguous
Pokud filtr nepoužiji, data se zobrazí.
Jak Gridu říct, že potřebuju sestavit where podmínku podle inzeraty.id
nikoliv jen podle id?
Zkoušel jsem řešení i přes view, a zde zase dostávám chybu:
Filter with name ‚id‘ does not exist.
Děkuju
- Petr Bugyík
- Člen | 4
tomastomb napsal(a):
Proč nemůžu používat tečkový zápis při definici Grida?
Protoze je to proste nazev komponenty,stejne jako je tomu napr. u formularu. Zkus pouzit za tim setFilter() metodu setColumn()..
Editoval Petr Bugyík (10. 4. 2013 16:23)
- tomastomb
- Člen | 9
Nemohl bych poprosit o ukázku funkčního spojení dvou tabulek, kde by
fungovalo filtrování dle stejného sloupce (id)?
Pokud použiji setColumn, takto:
<?php
$grid->addColumn('id', 'id')
->setSortable()
->setFilter()
->setColumn(function($item){
return $item->inzeraty->id;
});
?>
Dostávám chybu:
Warning
Illegal offset type
Source file ▼
File: …/home/libs/Grido/Components/Filters/Filter.php Line: 100
98: public function setColumn($column, $operator = self::OPERATOR_AND)
99: {
100: $this->columns[$column] = $operator;
101: return $this;
102: }
Data získávám takto:
<?php
$fluent = \dibi::select('inzeraty.*')
->select('uzivatele.uzivatelske_jmeno')
->from('inzeraty')
->leftJoin('uzivatele')->on('uzivatele.id = inzeraty.uzivatele_id')
;
?>
Děkuju
Petr Bugyík napsal(a):
tomastomb napsal(a):
Proč nemůžu používat tečkový zápis při definici Grida?
Protoze je to proste nazev komponenty,stejne jako je tomu napr. u formularu. Zkus pouzit za tim setFilter() metodu setColumn()..
- xxxmisko
- Člen | 140
Ahoj!
pro použití mssql a dibifluent sa vyskytuje chybka v DibiFluent.php, kedy sa nevie urobiť count(), ale musí tam byť count() as nieco, potom to ide. Neviem, či je to správne riešenie, ale funguje :D
dibiFluent.php
public function getCount()
{
$fluent = clone $this->fluent;
return $fluent->removeClause('ORDER BY')->removeClause('SELECT')->select('COUNT(*) as pocet')->fetchSingle();
//return $fluent->removeClause('ORDER BY')->removeClause('SELECT')->select('COUNT(*)')->fetchSingle();
}
Editoval xxxmisko (11. 4. 2013 12:25)
- Kryšpin
- Člen | 27
o5 vrátil předhozí změnu nazpět v tomto commitu:
https://github.com/…3ada5406cbd5
takže nyní je v master opět
<?php
public function getCount()
{
$fluent = clone $this->fluent;
return $fluent->count();
}
?>
xxxmisko napsal(a):
Ahoj!
pro použití mssql a dibifluent sa vyskytuje chybka v DibiFluent.php, kedy sa nevie urobiť count(), ale musí tam byť count() as nieco, potom to ide. Neviem, či je to správne riešenie, ale funguje :D
dibiFluent.php public function getCount() { $fluent = clone $this->fluent; return $fluent->removeClause('ORDER BY')->removeClause('SELECT')->select('COUNT(*) as pocet')->fetchSingle(); //return $fluent->removeClause('ORDER BY')->removeClause('SELECT')->select('COUNT(*)')->fetchSingle(); }
- tomastomb
- Člen | 9
Díky Kryšpinovi je můj dotaz vyřešen. Tímto mu velmi děkuji za
záchranu.
Při získávání dat u tabulky s joinovaným spojením stačí vytvořit
VIEW a tento view jde následně získat takto:
<?php
$fluent = \dibi::select('*')
->from('view...');
?>
případně v ORM:
<?php
$fluent = ...->connection->table('view...')->select('*');
?>
Důvod, proč se mi Grido nenačetlo, byl chybějící příkaz select(‚*‘).
tomastomb napsal(a):
Nemohl bych poprosit o ukázku funkčního spojení dvou tabulek, kde by fungovalo filtrování dle stejného sloupce (id)?
Pokud použiji setColumn, takto:<?php $grid->addColumn('id', 'id') ->setSortable() ->setFilter() ->setColumn(function($item){ return $item->inzeraty->id; }); ?>
Dostávám chybu:
WarningIllegal offset type
Source file ▼
File: …/home/libs/Grido/Components/Filters/Filter.php Line: 10098: public function setColumn($column, $operator = self::OPERATOR_AND)
99: {
100: $this->columns[$column] = $operator;
101: return $this;
102: }Data získávám takto:
<?php $fluent = \dibi::select('inzeraty.*') ->select('uzivatele.uzivatelske_jmeno') ->from('inzeraty') ->leftJoin('uzivatele')->on('uzivatele.id = inzeraty.uzivatele_id') ; ?>
Děkuju
Petr Bugyík napsal(a):
tomastomb napsal(a):
Proč nemůžu používat tečkový zápis při definici Grida?
Protoze je to proste nazev komponenty,stejne jako je tomu napr. u formularu. Zkus pouzit za tim setFilter() metodu setColumn()..
- xxxmisko
- Člen | 140
Ahojte!
chcem, aby sa v operations dalo presmerovať na inú stránku, resp. nejaký formulár.
$operations = array('print' => 'Tlačiť', 'delete' => 'Zmazať');
$grid->setOperations($operations, callback($this, 'gridOperationsHandler'))
->setConfirm('delete', $this->translator->translate('Chcete zmazať %i položiek?'));
Momentálne sa spúšťa funkcia gridOperationsHandler, ktorá spúšťa ďalšiu funkciu na základe názvu operácie. Otázka je, ako by som vedel urobiť presmerovanie na formulár, ktorého parametrami by bolo pole vybraných id-čiek, aby som im vedel nastaviť nejaké hromadné hodnoty? Napríklad 5-tim ľuďom by som nastavil výšku 180cm, iba 1× a naraz.
Dúfam, že ste ma pochopili, ďakujem
- pjoter
- Člen | 118
Opět jsem se vrátil ke svému starému problému pro vlastní confirm dialog v hromadných operacích. Neporadil by mě prosím někdo jak na to?
pjoter napsal(a):
Zdarec,
nejprve bych chtěl poděkovat za výborný grid. Seznamujeme se a potřeboval bych trochu popostrčit. Řeším vlastní confirm dialogy (konkrétně bootstrap), chcu se optat – u akci pro jednotlivy radek je to easy preventnu default a tlacitku v dialogu pridam href akce.
Jak je to ale u hromadne akce?
Zkousim neco takoveho ale bez sance.
<script> ... onSubmit: function(e) { var itemsCount = $($.grido.operations.selector + ':checked', $.grido.$element).length, hasConfirm = $.grido.operations.getSelect().attr( 'data-grido-' + $.grido.operations.getSelect().val() ); if(hasConfirm) { e.preventDefault(); } return hasConfirm ? showDialog(hasConfirm.replace(/%i/g, itemsCount),0,$(this).parent('form')) : true; }, ... function showDialog(message,href,form) { $('#formConfirmModal .modal-body').html('<p>' + message + '</p>'); $('#formConfirmModal').modal('show'); if(href) { $('#formConfirmModal .modal-footer a.yes').attr('href',href); } else { $('#formConfirmModal .modal-footer a.yes').on('click',function() { form.submit(); }); } } </script>
Predem diky za tipy.