/ Gists

Gists

On gists

Vlastní filtr(y) v komponentě

Nette

filter-in-component.php #

	public function createTemplate($class = NULL)
	{
		  
		  $template = parent::createTemplate($class);
		  $template->addFilter('streakBar', function($s, $maxBar = 5, $paramId){


		  		if ($paramId == 1470)
		  		{
		  			$streakBar = \Nette\Utils\Html::el('div')->addClass('streak-bar');
		  			$off = $maxBar - $s;
		  			$on = $s;

		  			for ($i = 1; $i <= $on; $i++)
		  			{
		  				$onBar = \Nette\Utils\Html::el('div')->addClass('bar on');
		  				$streakBar->add($onBar);
		  			}

		  			for ($i = 1; $i <= $off; $i++)
		  			{
		  				$offBar = \Nette\Utils\Html::el('div')->addClass('bar off');
		  				$streakBar->add($offBar);
		  			}


					return $streakBar->addTitle($on . '/' . $maxBar);

		  		}

		  		return $s;
		  });

		  return $template;
	}

On gists

MPDF , Nette , Latte, šablona do MPDF

Nette

presenter.php #

	<?php 
	
	    $mpdf = new \mPDF('utf-8','A4','','',12,12,2,2,10,10, 'P'); 
	    $mpdf->useOnlyCoreFonts = true;
	    $mpdf->SetDisplayMode('fullpage');
		$this->template->setFile(INDEX_DIR . '/app/FrontModule/templates/ConfigIt/pdf.latte');
        $mpdf->WriteHTML((string) $this->template);
        $mpdf->Output($name, 'd');
		$this->terminate();

On gists

From https://forum.nette.org/cs/11005-nette-ajax-js-alt-obsluha-pro-ajax-s-jquery?p=5

Nette JavaScript

spinner-nette-ajax.js #

(function($, undefined) {
$.nette.ext('spinner', {
        init: function () {
                spinner = $('<div></div>', { id: "ajax-spinner" });
                spinner.appendTo("body");
        },
        before: function (xhr, settings) {
                $("#ajax-spinner").css({
                        visibility: "visible",
                        left: settings.nette.e.pageX,
                        top: settings.nette.e.pageY
                });
        },
        complete: function () {
                $("#ajax-spinner").css({
                        visibility: "hidden"
                });
        }
});
})(jQuery);

On gists

Close on document, but not on this element.

jQuery Helpers-Filters-Plugins

on-document-click-close.js #

    $(document).on('click', function(e){

    	if ($(e.target).closest('.user-sign-in-form').length === 0) 
    	{
       		$('.user-sign-in-form').fadeToggle();
    	}

    });

On gists

Jquery - replace tag with another

jQuery Helpers-Filters-Plugins

replace-tag-by-another.js #

$('li').replaceWith(function(){
  return $("<div />").append($(this).contents());
});

On gists

Stay on top

jQuery

fixed-nav-stay-on-top.js #

$(function(){
	var $win = $(window)
	var $nav = $('.mytoolbar');
	var navTop = $('.mytoolbar').length && $('.mytoolbar').offset().top;
	var isFixed=0;
 
	processScroll()
	$win.on('scroll', processScroll)
 
	function processScroll() {
	var i, scrollTop = $win.scrollTop()
 
	if (scrollTop >= navTop && !isFixed) { 
		isFixed = 1
		$nav.addClass('subnav-fixed')
	} else if (scrollTop <= navTop && isFixed) {
		isFixed = 0
 		$nav.removeClass('subnav-fixed')
	}
}

On gists

Nette - odeslání přílohy emailem

Nette

send-mail-with-attachment.php #

if ($values['cv']->isOk())
{
  $mail->addAttachment($values['cv']->name, file_get_contents($values['cv']->temporaryFile));
}

On gists

Comparison between gulp and Grunt. See http://markgoodyear.com/2014/01/getting-started-with-gulp/ for a write-up.

Gulp

02-Gruntfile.js #

/*!
 * Grunt
 * $ npm install grunt-contrib-uglify grunt-autoprefixer grunt-contrib-cssmin grunt-contrib-imagemin grunt-contrib-sass grunt-contrib-watch grunt-contrib-concat grunt-contrib-clean grunt-contrib-jshint grunt-notify --save-dev
 */

module.exports = function(grunt) {

  grunt.initConfig({

    // Sass
    sass: {
      dist: {
        options: {
          style: 'expanded'
        },
        files: {
          'dist/styles/main.css': 'src/styles/main.scss'
        }
      }
    },

    // Autoprefix
    autoprefixer: {
      options: {
        browsers: [
          'last 2 version'
        ]
      },
      dist: {
        src: 'dist/styles/main.css'
      }
    },

    // CSS minify
    cssmin: {
      dist: {
        files: {
          'dist/styles/main.min.css': 'dist/styles/main.css'
        }
      }
    },

    // JShint
    jshint: {
      files: ['src/scripts/**/*.js'],
      options: {
        jshintrc: '.jshintrc'
      }
    },

    // Concat
    concat: {
      js: {
        src: ['src/scripts/**/*.js'],
        dest: 'dist/scripts/main.js'
      },
    },

    // Uglify
    uglify: {
      dist: {
        src: 'dist/scripts/main.js',
        dest: 'dist/scripts/main.min.js'
      },
    },

    // Imagemin
    imagemin: {
      dist: {
        options: {
          optimizationLevel: 3,
          progressive: true,
          interlaced: true
        },
        files: [{
          expand: true,
          cwd: 'src/images',
          src: ['**/*.{png,jpg,gif}'],
          dest: 'dist/images'
        }]
      }
    },

    // Clean
    clean: {
      build: ['dist/styles', 'dist/scripts', 'dist/images']
    },

    // Notify
    notify: {
      styles: {
        options: {
          message: 'Styles task complete',
        }
      },
      scripts: {
        options: {
          message: 'Scripts task complete',
        }
      },
      images: {
        options: {
          message: 'Images task complete',
        }
      },
    },

    // Watch
    watch: {
      styles: {
        files: 'src/styles/**/*.scss',
        tasks: ['sass', 'autoprefixer', 'cssmin', 'notify:styles'],
      },
      scripts: {
        files: 'src/scripts/**/*.js',
        tasks: ['concat', 'uglify', 'notify:scripts'],
      },
      images: {
        files: 'src/images/**/*',
        tasks: ['imagemin', 'notify:images'],
      },
      livereload: {
        options: { livereload: true },
        files: [
          'dist/styles/**/*.css',
          'dist/scripts/**/*.js',
          'dist/images/**/*'
        ]
      }
    }
  });

  // Default task
  grunt.registerTask('default', [
    'jshint',
    'clean',
    'concat',
    'uglify',
    'sass',
    'autoprefixer',
    'cssmin',
    'imagemin'
  ]);

  // Load plugins
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-autoprefixer');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-contrib-sass');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-imagemin');
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-notify');

};

On gists

Automatické přihlášení - NETTE

Nette Nette-Tricks

RegisterPresenter.php #

		$this->user->login(new Nette\Security\Identity($row["id"], array(), $row));
		$this->redirectUrl($this->link('@homepage'));

On gists

Flashes

Nette

Nette-flashes.php #

  <div n:if="$flashes">
      <div n:foreach="$flashes as $flash" class="alert-{$flash->type}">{$flash->message}</div>
  </div>


  <div n:if="$form->hasErrors()">
      <div n:foreach="$form->errors as $error" class="alert-error">{$error}</div>
  </div>