paveljanda on v1.2.1
paveljanda on master
MailLogger: set more_entropy to… Merge pull request #17 from mar… (compare)
paveljanda on master
README.md (compare)
paveljanda on master
package.json (compare)
paveljanda on v2.1.0
paveljanda on master
src/nomodule-es5-fallback.js (compare)
paveljanda on master
src/nomodule-fallback.js (compare)
paveljanda on master
src/nomodule-fallback.js (compare)
array (1)
0 => App\Model\Entities\InvoiceItem #683b
title protected => "IT" (82)
invoice protected => Kdyby\GeneratedProxy\__CG__\App\Model\Entities\Invoice #d208
quantity protected => "1.00" (4)
unit protected => "ks" (2)
unitPrice protected => "200.00" (6)
price protected => NULL
id private => 6
{block content}
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Faktura č. {$invoice->no}</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
Detail
</div>
<!-- /.panel-heading -->
<div class="panel-body">
{if $invoice->type == "issued"}
{var $type = "Odběratel"}
{elseif $invoice->type == "accepted"}
{var $type = "Dodavatel"}
{/if}
<p><strong>{$type}:</strong></p>
<p>{$invoice->subject}</p>
<p><strong>Datum vystavení:</strong></p>
<p>{$invoice->issuedDate|date:'j. n. Y'}</p>
<p><strong>Datum splatnosti:</strong></p>
<p>{$invoice->dueDate|date:'j. n. Y'}</p>
<p><strong>Datum zaplacení:</strong></p>
<p>{$invoice->paymentDate|date:'j. n. Y'}</p>
<p><strong>Celková částka::</strong></p>
<p>{$invoice->price} Kč</p>
<a n:href="Invoice:edit $invoice->id" class="btn btn-primary">Upravit</a>
</div>
<!-- /.panel-body -->
</div>
</div>
<!-- /.col-lg-6 -->
{control invoiceDetailGrid}
</div>
<!-- /.row -->
<?php
namespace App\Presenters;
use Nette;
use Nette\Application\UI;
use Ublaboo\DataGrid\DataGrid;
class InvoicePresenter extends BasePresenter
{
/**
* @var \App\Components\IIssuedInvoiceGridControlFactory
* @inject
*/
public $issuedInvoiceGridControlFactory;
/**
* @var \App\Components\IAcceptedInvoiceGridControlFactory
* @inject
*/
public $acceptedInvoiceGridControlFactory;
public function createComponentIssuedInvoiceControl()
{
return $this->issuedInvoiceGridControlFactory->create(10);
}
public function createComponentAcceptedInvoiceControl()
{
return $this->acceptedInvoiceGridControlFactory->create(10);
}
public function renderShowDetail($id) {
$invoice = $this->invoicesRepository->getInvoice($id);
if (!$invoice) {
throw new \Nette\Application\BadRequestException(404);
}
$this->template->invoice = $invoice;
}
public function renderEdit($id) {
$this->template->id = $id;
}
protected function createComponentEditInvoiceForm()
{
$invoice = $this->invoicesRepository->getInvoiceArray($this->getParameter("id"));
if (!$invoice) {
throw new \Nette\Application\BadRequestException(404);
}
$form = new UI\Form;
$form->addText("subject","Dodavatel")->setDefaultValue($invoice['subject']);
$form->addText("price","Cena")->setDefaultValue($invoice['price']);
$form->addText("issuedDate","Datum vystavení")
->setRequired("Datum je povinný údaj!")
->setDefaultValue($invoice['issuedDate']
->format('Y-m-d'))
->setAttribute("class", "datepicker")
->addRule($form::PATTERN, "Datum musí být ve formátu dd.mm.rrrr", "(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d");
$form->addText("dueDate","Datum splatnosti")
->setRequired("Datum je povinný údaj!")
->setDefaultValue($invoice['dueDate']
->format('Y-m-d'))
->setAttribute("class", "datepicker")
->addRule($form::PATTERN, "Datum musí být ve formátu dd.mm.rrrr", "(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d");
$form->addHidden("invoice_id", $this->getParameter("id"));
$form->addSubmit('login', 'Upravit');
$form->onSuccess[] = [$this, 'editInvoiceFormSucceeded'];
return $form;
}
// volá se po úspěšném odeslání formuláře
public function editInvoiceFormSucceeded(UI\Form $form, $values)
{
\Tracy\Debugger::barDump($values);
$this->invoicesRepository->updateInvoice($values);
$this->flashMessage('Úprava byla úspěšně uložena');
//$this->redirect('Homepage:');
}
public function createComponentInvoiceDetailGrid($name) {
$data = $this->invoicesRepository->fetchInvoiceDetail($this->getParameter("id"));
\Tracy\Debugger::barDump($data);
$grid = new DataGrid($this, $name);
$grid->setDataSource($data);
$grid->addColumnNumber('id', 'Id');
$grid->addColumnText('title', 'Název položky');
$grid->addColumnNumber('quantity', 'Počet');
$grid->addColumnText('unit', 'Jednotka');
$currency = ['Kč'];
$grid->addColumnNumber('unitPrice', 'Cena za jednotku')
->setRenderer(function ($row) use ($currency) {
return $row->unitPrice . ' ' . $currency[0];
});
$grid->addColumnNumber('price', 'Cena celkem')
->setRenderer(function ($row) use ($currency) {
return $row->price . ' ' . $currency[0];
});
$grid->addInlineAdd()
->setPositionTop()
->onControlAdd[] = function($container) {
$container->addText('id', '')->setAttribute('readonly');
$container->addText('title', '');
$container->addText('quantit', '');
$container->addText('unit', '');
$container->addText('unitPrice', '');
$container->addText('price', '');
};
$p = $this;
$grid->getInlineAdd()->onSubmit[] = function($values) use ($p) {
/**
* Save new values
*/
$v = '';
foreach($values as $key=>$value) {
$v.="$key: $value, ";
}
$v = trim($v,', ');
$p->flashMessage("Record with values [$v] was added! (not really)", 'success');
$p->redrawControl('flashes');
};
}
}
$grid->getInlineAdd()->onSubmit[] = function($values) use ($p) {
/**
* Save new values
*/
$values->invoiceId = (int)$this->getParameter("id");
$this->invoicesRepository->insertInvoiceItem($values);
$p->flashMessage("Položka byla uložena", 'success');
if ($this->isAjax()) {
$p->redrawControl('flashes');
$p->redrawControl('grid');
}
else {
$this->redirect('this');
}
};
Cau,
https://ublaboo.org/api-router/direct-routing
nefunguje mi routovaninew ApiRoute('api/dashboard/stats',...)
musel bych zapsat new ApiRoute('/cela_cesta_k_projektu/api/dashboard/stats',...)
delam neco spatne, nebo je to chyba ApiRouteru? a pocita se JEN s vhostama...
diky
Díky moc, funguje!
Ještě řeším jednu podobnou věc - chci přidat akci, která odkazuje na navázanou entitu. Ale nevím, jak jí předat správně id té entity - potřebovala bych se dostat k aktuální entitě a nějak to z ní vytáhnout, třeba místo parametrů předat callback, který parametry vrátí.
Nějak takhle:
$this->addAction('placeDetail', "app.dial.detailBtn", function(Rental $item){
return ['id' => $item->place->id];
})
->setIcon('search')
->setClass('btn btn-xs btn-primary');
Jde to nějak provést? Nebo se tam musí natvrdo poskládat html?
->setDataAttribute($key, $value)
případně to lze obejít přes ->setRenderer(function ($row) {
$href = \Nette\Utils\Html::el('a', [
'class' => 'btn btn-xs btn-primary glyphicon glyphicon-search'
])->href($this->presenter->link('xy', []))
->setAttribute('title', 'xy');
return $href;
});
Ahoj, začal jsem používat doctrine a když chci použít doctrine i pro ublaboo, tak si říkám jestli na to jdu správně. Tohle je ze stránek $grid->setDataSource($exampleRepository->createQueryBuilder('er'));
a já musím mít pro entitu er
nastaveno getName, getId, atd nebo je mít jako public.
Nelíbí se mi na to, že bych musel všechno mít public nebo pro všechno gety. Pro settery používám např saveArticle($name, $author, $pubDate, ...)
, takže obyčejný setXy nepotřebuji. A moje otázka je, zda-li uvažuji správně, že bych musel mít pro všechno gety nebo jestli to jde jinak bez nich? Momentálně místo toto mám $nette->db->table('x') a v případné inline editaci použiji facadeArticle