public function triggerEvent(array $events = [], Nette\Database\Table\ActiveRow $section = null, $debug = false)
{
if($debug)
{
$logFile = INDEX_DIR . '/trigger-event.log';
$logData = [];
foreach ($events as $event)
{
$logData[] = sprintf('%s | %s | sectionId: %d',
date('Y-m-d H:i:s'),
$event,
($section !== null) ? $section->id : $section
)
. PHP_EOL;
}
file_put_contents('nette.safe://' . $logFile, $logData, FILE_APPEND);
}
$sectionIndependentEvents = ['onAny'];
$whereOrParams = $whereOr = [];
foreach($events as $event)
{
$whereOr[] = 'FIND_IN_SET(?, event)';
$whereOrParams[] = $event;
}
$presenters = $this->connection->table('catalogue_presenter_config')
->where(implode(' OR ', $whereOr), ...$whereOrParams);
$pagesToInvalidate = [];
foreach ($presenters as $presenterRow)
{
$pages = $this->connection
->table('catalogue_page')
->where('catalogue_section.catalogue_id', $section->catalogue_id)
->where('presenter_id', $presenterRow->presenter_id);
$invalidateIndependent = FALSE;
foreach(explode(',', $presenterRow->event) as $event)
if(in_array($event, $sectionIndependentEvents))
$invalidateIndependent = TRUE;
if(!$invalidateIndependent)
$page->where('catalogue_section_id', $section->id);
foreach ($pages as $page)
$pagesToInvalidate[$page->id] = $page;
}
foreach ($pagesToInvalidate as $pageId => $page)
$this->invalidPdf($page);
}
public function recountPageNumbersInCatalogue($catalogueId)
{
$this->connection->query('
UPDATE
catalogue_page
JOIN (
SELECT
tmp2.*,
@totalRank := @totalRank + tmp2.prev as lastPageNumberInCatalogue
FROM
(SELECT @totalRank := 0) as tempTotalRank,
(
SELECT
tmp.*,
@prev as prev,
@prev := tmp.pdf_pages_count
FROM
(
SELECT
@prev := 0,
t2.name AS sectionName,
t2.rank AS sectionRank,
t1.rank AS pageRank,
t1.id,
t1.pdf_pages_count
FROM
catalogue_page t1
JOIN catalogue_section t2 ON t2.id = t1.catalogue_section_id
WHERE t2.catalogue_id = ?
ORDER BY sectionRank ASC, pageRank ASC
) AS tmp
) AS tmp2
) tmpJoin ON tmpJoin.id = catalogue_page.id
SET page_number = lastPageNumberInCatalogue + 1
', $catalogueId);
}
<?php
namespace Andweb\Yml;
use Nette;
class DefaultSettings
{
use Nette\SmartObject;
protected $arr;
public function getDefaultSettings()
{
$this->arr['version'] = '3.6';
$this->arr['ports']['mode'] = 'host';
$this->arr['labels']['name'] = 'aw-awesome-hosting';
$this->arr['labels']['value'] = 'yes';
$this->arr['deploy']['replicas'] = 1;
$this->arr['deploy']['restart_policy']['delay'] = "10s";
$this->arr['deploy']['restart_policy']['window'] = "30s";
$this->arr['deploy']['update_config'] = [
'parallelism' => 1,
'delay' => '30s',
'order' => 'stop-first',
];
$this->arr['deploy']['resources']['reservations'] = [
'cpus' => '0.25',
'memory' => '1G',
];
$this->arr['networks']['external'] = "true";
return $this->arr;
}
}
(function($) {
var o = $({});
var calledEvents = {};
$.subscribe = function() {
o.on.apply(o, arguments);
if (arguments[0] in calledEvents)
{
var eventName = arguments[0];
var callback = arguments[1];
var clbArgs = [
{type: eventName}, // event
].concat(calledEvents[eventName][0]);
callback.apply(o, clbArgs);
}
};
$.unsubscribe = function() {
o.off.apply(o, arguments);
};
$.publish = function() {
o.trigger.apply(o, arguments);
var eventName = arguments[0];
var args = Array.prototype.slice.call(arguments, 1);
calledEvents[eventName] = args;
};
}(jQuery));
// USAGE
$.subscribe('document/kunda', function(e, a, b) {
console.log('A');
});
$.publish('document/kunda', ['AA', 'BBB']);
$.subscribe('document/kunda', function(e, a, b) {
console.log('B');
});
var instance = $elems['.eshop-menu-filters'].awEshopFilters();
//testovani metody z venci
//1 funkcni
instance.awEshopFilters('test');
//2 funkcni
$elems['.eshop-menu-filters'].awEshopFilters('test');
//3 funkcni, nutno si vratit ulozeny objekt, ktery je v dataatributu
var instanceDataset = $elems['.eshop-menu-filters'].data('awEshopFilters');
instanceDataset.test();
1) Založení nového projektu v git.andwebcz
2) Do naklonovaného repa, přidat do Gitu nový origin, který odkazuje na nette-bootstrap (branch: new)
3) Přepnout v projektu na nette-boostrap (udelat fetch, a nastavit branch: front-base
přes checkout)
4) založit db, založit usera v db + nastavení database.dev.neon (login, heslo ...)
5) v CLI v rootu projektu spustit příkazy ( to samé poté i v adresáři admin)
npm install
npm install --only=dev
npm rebuild node-sass
6) v Rootu projektu spustit v CLI npm run first-init:all
7) spusteni migrace
8) pridani svoji URL do tabulky domains
1) TortoiseGit: je nutno, pak smazat remote nette-botstrap
, a comitnout/pushnout projekt do masteru (ten nemame, visi tam branch front-base
, ale jsme uz v origin: projektu, to nevadi, staci akorat dole pak zaskrtnout new branch, dopsat tam master a spustit ... vytvori se master branch v originu naseho projektu - done!
2) Kdyby nefungoval autoprefixer tak znovu spustit příkaz:
npm install --save-dev postcss-cli autoprefixer
(nevím proč to někdy blbne)