/ Gists / AW

Gists - AW

On gists

References in class

AW

fastadmintablepresenter.php #

<?php

	protected function & getTable()
	{
		return $this->table;
	}

	protected function & getStructure()
	{
		return $this->structure;
	}

On gists

EditForm

AW

actionEdit-form.php #

<?php

	public function actionEdit($pKey = array())
	{
		parent::actionEdit($pKey);

		$form = $this['editForm' . $this->snippetName];
		//$this['editForm' . $this->snippetName]['email']->setOption('appendText', $this->defaultFilter['hosting_service_mail_domain_id']);
		
	?>

On gists

Novato - ranks

MySql tricks MySql - advanced AW

rank-model.php #


    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);
    }

On gists

Ref hell (yml docker container)

AW

DefaultSettings.php #

<?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;
	}


}

On gists

AW pubsub (work belove & above sub or pub)

jQuery jQuery-plugins AW

pubsub.js #

(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');
});

On gists

Volani public metody z AW pluginu

jQuery-plugins AW

example.js #

        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();

On gists

Založení nového projektu na posledním CMS (rev 18.1.2019), Nette 2.4

AW

gistfile1.md #

1) Založení nového projektu v git.andwebcz

  • clone na disk

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 /migrations (2 odkaz zezhora po sekci Continue)

8) pridani svoji URL do tabulky domains

doplnkový body

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)


On gists

Template config

AW

settings.ini #

template=default-variable
[placeholders]
headline=Nadpis
text=Text#Html
[templateConfig]
headlineTag = h4