From 7d90dbd2a987e6ea99a08dcf2927ec1f1fceabea Mon Sep 17 00:00:00 2001 From: Xavier ROOT Date: Wed, 13 Jan 2016 12:08:24 +0100 Subject: [PATCH] upgrade to movim 0.9 git2016-01-13 --- CHANGELOG | 3 + README.md | 2 +- sources/CHANGELOG.md | 32 +- sources/INSTALL.md | 3 +- sources/README.md | 4 +- sources/app/assets/js/favico.js | 671 +++++++++++----------- sources/app/assets/js/movim_websocket.js | 4 - sources/app/views/page.tpl | 1 - sources/app/widgets/Chats/chats.tpl | 6 +- sources/app/widgets/Chats/locales.ini | 1 + sources/app/widgets/Contact/Contact.php | 5 + sources/app/widgets/Menu/_menu_add.tpl | 2 +- sources/app/widgets/Menu/_menu_list.tpl | 6 +- sources/app/widgets/Menu/locales.ini | 2 + sources/app/widgets/Post/_post.tpl | 8 +- sources/app/widgets/Presence/Presence.php | 3 +- sources/app/widgets/Roster/roster.tpl | 2 +- sources/app/widgets/Vcard4/locales.ini | 2 +- sources/src/Movim/i18n/Locale.php | 2 + sources/themes/material/css/header.css | 106 ---- 20 files changed, 403 insertions(+), 462 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b75c4d7..e75ac8c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,8 @@ **Changelog** +1.6 ? +- Update to movim 0.9 git2016-01-13 + 1.5 2016-01-13 - Update to movim 0.9 git2016-01-07 - fix #16 (Installing movim crashes agendav) diff --git a/README.md b/README.md index 88811e4..f93ec80 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Movim is a decentralized social network, written in PHP and HTML5 and based on t It is recommended to use a "valid" certificate to use Movim, auto-signed is sometimes problematic. You might want to take a look a StartSSL or Let's Encrypt. -Provided Movim version : 0.9 git2015-01-07 +Provided Movim version : 0.9 git2016-01-13 Please read CHANGELOG. diff --git a/sources/CHANGELOG.md b/sources/CHANGELOG.md index 8ab7d96..beeee0e 100644 --- a/sources/CHANGELOG.md +++ b/sources/CHANGELOG.md @@ -1,7 +1,29 @@ Movim Changelog ================ -v0.8.1 (trunk) +v0.9 (trunk) +--------------------------- + * New User Interface for the whole project + * Removed BOSH connections and introduce pure XMPP TLS connections + * Full real-time + daemon + * New Blog engine and custom CSS support + * New post publication system + attachements supported (upload and embed links) + * Fully responsive design UI based on Material Design + * Huge code cleanup and refactoring + * Updated i18n system and new languages + * New eventing system + * New administration panel + * New dedicated chat page and emojis support + * New project icon and favicon + * New implementation for the Groups feature + * New Roster based on Angular + * Refactor the Contact management system and add a gallery on the profiles + * New universal-share bookmarklet + * CSS animations and mobile integration (FirefoxOS and Android) + * Internet Explorer 11 support + * PHP7 Support + +v0.8.1 --------------------------- * Add charts in the Statistics * Add a Caps support table @@ -23,7 +45,7 @@ v0.8.0 * Refactor the whole Movim sourcecode + clean old code * Quite all the Movim widgets are now using a full MVC system - * Rewrite the core session manager (Sessionx) + * Rewrite the core session manager (Sessionx) * Add a new localisation system + new translations * Move the Movim librairies and dependencies to Composer and convert Modl and Moxl to PSR-0 to simplify the loading and packaging of the libraries * Monolog is now the new log library for Movim @@ -118,7 +140,7 @@ v0.6.0 ### Datajar ### - * Support updating of db-schemas. + * Support updating of db-schemas. ### Translations ### @@ -139,7 +161,7 @@ v0.5.0 * Update dates (like “2 min ago”) automatically @edhelas * Clean and move UserConf in a single class @edhelas * New UI @edhelas - + ### Core ### * Integrate Datajar @etenil @@ -184,7 +206,7 @@ v0.5.0 v0.4.0 --------------------------- - * Multisession support + * Multisession support * Dynamically modify page title * image.php to built pictures from the database + ask the browser to cache them * Inscription on the Server (XMPP+Movim) diff --git a/sources/INSTALL.md b/sources/INSTALL.md index 8bc0f8d..91a6761 100644 --- a/sources/INSTALL.md +++ b/sources/INSTALL.md @@ -1,9 +1,8 @@ Movim Installation =================== -* Movim deployment tutorial: https://github.com/edhelas/movim/wiki/Install-Movim +* Movim deployment tutorial: https://github.com/movim/movim/wiki/Install-Movim You can also follow the Jappix project documentation for a full stack deployment: * The XMPP server: https://github.com/jappix/jappix/wiki/XmppServer -* The BOSH server: https://github.com/jappix/jappix/wiki/BoshServer diff --git a/sources/README.md b/sources/README.md index 6bd7e57..f07411f 100644 --- a/sources/README.md +++ b/sources/README.md @@ -3,11 +3,11 @@ Movim - Kickass Social Network Movim is a decentralized social network, written in PHP and HTML5 and based on the XMPP standard protocol. -![movim logo](https://movim.eu/sites/default/files/large_0.png) +![movim logo](https://movim.eu/img/main_top.png) Installation ------------ -Please refer to the installation instructions that are available on the GitHub Wiki : https://github.com/edhelas/movim/wiki . +Please refer to the installation instructions that are available on the GitHub Wiki : https://github.com/movim/movim/wiki . Translations diff --git a/sources/app/assets/js/favico.js b/sources/app/assets/js/favico.js index cf882b4..55b2253 100644 --- a/sources/app/assets/js/favico.js +++ b/sources/app/assets/js/favico.js @@ -1,8 +1,8 @@ /** - * @license MIT + * @license MIT or GPL-2.0 * @fileOverview Favico animations * @author Miroslav Magda, http://blog.ejci.net - * @version 0.3.7 + * @version 0.3.10 */ /** @@ -18,26 +18,28 @@ * position : 'down', * type : 'circle', * animation : 'slide', - * dataUrl: function(url){} + * dataUrl: function(url){}, + * win: top * }); */ -(function() { +(function () { - var Favico = (function(opt) { + var Favico = (function (opt) { 'use strict'; opt = (opt) ? opt : {}; var _def = { - bgColor : '#d00', - textColor : '#fff', - fontFamily : 'sans-serif', //Arial,Verdana,Times New Roman,serif,sans-serif,... - fontStyle : 'bold', //normal,italic,oblique,bold,bolder,lighter,100,200,300,400,500,600,700,800,900 - type : 'circle', - position : 'down', // down, up, left, leftup (upleft) - animation : 'slide', - elementId : false, - dataUrl : false + bgColor: '#d00', + textColor: '#fff', + fontFamily: 'sans-serif', //Arial,Verdana,Times New Roman,serif,sans-serif,... + fontStyle: 'bold', //normal,italic,oblique,bold,bolder,lighter,100,200,300,400,500,600,700,800,900 + type: 'circle', + position: 'down', // down, up, left, leftup (upleft) + animation: 'slide', + elementId: false, + dataUrl: false, + win: window }; - var _opt, _orig, _h, _w, _canvas, _context, _img, _ready, _lastBadge, _running, _readyCb, _stop, _browser, _animTimeout, _drawTimeout; + var _opt, _orig, _h, _w, _canvas, _context, _img, _ready, _lastBadge, _running, _readyCb, _stop, _browser, _animTimeout, _drawTimeout, _doc; _browser = {}; _browser.ff = typeof InstallTrigger != 'undefined'; @@ -48,13 +50,13 @@ _browser.supported = (_browser.chrome || _browser.ff || _browser.opera); var _queue = []; - _readyCb = function() { + _readyCb = function () { }; _ready = _stop = false; /** * Initialize favico */ - var init = function() { + var init = function () { //merge initial options _opt = merge(_def, opt); _opt.bgColor = hexToRgb(_opt.bgColor); @@ -62,31 +64,35 @@ _opt.position = _opt.position.toLowerCase(); _opt.animation = (animation.types['' + _opt.animation]) ? _opt.animation : _def.animation; + _doc = _opt.win.document; + var isUp = _opt.position.indexOf('up') > -1; var isLeft = _opt.position.indexOf('left') > -1; - //transform animation + //transform the animations if (isUp || isLeft) { - for (var i = 0; i < animation.types['' + _opt.animation].length; i++) { - var step = animation.types['' + _opt.animation][i]; + for (var a in animation.types) { + for (var i = 0; i < animation.types[a].length; i++) { + var step = animation.types[a][i]; - if (isUp) { - if (step.y < 0.6) { - step.y = step.y - 0.4; - } else { - step.y = step.y - 2 * step.y + (1 - step.w); + if (isUp) { + if (step.y < 0.6) { + step.y = step.y - 0.4; + } else { + step.y = step.y - 2 * step.y + (1 - step.w); + } } - } - if (isLeft) { - if (step.x < 0.6) { - step.x = step.x - 0.4; - } else { - step.x = step.x - 2 * step.x + (1 - step.h); + if (isLeft) { + if (step.x < 0.6) { + step.x = step.x - 0.4; + } else { + step.x = step.x - 2 * step.x + (1 - step.h); + } } - } - animation.types['' + _opt.animation][i] = step; + animation.types[a][i] = step; + } } } _opt.type = (type['' + _opt.type]) ? _opt.type : _def.type; @@ -97,9 +103,9 @@ //create temp image _img = document.createElement('img'); if (_orig.hasAttribute('href')) { - _img.setAttribute('src', _orig.getAttribute('href')); + _img.setAttribute('crossOrigin', 'anonymous'); //get width/height - _img.onload = function() { + _img.onload = function () { _h = (_img.height > 0) ? _img.height : 32; _w = (_img.width > 0) ? _img.width : 32; _canvas.height = _h; @@ -107,16 +113,19 @@ _context = _canvas.getContext('2d'); icon.ready(); }; + _img.setAttribute('src', _orig.getAttribute('href')); } else { + _img.onload = function () { + _h = 32; + _w = 32; + _img.height = _h; + _img.width = _w; + _canvas.height = _h; + _canvas.width = _w; + _context = _canvas.getContext('2d'); + icon.ready(); + }; _img.setAttribute('src', ''); - _h = 32; - _w = 32; - _img.height = _h; - _img.width = _w; - _canvas.height = _h; - _canvas.width = _w; - _context = _canvas.getContext('2d'); - icon.ready(); } }; @@ -127,7 +136,7 @@ /** * Icon is ready (reset icon) and start animation (if ther is any) */ - icon.ready = function() { + icon.ready = function () { _ready = true; icon.reset(); _readyCb(); @@ -135,7 +144,7 @@ /** * Reset icon to default state */ - icon.reset = function() { + icon.reset = function () { //reset if (!_ready) { return; @@ -155,11 +164,11 @@ /** * Start animation */ - icon.start = function() { + icon.start = function () { if (!_ready || _running) { return; } - var finished = function() { + var finished = function () { _lastBadge = _queue[0]; _running = false; if (_queue.length > 0) { @@ -171,19 +180,19 @@ }; if (_queue.length > 0) { _running = true; - var run = function() { + var run = function () { // apply options for this animation - ['type', 'animation', 'bgColor', 'textColor', 'fontFamily', 'fontStyle'].forEach(function(a) { - if ( a in _queue[0].options) { + ['type', 'animation', 'bgColor', 'textColor', 'fontFamily', 'fontStyle'].forEach(function (a) { + if (a in _queue[0].options) { _opt[a] = _queue[0].options[a]; } }); - animation.run(_queue[0].options, function() { + animation.run(_queue[0].options, function () { finished(); }, false); }; if (_lastBadge) { - animation.run(_lastBadge.options, function() { + animation.run(_lastBadge.options, function () { run(); }, true); } else { @@ -196,8 +205,8 @@ * Badge types */ var type = {}; - var options = function(opt) { - opt.n = (( typeof opt.n) === 'number') ? Math.abs(opt.n | 0) : opt.n; + var options = function (opt) { + opt.n = ((typeof opt.n) === 'number') ? Math.abs(opt.n | 0) : opt.n; opt.x = _w * opt.x; opt.y = _h * opt.y; opt.w = _w * opt.w; @@ -209,7 +218,7 @@ * Generate circle * @param {Object} opt Badge options */ - type.circle = function(opt) { + type.circle = function (opt) { opt = options(opt); var more = false; if (opt.len === 2) { @@ -246,8 +255,8 @@ _context.stroke(); _context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')'; //_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15)); - if (( typeof opt.n) === 'number' && opt.n > 999) { - _context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000) ) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2)); + if ((typeof opt.n) === 'number' && opt.n > 999) { + _context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2)); } else { _context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15)); } @@ -257,7 +266,7 @@ * Generate rectangle * @param {Object} opt Badge options */ - type.rectangle = function(opt) { + type.rectangle = function (opt) { opt = options(opt); var more = false; if (opt.len === 2) { @@ -278,8 +287,8 @@ _context.fillRect(opt.x, opt.y, opt.w, opt.h); _context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')'; //_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15)); - if (( typeof opt.n) === 'number' && opt.n > 999) { - _context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000) ) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2)); + if ((typeof opt.n) === 'number' && opt.n > 999) { + _context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2)); } else { _context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15)); } @@ -289,17 +298,17 @@ /** * Set badge */ - var badge = function(number, opts) { - opts = (( typeof opts) === 'string' ? { - animation : opts + var badge = function (number, opts) { + opts = ((typeof opts) === 'string' ? { + animation: opts } : opts) || {}; - _readyCb = function() { + _readyCb = function () { try { - if ( typeof (number) === 'number' ? (number > 0) : (number !== '')) { + if (typeof (number) === 'number' ? (number > 0) : (number !== '')) { var q = { - type : 'badge', - options : { - n : number + type: 'badge', + options: { + n: number } }; if ('animation' in opts && animation.types['' + opts.animation]) { @@ -308,26 +317,26 @@ if ('type' in opts && type['' + opts.type]) { q.options.type = '' + opts.type; } - ['bgColor', 'textColor'].forEach(function(o) { - if ( o in opts) { + ['bgColor', 'textColor'].forEach(function (o) { + if (o in opts) { q.options[o] = hexToRgb(opts[o]); } }); - ['fontStyle', 'fontFamily'].forEach(function(o) { - if ( o in opts) { + ['fontStyle', 'fontFamily'].forEach(function (o) { + if (o in opts) { q.options[o] = opts[o]; } }); _queue.push(q); if (_queue.length > 100) { - throw 'Too many badges requests in queue.'; + throw new Error('Too many badges requests in queue.'); } icon.start(); } else { icon.reset(); } - } catch(e) { - throw 'Error setting badge. Message: ' + e.message; + } catch (e) { + throw new Error('Error setting badge. Message: ' + e.message); } }; if (_ready) { @@ -338,21 +347,24 @@ /** * Set image as icon */ - var image = function(imageElement) { - _readyCb = function() { + var image = function (imageElement) { + _readyCb = function () { try { var w = imageElement.width; var h = imageElement.height; var newImg = document.createElement('img'); var ratio = (w / _w < h / _h) ? (w / _w) : (h / _h); + newImg.setAttribute('crossOrigin', 'anonymous'); + newImg.onload=function(){ + _context.clearRect(0, 0, _w, _h); + _context.drawImage(newImg, 0, 0, _w, _h); + link.setIcon(_canvas); + }; newImg.setAttribute('src', imageElement.getAttribute('src')); newImg.height = (h / ratio); newImg.width = (w / ratio); - _context.clearRect(0, 0, _w, _h); - _context.drawImage(newImg, 0, 0, _w, _h); - link.setIcon(_canvas); - } catch(e) { - throw 'Error setting image. Message: ' + e.message; + } catch (e) { + throw new Error('Error setting image. Message: ' + e.message); } }; if (_ready) { @@ -362,8 +374,8 @@ /** * Set video as icon */ - var video = function(videoElement) { - _readyCb = function() { + var video = function (videoElement) { + _readyCb = function () { try { if (videoElement === 'stop') { _stop = true; @@ -374,12 +386,12 @@ //var w = videoElement.width; //var h = videoElement.height; //var ratio = (w / _w < h / _h) ? (w / _w) : (h / _h); - videoElement.addEventListener('play', function() { + videoElement.addEventListener('play', function () { drawVideo(this); }, false); - } catch(e) { - throw 'Error setting video. Message: ' + e.message; + } catch (e) { + throw new Error('Error setting video. Message: ' + e.message); } }; if (_ready) { @@ -389,18 +401,18 @@ /** * Set video as icon */ - var webcam = function(action) { + var webcam = function (action) { //UR if (!window.URL || !window.URL.createObjectURL) { window.URL = window.URL || {}; - window.URL.createObjectURL = function(obj) { + window.URL.createObjectURL = function (obj) { return obj; }; } if (_browser.supported) { var newVideo = false; navigator.getUserMedia = navigator.getUserMedia || navigator.oGetUserMedia || navigator.msGetUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia; - _readyCb = function() { + _readyCb = function () { try { if (action === 'stop') { _stop = true; @@ -412,16 +424,16 @@ newVideo.width = _w; newVideo.height = _h; navigator.getUserMedia({ - video : true, - audio : false - }, function(stream) { + video: true, + audio: false + }, function (stream) { newVideo.src = URL.createObjectURL(stream); newVideo.play(); drawVideo(newVideo); - }, function() { + }, function () { }); - } catch(e) { - throw 'Error setting webcam. Message: ' + e.message; + } catch (e) { + throw new Error('Error setting webcam. Message: ' + e.message); } }; if (_ready) { @@ -442,10 +454,12 @@ try { _context.clearRect(0, 0, _w, _h); _context.drawImage(video, 0, 0, _w, _h); - } catch(e) { + } catch (e) { } - _drawTimeout = setTimeout(drawVideo, animation.duration, video); + _drawTimeout = setTimeout(function () { + drawVideo(video); + }, animation.duration); link.setIcon(_canvas); } @@ -453,11 +467,11 @@ /** * Get icon from HEAD tag or create a new element */ - link.getIcon = function() { + link.getIcon = function () { var elm = false; //get link element - var getLink = function() { - var link = document.getElementsByTagName('head')[0].getElementsByTagName('link'); + var getLink = function () { + var link = _doc.getElementsByTagName('head')[0].getElementsByTagName('link'); for (var l = link.length, i = (l - 1); i >= 0; i--) { if ((/(^|\s)icon(\s|$)/i).test(link[i].getAttribute('rel'))) { return link[i]; @@ -469,45 +483,48 @@ elm = _opt.element; } else if (_opt.elementId) { //if img element identified by elementId - elm = document.getElementById(_opt.elementId); + elm = _doc.getElementById(_opt.elementId); elm.setAttribute('href', elm.getAttribute('src')); } else { //if link element elm = getLink(); if (elm === false) { - elm = document.createElement('link'); + elm = _doc.createElement('link'); elm.setAttribute('rel', 'icon'); - document.getElementsByTagName('head')[0].appendChild(elm); + _doc.getElementsByTagName('head')[0].appendChild(elm); } } elm.setAttribute('type', 'image/png'); return elm; }; - link.setIcon = function(canvas) { + link.setIcon = function (canvas) { var url = canvas.toDataURL('image/png'); if (_opt.dataUrl) { //if using custom exporter _opt.dataUrl(url); } if (_opt.element) { + _opt.element.setAttribute('href', url); _opt.element.setAttribute('src', url); } else if (_opt.elementId) { //if is attached to element (image) - document.getElementById(_opt.elementId).setAttribute('src', url); + var elm = _doc.getElementById(_opt.elementId); + elm.setAttribute('href', url); + elm.setAttribute('src', url); } else { //if is attached to fav icon if (_browser.ff || _browser.opera) { //for FF we need to "recreate" element, atach to dom and remove old //var originalType = _orig.getAttribute('rel'); var old = _orig; - _orig = document.createElement('link'); + _orig = _doc.createElement('link'); //_orig.setAttribute('rel', originalType); if (_browser.opera) { _orig.setAttribute('rel', 'icon'); } _orig.setAttribute('rel', 'icon'); _orig.setAttribute('type', 'image/png'); - document.getElementsByTagName('head')[0].appendChild(_orig); + _doc.getElementsByTagName('head')[0].appendChild(_orig); _orig.setAttribute('href', url); if (old.parentNode) { old.parentNode.removeChild(old); @@ -522,14 +539,14 @@ //HEX to RGB convertor function hexToRgb(hex) { var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; - hex = hex.replace(shorthandRegex, function(m, r, g, b) { + hex = hex.replace(shorthandRegex, function (m, r, g, b) { return r + r + g + g + b + b; }); var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? { - r : parseInt(result[1], 16), - g : parseInt(result[2], 16), - b : parseInt(result[3], 16) + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) } : false; } @@ -553,7 +570,7 @@ * http://stackoverflow.com/questions/12536562/detect-whether-a-window-is-visible */ function isPageHidden() { - return document.hidden || document.msHidden || document.webkitHidden || document.mozHidden; + return _doc.hidden || _doc.msHidden || _doc.webkitHidden || _doc.mozHidden; } /** @@ -569,214 +586,214 @@ */ animation.types = {}; animation.types.fade = [{ - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 0.0 + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.0 }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 0.1 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 0.2 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 0.3 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 0.4 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 0.5 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 0.6 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 0.7 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 0.8 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 0.9 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 1.0 - }]; + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.1 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.2 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.3 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.4 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.5 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.6 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.7 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.8 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.9 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 1.0 + }]; animation.types.none = [{ - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 1 + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 1 }]; animation.types.pop = [{ - x : 1, - y : 1, - w : 0, - h : 0, - o : 1 + x: 1, + y: 1, + w: 0, + h: 0, + o: 1 }, { - x : 0.9, - y : 0.9, - w : 0.1, - h : 0.1, - o : 1 - }, { - x : 0.8, - y : 0.8, - w : 0.2, - h : 0.2, - o : 1 - }, { - x : 0.7, - y : 0.7, - w : 0.3, - h : 0.3, - o : 1 - }, { - x : 0.6, - y : 0.6, - w : 0.4, - h : 0.4, - o : 1 - }, { - x : 0.5, - y : 0.5, - w : 0.5, - h : 0.5, - o : 1 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 1 - }]; + x: 0.9, + y: 0.9, + w: 0.1, + h: 0.1, + o: 1 + }, { + x: 0.8, + y: 0.8, + w: 0.2, + h: 0.2, + o: 1 + }, { + x: 0.7, + y: 0.7, + w: 0.3, + h: 0.3, + o: 1 + }, { + x: 0.6, + y: 0.6, + w: 0.4, + h: 0.4, + o: 1 + }, { + x: 0.5, + y: 0.5, + w: 0.5, + h: 0.5, + o: 1 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 1 + }]; animation.types.popFade = [{ - x : 0.75, - y : 0.75, - w : 0, - h : 0, - o : 0 + x: 0.75, + y: 0.75, + w: 0, + h: 0, + o: 0 }, { - x : 0.65, - y : 0.65, - w : 0.1, - h : 0.1, - o : 0.2 - }, { - x : 0.6, - y : 0.6, - w : 0.2, - h : 0.2, - o : 0.4 - }, { - x : 0.55, - y : 0.55, - w : 0.3, - h : 0.3, - o : 0.6 - }, { - x : 0.50, - y : 0.50, - w : 0.4, - h : 0.4, - o : 0.8 - }, { - x : 0.45, - y : 0.45, - w : 0.5, - h : 0.5, - o : 0.9 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 1 - }]; + x: 0.65, + y: 0.65, + w: 0.1, + h: 0.1, + o: 0.2 + }, { + x: 0.6, + y: 0.6, + w: 0.2, + h: 0.2, + o: 0.4 + }, { + x: 0.55, + y: 0.55, + w: 0.3, + h: 0.3, + o: 0.6 + }, { + x: 0.50, + y: 0.50, + w: 0.4, + h: 0.4, + o: 0.8 + }, { + x: 0.45, + y: 0.45, + w: 0.5, + h: 0.5, + o: 0.9 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 1 + }]; animation.types.slide = [{ - x : 0.4, - y : 1, - w : 0.6, - h : 0.6, - o : 1 + x: 0.4, + y: 1, + w: 0.6, + h: 0.6, + o: 1 }, { - x : 0.4, - y : 0.9, - w : 0.6, - h : 0.6, - o : 1 - }, { - x : 0.4, - y : 0.9, - w : 0.6, - h : 0.6, - o : 1 - }, { - x : 0.4, - y : 0.8, - w : 0.6, - h : 0.6, - o : 1 - }, { - x : 0.4, - y : 0.7, - w : 0.6, - h : 0.6, - o : 1 - }, { - x : 0.4, - y : 0.6, - w : 0.6, - h : 0.6, - o : 1 - }, { - x : 0.4, - y : 0.5, - w : 0.6, - h : 0.6, - o : 1 - }, { - x : 0.4, - y : 0.4, - w : 0.6, - h : 0.6, - o : 1 - }]; + x: 0.4, + y: 0.9, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.9, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.8, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.7, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.6, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.5, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 1 + }]; /** * Run animation * @param {Object} opt Animation options @@ -784,18 +801,18 @@ * @param {Object} revert Reverse order? true|false * @param {Object} step Optional step number (frame bumber) */ - animation.run = function(opt, cb, revert, step) { + animation.run = function (opt, cb, revert, step) { var animationType = animation.types[isPageHidden() ? 'none' : _opt.animation]; if (revert === true) { - step = ( typeof step !== 'undefined') ? step : animationType.length - 1; + step = (typeof step !== 'undefined') ? step : animationType.length - 1; } else { - step = ( typeof step !== 'undefined') ? step : 0; + step = (typeof step !== 'undefined') ? step : 0; } - cb = (cb) ? cb : function() { + cb = (cb) ? cb : function () { }; if ((step < animationType.length) && (step >= 0)) { type[_opt.type](merge(opt, animationType[step])); - _animTimeout = setTimeout(function() { + _animTimeout = setTimeout(function () { if (revert) { step = step - 1; } else { @@ -813,25 +830,25 @@ //auto init init(); return { - badge : badge, - video : video, - image : image, - webcam : webcam, - reset : icon.reset, - browser : { - supported : _browser.supported + badge: badge, + video: video, + image: image, + webcam: webcam, + reset: icon.reset, + browser: { + supported: _browser.supported } }; }); // AMD / RequireJS - if ( typeof define !== 'undefined' && define.amd) { - define([], function() { + if (typeof define !== 'undefined' && define.amd) { + define([], function () { return Favico; }); } // CommonJS - else if ( typeof module !== 'undefined' && module.exports) { + else if (typeof module !== 'undefined' && module.exports) { module.exports = Favico; } // included directly via