Et alternativ til nasjonalbibliotekets egen webleser

Nasjonalbiblioteket har en leser i både HTML og Flash, men begge er for dårlige etter mitt syn. Her er noen av de tingene som jeg mener ikke fungerer optimalt:

  • Kræsjer ofte – ubrukelig på iPad
  • Dårlige muligheter for zoom
  • Dårlig kontroll over kvalitet
  • Ikke tilpasset fullscreen for iPad
  • Vanskelig å gå til bestemt side (liten scroller)
  • Vilkår i popup – unødvendig påtrengende

Dette kan du se demonstrert her: http://youtu.be/zvQaJ54-P4s

Så jeg utviklet meg en egen leser i AngularJS. Den er ikke ferdig enda, og mangler blant annet:

  • Søk etter bok – går bare til første treff
  • Søk etter tekst i bok

Men likevel er leseren fullt brukende! :-) Du finner den her: http://nbleser.herokuapp.com/

angular vertical align directive

angular.module('myApp', ['ngRoute', ...])
.directive('verticalCenter', function($window){
  // vertical center element on page
  return function(scope, element){
    var pixels;
    var w = angular.element($window);
    function setPixels(){
      var h = $window.innerHeight;
      var eh = element[0].clientHeight;
      pixels = (h - eh)/2 - 30;
      if (pixels < 50) { pixels = 50 + 'px'; }
      else             { pixels = pixels + 'px'; }
      element.css('margin-top', pixels);
    }
    setPixels();
    w.bind('resize', function(){
      setPixels();
    });
  }
});

Simple fix to lessc missing watch

Less does not have a watch function, as scss have.

Install grunt:

npm install grunt grunt-contrib-watch grunt-contrib-less

Gruntfile.js:

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    less: {
      dist: {
        options: { compress: true },
        files: {
          'css/stil.css': 'css/stil.less',
        },
      },
    },
    watch: {
      less: {
        files: 'css/stil.less',
        tasks: 'less',
      },
    },
    
  });

  // Load plugins
  grunt.loadNpmTasks('grunt-contrib-less');
  grunt.loadNpmTasks('grunt-contrib-watch');

  // Default task(s).
  grunt.registerTask('default', ['watch:less']);

};

PHP built-in web server and CakePHP rewrite rules

app/webroot/rewrite.php:

<?php
$path = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
// If the file exists then return false and let the server handle it
if (file_exists($_SERVER["DOCUMENT_ROOT"] . $path)) {
  return false;
} else {
  include __DIR__ . '/index.php';
}
?>

Then start with:

php -S localhost:8080 rewrite.php

Resource: http://www.sitepoint.com/taking-advantage-of-phps-built-in-server/