From dab5226cd7b0d2dd9af1e360e3e32715538c30aa Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Tue, 10 Mar 2015 20:23:17 +0100 Subject: [PATCH] Chapter is quite ok ajax loaded content graphics ok interactivity ok remains the video interactions --- .gitignore | 2 +- .htaccess | 2 + sites/all/modules/gui/jeemod/jeemod.module | 2 +- .../jee.scssc | Bin 113861 -> 173773 bytes sites/all/themes/gui/jee/bower.json | 3 +- .../bower_components/Peppermint/.bower.json | 42 + .../bower_components/Peppermint/Gruntfile.js | 111 +++ .../jee/bower_components/Peppermint/README.md | 224 ++++++ .../bower_components/Peppermint/bower.json | 32 + .../Peppermint/dist/peppermint.js | 716 ++++++++++++++++++ .../Peppermint/dist/peppermint.min.js | 10 + .../Peppermint/dist/peppermint.required.css | 62 ++ .../Peppermint/dist/peppermint.suggested.css | 154 ++++ .../Peppermint/dist/pure/peppermint.pure.js | 493 ++++++++++++ .../dist/pure/peppermint.pure.min.js | 9 + .../bower_components/Peppermint/package.json | 22 + .../Peppermint/src/peppermint.appearance.css | 90 +++ .../Peppermint/src/peppermint.js | 485 ++++++++++++ .../Peppermint/src/peppermint.required.css | 60 ++ sites/all/themes/gui/jee/css/jee.css | 435 +++++++---- sites/all/themes/gui/jee/css/jee.scss | 640 ++++++++++------ sites/all/themes/gui/jee/jee.info | 4 +- sites/all/themes/gui/jee/js/jee.js | 213 +++++- .../themes/gui/jee/preprocess/html.pre.php | 22 +- .../field--field-partie--chapter.tpl.php | 7 + .../themes/gui/jee/templates/field.tpl.php | 2 +- .../all/themes/gui/jee/templates/html.tpl.php | 3 +- .../templates/node--chapitre--teaser.tpl.php | 21 + .../gui/jee/templates/node--chapitre.tpl.php | 24 +- .../video-embed-field-embed-code.tpl.php | 17 + 30 files changed, 3508 insertions(+), 399 deletions(-) create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/.bower.json create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/Gruntfile.js create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/README.md create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/bower.json create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.js create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.min.js create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.required.css create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.suggested.css create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/dist/pure/peppermint.pure.js create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/dist/pure/peppermint.pure.min.js create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/package.json create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.appearance.css create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.js create mode 100644 sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.required.css create mode 100644 sites/all/themes/gui/jee/templates/field--field-partie--chapter.tpl.php create mode 100644 sites/all/themes/gui/jee/templates/node--chapitre--teaser.tpl.php create mode 100644 sites/all/themes/gui/jee/templates/video-embed-field-embed-code.tpl.php diff --git a/.gitignore b/.gitignore index c7ac499..eaea8bc 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,4 @@ sites/*/files sites/*/private *.sublime* -.sass-cache +sites/all/themes/gui/jee/.sass-cache diff --git a/.htaccess b/.htaccess index 7ccb6a2..49cd379 100644 --- a/.htaccess +++ b/.htaccess @@ -141,3 +141,5 @@ DirectoryIndex index.php index.html index.htm + +AddType application/x-web-app-manifest+json .webapp \ No newline at end of file diff --git a/sites/all/modules/gui/jeemod/jeemod.module b/sites/all/modules/gui/jeemod/jeemod.module index 69d948e..93e0638 100644 --- a/sites/all/modules/gui/jeemod/jeemod.module +++ b/sites/all/modules/gui/jeemod/jeemod.module @@ -12,7 +12,7 @@ function jeemod_menu() { ); $items['jee/chapter'] = $base+array( - 'title' => 'Matrio base ajax', + 'title' => 'jee', 'page callback' => 'jeemod_chapter', 'page arguments' => array(2), 'access callback' => TRUE, diff --git a/sites/all/themes/gui/jee/.sass-cache/06dcbe1fa5b03937e94c01bbbc1f20c6e165e878/jee.scssc b/sites/all/themes/gui/jee/.sass-cache/06dcbe1fa5b03937e94c01bbbc1f20c6e165e878/jee.scssc index 48c125128497a09044fe096ed434a0c7758197b4..718ac3511dd61ae6f25cab38c41c4c2d215e038c 100644 GIT binary patch literal 173773 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 z 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

R&HXd+VrrGY8IY1H;Uo$~lQr`uBfOFQ(c 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 literal 113861 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 diff --git a/sites/all/themes/gui/jee/bower.json b/sites/all/themes/gui/jee/bower.json index d3a4dc4..0382b5a 100644 --- a/sites/all/themes/gui/jee/bower.json +++ b/sites/all/themes/gui/jee/bower.json @@ -3,7 +3,8 @@ "dependencies": { "foundation": "~5.5.0", "jquery.transit": "~0.9.12", - "jquery.pep": "~0.6.3" + "jquery.pep": "~0.6.3", + "Peppermint": "~1.3.7" }, "version": "7.x-0.1", "authors": [ diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/.bower.json b/sites/all/themes/gui/jee/bower_components/Peppermint/.bower.json new file mode 100644 index 0000000..90de194 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/.bower.json @@ -0,0 +1,42 @@ +{ + "name": "Peppermint", + "version": "1.3.7", + "homepage": "http://wd.dizaina.net/en/scripts/peppermint/", + "authors": [ + "Oleg Korsunsky " + ], + "description": "Responsive touch-enabled slider. Tiny, supports mouse and all sorts of touch, library agnostic.", + "main": [ + "dist/peppermint.min.js", + "dist/peppermint.suggested.css" + ], + "keywords": [ + "touch", + "touch-events", + "pointer-events", + "mouse-events", + "slider", + "carousel", + "gallery", + "vanilla-js", + "framework-agnostic", + "library-agnostic" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test" + ], + "_release": "1.3.7", + "_resolution": { + "type": "version", + "tag": "1.3.7", + "commit": "cec00832caa3a1940801a0b20f84c8b9c8518b1f" + }, + "_source": "git://github.com/wilddeer/Peppermint.git", + "_target": "~1.3.7", + "_originalSource": "Peppermint", + "_direct": true +} \ No newline at end of file diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/Gruntfile.js b/sites/all/themes/gui/jee/bower_components/Peppermint/Gruntfile.js new file mode 100644 index 0000000..9b0f8f9 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/Gruntfile.js @@ -0,0 +1,111 @@ +/*global module */ +module.exports = function(grunt) { + 'use strict'; + + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + banner: '/*!\n * Peppermint touch slider\n * v. <%= pkg.version %> | <%= pkg.homepage %>\n * Copyright <%= pkg.author.name %> | <%= pkg.author.url %>\n *\n * Depends on Event Burrito (included) | https://github.com/wilddeer/Event-Burrito\n * MIT License\n */\n', + bannerPure: '/*!\n * Peppermint touch slider\n * v. <%= pkg.version %> | <%= pkg.homepage %>\n * Copyright <%= pkg.author.name %> | <%= pkg.author.url %>\n *\n * Depends on Event Burrito | https://github.com/wilddeer/Event-Burrito\n * MIT License\n */\n', + uglify: { + options: { + mangle: { + except: ['Peppermint', '$', 'jQuery', 'EventBurrito'] + } + }, + peppermint: { + files: { + 'temp/peppermint.min.js': ['src/peppermint.js'] + } + }, + burrito: { + files: { + 'temp/eventburrito.min.js': ['src/burrito/eventburrito.js'] + } + } + }, + + concat: { + options: { + banner: '<%= banner %>', + separator: '\n' + }, + full: { + src: ['src/peppermint.js','src/burrito/eventburrito.js'], + dest: 'dist/peppermint.js', + }, + min: { + src: ['temp/peppermint.min.js','temp/eventburrito.min.js'], + dest: 'dist/peppermint.min.js', + }, + pureFull: { + options: { + banner: '<%= bannerPure %>' + }, + src: ['src/peppermint.js'], + dest: 'dist/pure/peppermint.pure.js' + }, + pureMin: { + options: { + banner: '<%= bannerPure %>' + }, + src: ['temp/peppermint.min.js'], + dest: 'dist/pure/peppermint.pure.min.js' + }, + cssRequired: { + options: { + banner: '/* Peppermint minimal required styles */\n\n' + }, + src: ['src/peppermint.required.css'], + dest: 'dist/peppermint.required.css' + }, + cssSuggested: { + options: { + banner: '/* Peppermint required styles + default appearance styles */\n\n', + separator: '\n\n/* default appearance styles */\n' + }, + src: ['src/peppermint.required.css', 'src/peppermint.appearance.css'], + dest: 'dist/peppermint.suggested.css' + } + }, + + bump: { + options: { + files: ['package.json', 'bower.json'], + updateConfigs: ['pkg'], + commit: true, + commitMessage: 'tagging v. %VERSION%', + commitFiles: ['.'], + createTag: true, + tagName: '%VERSION%', + tagMessage: 'tagging v. %VERSION%', + push: false + } + }, + + shell: { + push: { + command: 'git push' + }, + + pushTags: { + command: 'git push --tags' + } + }, + + watch: { + files: ['src/**/*.js', 'src/**/*.css', 'package.json'], + tasks: ['build'] + }, + }); + + // build + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-bump'); + grunt.loadNpmTasks('grunt-shell'); + grunt.registerTask('build', ['uglify', 'concat']); + grunt.registerTask('release', ['bump-only:patch', 'uglify', 'concat', 'bump-commit', 'shell:push', 'shell:pushTags']); + grunt.registerTask('w', ['build', 'watch']); + grunt.registerTask('default', 'build'); +}; diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/README.md b/sites/all/themes/gui/jee/bower_components/Peppermint/README.md new file mode 100644 index 0000000..fd79f12 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/README.md @@ -0,0 +1,224 @@ +#Peppermint touch slider + +[Check out the demo](http://wd.dizaina.net/en/scripts/peppermint/) + +Yet another touch slider. Only better. + +- Works with mouse, [Touch Events](http://www.w3.org/TR/touch-events/), [Pointer Events](http://www.w3.org/TR/pointerevents/), old [IE10 Pointer Events](http://msdn.microsoft.com/en-us/library/ie/hh673557\(v=vs.85\).aspx) +- Responsive, works on iPhones, Androids, Windows Phones, Blackberries, Windows 8 devices +- IE7+ compatible +- Library agnostic. If jQuery is available, registers itself as a plugin. +- Uses CSS3 transforms & animations, falls back to timer animations when necessary +- Only 7.7 Kb minified +- Perfomance-optimized `touch` functions +- API and callback functions for extensibility +- [Doesn't break](http://wd.dizaina.net/en/internet-maintenance/js-sliders-and-the-tab-key/) when tab’bing + +##Kit + +- **[peppermint.min.js](https://raw.github.com/wilddeer/Peppermint/master/dist/peppermint.min.js)** – minified production script +- **[peppermint.required.css](https://raw.github.com/wilddeer/Peppermint/master/dist/peppermint.required.css)** – styles required for proper functioning +- **[peppermint.suggested.css](https://raw.github.com/wilddeer/Peppermint/master/dist/peppermint.suggested.css)** – default styles to start with (required styles included) + +Also available in [Bower](http://bower.io): + +``` +bower install Peppermint --save +``` + +##Usage + +HTML markup: + +```html +

+
...
+ +
...
+ +
...
+
+``` + +Javascript: + +```javascript +var slider = Peppermint(document.getElementById('peppermint')); +``` + +Or javascript + jQuery: + +```javascript +$('.peppermint').Peppermint(); +``` + +`peppermint-inactive` class is not required. It is replaced with `peppermint-active` during setup. + +You are free to use any other tag instead of `figure`. When using `figure`, don't forget to include [html5shiv](https://github.com/aFarkas/html5shiv), otherwise it won't work in old IEs. + +Place anything you want within the slides. + +##Settings + +Peppermint can take settings object as an optional second parameter (first when using jQuery). Default settings: + +```javascript +{ + //transition time when changing slides, ms + speed: 300, + + //transition time when changing slides after touch, ms + touchSpeed: 300, + + //slideshow enabled + slideshow: false, + + //slideshow interval, ms + slideshowInterval: 4000, + + //stop slideshow after user interacts with the slider + stopSlideshowAfterInteraction: false, + + //slide number to start with + startSlide: 0, + + //use mouse to drag the slider + mouseDrag: true, + + //don't initialize Peppermint if there's only one slide + disableIfOneSlide: true, + + //Prefix to be used with Peppermint classes, + //such as `inactive`, `active`, `mouse`, `drag`, etc. + //Don't forget to change the stylesheet appropriately! + cssPrefix: 'peppermint-', + + //show dots + dots: false, + + //prepend dots to dotsContainer (default is append) + dotsPrepend: false, + + //Element to contain dots, defaults to Peppermint's root element. + //Can be anywhere on the page. + dotsContainer: undefined, + + //element containing slides, defaults to Peppermint's root element + slidesContainer: undefined, + + //Callback function, runs at slide change. + //Receives slide number as a parameter. + onSlideChange: undefined, + + //Callback function, runs at setup end. + //Receives total number of slides as a parameter. + onSetup: undefined +} +``` + +####Examples + +JS: + +```javascript +var slider = Peppermint(document.getElementById('peppermint'), { + dots: true, + slideshow: true, + speed: 500, + slideshowInterval: 5000, + stopSlideshowAfterInteraction: true, + onSetup: function(n) { + console.log('Peppermint setup done. Slides found: ' + n); + } +}); +``` + +JS + jQuery: + +```javascript +$('.peppermint').Peppermint({ + dots: true, + slideshow: true, + speed: 500, + slideshowInterval: 5000, + stopSlideshowAfterInteraction: true, + onSetup: function(n) { + console.log('Peppermint setup done. Slides found: ' + n); + } +}); +``` + +##API + +Peppermint exposes a set of functions upon installation. These functions can be used to controll the slider externally: + +`slideTo(n)` – change active slide to `n`; + +`next()` – next slide; + +`prev()` – previous slide; + +`start()` – start slideshow; + +`stop()` – stop slideshow; + +`pause()` – pause slideshow until the next slide change; + +`getCurrentPos()` – get current slide number; + +`getSlidesNumber()` – get total number of slides; + +`recalcWidth()` – recalculate slider's and slides' widths. Usefull when the container width is changed. Width recalculation runs automatically on window resize and device orientation change. + +####Examples + +JS: + +```javascript +//init Peppermint and save the API object +var slider = Peppermint(document.getElementById('peppermint')), + //save links to HTML nodes + rightArr = document.getElementById('right-arr'), + leftArr = document.getElementById('left-arr'), + getSlidesNumberButton = document.getElementById('getslidesnumber'); + +//click `#right-arr` to go to the next slide +rightArr.addEventListener('click', slider.next, false); + +//click `#left-arr` to go to the previous slide +leftArr.addEventListener('click', slider.prev, false); + +//click `#getslidesnumber` to alert total number of slides +getSlidesNumberButton.addEventListener('click', function() { + alert('There are ' + slider.getSlidesNumber() + ' slides'); +}, false); +``` + +JS + jQuery: + +```javascript +//save jQuery link to slider's block +var slider = $('#peppermint'); + +//init Peppermint +slider.Peppermint(); + +//click `#right-arr` to go to the next slide +$('#right-arr').click(slider.data('Peppermint').next); + +//click `#left-arr` to go to the previous slide +$('#left-arr').click(slider.data('Peppermint').prev); + +//click `#getslidesnumber` to alert total number of slides +$('#getslidesnumber').click(function() { + alert('There are ' + slider.data('Peppermint').getSlidesNumber() + ' slides'); +}); +``` + +##Using Peppermint? + +Drop me a link → [:envelope: wd@dizaina.net](mailto:wd@dizaina.net). + +##License + +[MIT license](http://opensource.org/licenses/MIT). diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/bower.json b/sites/all/themes/gui/jee/bower_components/Peppermint/bower.json new file mode 100644 index 0000000..51b0af8 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/bower.json @@ -0,0 +1,32 @@ +{ + "name": "Peppermint", + "version": "1.3.7", + "homepage": "http://wd.dizaina.net/en/scripts/peppermint/", + "authors": [ + "Oleg Korsunsky " + ], + "description": "Responsive touch-enabled slider. Tiny, supports mouse and all sorts of touch, library agnostic.", + "main": [ + "dist/peppermint.min.js", + "dist/peppermint.suggested.css" + ], + "keywords": [ + "touch", + "touch-events", + "pointer-events", + "mouse-events", + "slider", + "carousel", + "gallery", + "vanilla-js", + "framework-agnostic", + "library-agnostic" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test" + ] +} diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.js b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.js new file mode 100644 index 0000000..c8576e3 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.js @@ -0,0 +1,716 @@ +/*! + * Peppermint touch slider + * v. 1.3.7 | https://github.com/wilddeer/Peppermint + * Copyright Oleg Korsunsky | http://wd.dizaina.net/ + * + * Depends on Event Burrito (included) | https://github.com/wilddeer/Event-Burrito + * MIT License + */ +function Peppermint(_this, options) { + var slider = { + slides: [], + dots: [], + left: 0 + }, + slidesNumber, + flickThreshold = 200, //Flick threshold (ms) + activeSlide = 0, + slideWidth, + dotBlock, + slideBlock, + slideshowTimeoutId, + slideshowActive, + animationTimer; + + //default options + var o = { + speed: 300, //transition between slides in ms + touchSpeed: 300, //transition between slides in ms after touch + slideshow: false, //launch slideshow at start + slideshowInterval: 4000, + stopSlideshowAfterInteraction: false, //stop slideshow after user interaction + startSlide: 0, //first slide to show + mouseDrag: true, //enable mouse drag + disableIfOneSlide: true, + cssPrefix: 'peppermint-', + dots: false, //show dots + dotsPrepend: false, //dots before slides + dotsContainer: undefined, + slidesContainer: undefined, + onSlideChange: undefined, //slide change callback + onSetup: undefined //setup callback + }; + + //merge user options into defaults + options && mergeObjects(o, options); + + var classes = { + inactive: o.cssPrefix + 'inactive', + active: o.cssPrefix + 'active', + mouse: o.cssPrefix + 'mouse', + drag: o.cssPrefix + 'drag', + slides: o.cssPrefix + 'slides', + dots: o.cssPrefix + 'dots', + activeDot: o.cssPrefix + 'active-dot', + mouseClicked: o.cssPrefix + 'mouse-clicked' + }; + + //feature detects + var support = { + transforms: testProp('transform'), + transitions: testProp('transition') + }; + + function mergeObjects(targetObj, sourceObject) { + for (var key in sourceObject) { + if (sourceObject.hasOwnProperty(key)) { + targetObj[key] = sourceObject[key]; + } + } + } + + function testProp(prop) { + var prefixes = ['Webkit', 'Moz', 'O', 'ms'], + block = document.createElement('div'); + + if (block.style[prop] !== undefined) return true; + + prop = prop.charAt(0).toUpperCase() + prop.slice(1); + for (var i in prefixes) { + if (block.style[prefixes[i]+prop] !== undefined) return true; + } + + return false; + } + + function addClass(el, cl) { + if (!new RegExp('(\\s|^)'+cl+'(\\s|$)').test(el.className)) { + el.className += ' ' + cl; + } + } + + function removeClass(el, cl) { + el.className = el.className.replace(new RegExp('(\\s+|^)'+cl+'(\\s+|$)', 'g'), ' ').replace(/^\s+|\s+$/g, ''); + } + + //n - slide number (starting from 0) + //speed - transition in ms, can be omitted + function changeActiveSlide(n, speed) { + if (n<0) { + n = 0; + } + else if (n>slidesNumber-1) { + n = slidesNumber-1; + } + + //change active dot + for (var i = slider.dots.length - 1; i >= 0; i--) { + removeClass(slider.dots[i], classes.activeDot); + } + + addClass(slider.dots[n], classes.activeDot); + + activeSlide = n; + + changePos(-n*slider.width, (speed===undefined?o.speed:speed)); + + //reset slideshow timeout whenever active slide is changed for whatever reason + stepSlideshow(); + + //API callback + o.onSlideChange && o.onSlideChange(n); + + return n; + } + + //changes position of the slider (in px) with given speed (in ms) + function changePos(pos, speed) { + var time = speed?speed+'ms':''; + + slideBlock.style.webkitTransitionDuration = + slideBlock.style.MozTransitionDuration = + slideBlock.style.msTransitionDuration = + slideBlock.style.OTransitionDuration = + slideBlock.style.transitionDuration = time; + + setPos(pos); + } + + //fallback to `setInterval` animations for UAs with no CSS transitions + function changePosFallback(pos, speed) { + animationTimer && clearInterval(animationTimer); + + if (!speed) { + setPos(pos); + return; + } + + var startTime = +new Date, + startPos = slider.left; + + animationTimer = setInterval(function() { + //rough bezier emulation + var diff, y, + elapsed = +new Date - startTime, + f = elapsed / speed, + bezier = [0, 0.7, 1, 1]; + + function getPoint(p1, p2) { + return (p2-p1)*f + p1; + } + + if (f >= 1) { + setPos(pos); + clearInterval(animationTimer); + return; + } + + diff = pos - startPos; + + y = getPoint( + getPoint(getPoint(bezier[0], bezier[1]), getPoint(bezier[1], bezier[2])), + getPoint(getPoint(bezier[1], bezier[2]), getPoint(bezier[2], bezier[3])) + ); + + setPos(Math.floor(y*diff + startPos)); + }, 15); + } + + //sets position of the slider (in px) + function setPos(pos) { + slideBlock.style.webkitTransform = 'translate('+pos+'px,0) translateZ(0)'; + slideBlock.style.msTransform = + slideBlock.style.MozTransform = + slideBlock.style.OTransform = + slideBlock.style.transform = 'translateX('+pos+'px)'; + + slider.left = pos; + } + + //`setPos` fallback for UAs with no CSS transforms support + function setPosFallback(pos) { + slideBlock.style.left = pos+'px'; + + slider.left = pos; + } + + function nextSlide() { + var n = activeSlide + 1; + + if (n > slidesNumber - 1) { + n = 0; + } + + return changeActiveSlide(n); + } + + function prevSlide() { + var n = activeSlide - 1; + + if (n < 0) { + n = slidesNumber - 1; + } + + return changeActiveSlide(n); + } + + function startSlideshow() { + slideshowActive = true; + stepSlideshow(); + } + + //sets or resets timeout before switching to the next slide + function stepSlideshow() { + if (slideshowActive) { + slideshowTimeoutId && clearTimeout(slideshowTimeoutId); + + slideshowTimeoutId = setTimeout(function() { + nextSlide(); + }, + o.slideshowInterval); + } + } + + //pauses slideshow until `stepSlideshow` is invoked + function pauseSlideshow() { + slideshowTimeoutId && clearTimeout(slideshowTimeoutId); + } + + function stopSlideshow() { + slideshowActive = false; + slideshowTimeoutId && clearTimeout(slideshowTimeoutId); + } + + //this should be invoked when the width of the slider is changed + function onWidthChange() { + slider.width = _this.offsetWidth; + + //have to do this in `px` because of webkit's rounding errors :-( + slideBlock.style.width = slider.width*slidesNumber+'px'; + for (var i = 0; i < slidesNumber; i++) { + slider.slides[i].style.width = slider.width+'px'; + } + changePos(-activeSlide*slider.width); + } + + function addEvent(el, event, func, bool) { + if (!event) return; + + el.addEventListener? el.addEventListener(event, func, !!bool): el.attachEvent('on'+event, func); + } + + //init touch events + function touchInit() { + EventBurrito(slideBlock, { + mouse: o.mouseDrag, + start: function(event, start) { + //firefox doesn't want to apply cursor from `:active` CSS rule, have to add a class :-/ + addClass(_this, classes.drag); + }, + move: function(event, start, diff, speed) { + pauseSlideshow(); //pause the slideshow when touch is in progress + + //if it's first slide and moving left or last slide and moving right -- resist! + diff.x = + diff.x / + ( + (!activeSlide && diff.x > 0 + || activeSlide == slidesNumber - 1 && diff.x < 0) + ? + (Math.abs(diff.x)/slider.width*2 + 1) + : + 1 + ); + + //change position of the slider appropriately + changePos(diff.x - slider.width*activeSlide); + }, + end: function(event, start, diff, speed) { + if (diff.x) { + var ratio = Math.abs(diff.x)/slider.width, + //How many slides to skip. Remainder > 0.25 counts for one slide. + skip = Math.floor(ratio) + (ratio - Math.floor(ratio) > 0.25?1:0), + //Super-duper formula to detect a flick. + //First, it's got to be fast enough. + //Second, if `skip==0`, 20px move is enough to switch to the next slide. + //If `skip>0`, it's enough to slide to the middle of the slide minus `slider.width/9` to skip even further. + flick = diff.time < flickThreshold+flickThreshold*skip/1.8 && Math.abs(diff.x) - skip*slider.width > (skip?-slider.width/9:20); + + skip += (flick?1:0); + + if (diff.x < 0) { + changeActiveSlide(activeSlide+skip, o.touchSpeed); + } + else { + changeActiveSlide(activeSlide-skip, o.touchSpeed); + } + + o.stopSlideshowAfterInteraction && stopSlideshow(); + } + + //remove the drag class + removeClass(_this, classes.drag); + } + }); + } + + function setup() { + var slideSource = o.slidesContainer || _this, + dotsTarget = o.dotsContainer || _this; + + if (o.disableIfOneSlide && slideSource.children.length <= 1) return; + + //If current UA doesn't support css transforms or transitions -- use fallback functions. + //(Using separate functions instead of checks for better performance) + if (!support.transforms || !!window.opera) setPos = setPosFallback; + if (!support.transitions || !!window.opera) changePos = changePosFallback; + + slideBlock = o.slidesContainer || document.createElement('div'); + addClass(slideBlock, classes.slides); + + //get slides & generate dots + for (var i = 0, l = slideSource.children.length; i < l; i++) { + var slide = slideSource.children[i], + dot = document.createElement('li'); + + slider.slides.push(slide); + + //`tabindex` makes dots tabbable + dot.setAttribute('tabindex', '0'); + dot.setAttribute('role', 'button'); + + dot.innerHTML = ''; + + (function(x, dotClosure) { + //bind events to dots + addEvent(dotClosure, 'click', function(event) { + changeActiveSlide(x); + o.stopSlideshowAfterInteraction && stopSlideshow(); + }); + + //Bind the same function to Enter key except for the `blur` part -- I dont't want + //the focus to be lost when the user is using his keyboard to navigate. + addEvent(dotClosure, 'keyup', function(event) { + if (event.keyCode == 13) { + changeActiveSlide(x); + o.stopSlideshowAfterInteraction && stopSlideshow(); + } + }); + + //Don't want to disable outlines completely for accessibility reasons. + //Instead, add class with `outline: 0` on mouseup and remove it on blur. + addEvent(dotClosure, 'mouseup', function(event) { + addClass(dotClosure, classes.mouseClicked); + }); + + //capturing fixes IE bug + addEvent(dotClosure, 'blur', function(){ + removeClass(dotClosure, classes.mouseClicked); + }, true); + + //This solves tabbing problems: + //When an element inside a slide catches focus we switch to that slide + //and reset `scrollLeft` of the slider block. + //`SetTimeout` solves Chrome's bug. + //Event capturing is used to catch events on the slide level. + //Since older IEs don't have capturing, `onfocusin` is used as a fallback. + addEvent(slide, 'focus', slide.onfocusin = function(e) { + _this.scrollLeft = 0; + setTimeout(function() { + _this.scrollLeft = 0; + }, 0); + changeActiveSlide(x); + }, true); + })(i, dot) + + slider.dots.push(dot); + } + + slidesNumber = slider.slides.length; + + slideWidth = 100/slidesNumber; + + addClass(_this, classes.active); + removeClass(_this, classes.inactive); + o.mouseDrag && addClass(_this, classes.mouse); + + slider.width = _this.offsetWidth; + + //had to do this in `px` because of webkit's rounding errors :-( + slideBlock.style.width = slider.width*slidesNumber+'px'; + for (var i = 0; i < slidesNumber; i++) { + slider.slides[i].style.width = slider.width+'px'; + slideBlock.appendChild(slider.slides[i]); + } + + if (!o.slidesContainer) _this.appendChild(slideBlock); + + //append dots + if (o.dots && slidesNumber > 1) { + dotBlock = document.createElement('ul'); + addClass(dotBlock, classes.dots); + + for (var i = 0, l = slider.dots.length; i < l; i++) { + dotBlock.appendChild(slider.dots[i]); + } + + if (o.dotsPrepend) { + dotsTarget.insertBefore(dotBlock,dotsTarget.firstChild); + } + else { + dotsTarget.appendChild(dotBlock); + } + } + + //watch for slider width changes + addEvent(window, 'resize', onWidthChange); + addEvent(window, 'orientationchange', onWidthChange); + + //init first slide, timeout to expose the API first + setTimeout(function() { + changeActiveSlide(o.startSlide, 0); + }, 0); + + //init slideshow + if (o.slideshow) startSlideshow(); + + touchInit(); + + //API callback, timeout to expose the API first + setTimeout(function() { + o.onSetup && o.onSetup(slidesNumber); + }, 0); + } + + //Init + setup(); + + //expose the API + return { + slideTo: function(slide) { + return changeActiveSlide(parseInt(slide, 10)); + }, + + next: nextSlide, + + prev: prevSlide, + + //start slideshow + start: startSlideshow, + + //stop slideshow + stop: stopSlideshow, + + //pause slideshow until the next slide change + pause: pauseSlideshow, + + //get current slide number + getCurrentPos: function() { + return activeSlide; + }, + + //get total number of slides + getSlidesNumber: function() { + return slidesNumber; + }, + + //invoke this when the slider's width is changed + recalcWidth: onWidthChange + }; +}; + +//if jQuery is present -- create a plugin +if (window.jQuery) { + (function($) { + $.fn.Peppermint = function(options) { + this.each(function() { + $(this).data('Peppermint', Peppermint(this, options)); + }); + + return this; + }; + })(window.jQuery); +} + +/*! + * Event Burrito is a touch / mouse / pointer event unifier + * https://github.com/wilddeer/Event-Burrito + * Copyright Oleg Korsunsky | http://wd.dizaina.net/ + * + * MIT License + */ +function EventBurrito(_this, options) { + + var noop = function() {}, + o = { + preventDefault: true, + clickTolerance: 0, + preventScroll: false, + mouse: true, + start: noop, + move: noop, + end: noop, + click: noop + }; + + //merge user options into defaults + options && mergeObjects(o, options); + + var support = { + pointerEvents: !!window.navigator.pointerEnabled, + msPointerEvents: !!window.navigator.msPointerEnabled + }, + start = {}, + diff = {}, + speed = {}, + stack = [], + listeners = [], + isScrolling, + eventType, + clicksAllowed = true, //flag allowing default click actions (e.g. links) + eventModel = (support.pointerEvents? 1 : (support.msPointerEvents? 2 : 0)), + events = [ + ['touchstart', 'touchmove', 'touchend', 'touchcancel'], //touch events + ['pointerdown', 'pointermove', 'pointerup', 'pointercancel'], //pointer events + ['MSPointerDown', 'MSPointerMove', 'MSPointerUp', 'MSPointerCancel'], //IE10 pointer events + ['mousedown', 'mousemove', 'mouseup', false] //mouse events + ], + //some checks for different event types + checks = [ + //touch events + function(e) { + //skip the event if it's multitouch or pinch move + return (e.touches && e.touches.length > 1) || (e.scale && e.scale !== 1); + }, + //pointer events + function(e) { + //Skip it, if: + //1. event is not primary (other pointers during multitouch), + //2. left mouse button is not pressed, + //3. mouse drag is disabled and event is not touch + return !e.isPrimary || (e.buttons && e.buttons !== 1) || (!o.mouse && e.pointerType !== 'touch' && e.pointerType !== 'pen'); + }, + //IE10 pointer events + function(e) { + //same checks as in pointer events + return !e.isPrimary || (e.buttons && e.buttons !== 1) || (!o.mouse && e.pointerType !== e.MSPOINTER_TYPE_TOUCH && e.pointerType !== e.MSPOINTER_TYPE_PEN); + }, + //mouse events + function(e) { + //skip the event if left mouse button is not pressed + //in IE7-8 `buttons` is not defined, in IE9 LMB is 0 + return (e.buttons && e.buttons !== 1); + } + ]; + + function mergeObjects(targetObj, sourceObject) { + for (var key in sourceObject) { + if (sourceObject.hasOwnProperty(key)) { + targetObj[key] = sourceObject[key]; + } + } + } + + function addEvent(el, event, func, bool) { + if (!event) return; + + el.addEventListener? el.addEventListener(event, func, !!bool): el.attachEvent('on'+event, func); + + //return event remover to easily remove anonymous functions later + return { + remove: function() { + removeEvent(el, event, func, bool); + } + }; + } + + function removeEvent(el, event, func, bool) { + if (!event) return; + + el.removeEventListener? el.removeEventListener(event, func, !!bool): el.detachEvent('on'+event, func); + } + + function preventDefault(event) { + event.preventDefault? event.preventDefault() : event.returnValue = false; + } + + function getDiff(event) { + diff = { + x: (eventType? event.clientX : event.touches[0].clientX) - start.x, + y: (eventType? event.clientY : event.touches[0].clientY) - start.y, + + time: Number(new Date) - start.time + }; + + if (diff.time - stack[stack.length - 1].time) { + for (var i = 0; i < stack.length - 1 && diff.time - stack[i].time > 80; i++); + + speed = { + x: (diff.x - stack[i].x) / (diff.time - stack[i].time), + y: (diff.y - stack[i].y) / (diff.time - stack[i].time) + }; + + if (stack.length >= 5) stack.shift(); + stack.push({x: diff.x, y: diff.y, time: diff.time}); + } + } + + function tStart(event, eType) { + clicksAllowed = true; + eventType = eType; //leak event type + + if (checks[eventType](event)) return; + + //attach event listeners to the document, so that the slider + //will continue to recieve events wherever the pointer is + addEvent(document, events[eventType][1], tMove); + addEvent(document, events[eventType][2], tEnd); + addEvent(document, events[eventType][3], tEnd); + + //fixes WebKit's cursor while dragging + if (o.preventDefault && eventType) preventDefault(event); + + //remember starting time and position + start = { + x: eventType? event.clientX : event.touches[0].clientX, + y: eventType? event.clientY : event.touches[0].clientY, + + time: Number(new Date) + }; + + //reset + isScrolling = undefined; + diff = {x:0, y:0, time: 0}; + speed = {x:0, y:0}; + stack = [{x:0, y:0, time: 0}]; + + o.start(event, start); + } + + function tMove(event) { + //if user is trying to scroll vertically -- do nothing + if ((!o.preventScroll && isScrolling) || checks[eventType](event)) return; + + getDiff(event); + + if (Math.abs(diff.x) > o.clickTolerance || Math.abs(diff.y) > o.clickTolerance) clicksAllowed = false; //if there was a move -- deny all the clicks before the next touchstart + + //check whether the user is trying to scroll vertically + if (isScrolling === undefined && eventType !== 3) { + //assign and check `isScrolling` at the same time + if (isScrolling = (Math.abs(diff.x) < Math.abs(diff.y)) && !o.preventScroll) return; + } + + if (o.preventDefault) preventDefault(event); //Prevent scrolling + + o.move(event, start, diff, speed); + } + + function tEnd(event) { + eventType && getDiff(event); + + //IE likes to focus links after touchend. + //Since we don't want to disable link outlines completely for accessibility reasons, + //we just defocus it after touch and disable the outline for `:active` links in css. + //This way the outline will remain visible when using keyboard. + !clicksAllowed && event.target && event.target.blur && event.target.blur(); + + //detach event listeners from the document + removeEvent(document, events[eventType][1], tMove); + removeEvent(document, events[eventType][2], tEnd); + removeEvent(document, events[eventType][3], tEnd); + + o.end(event, start, diff, speed); + } + + function init() { + //bind touchstart + listeners.push(addEvent(_this, events[eventModel][0], function(e) {tStart(e, eventModel);})); + //prevent stuff from dragging when using mouse + listeners.push(addEvent(_this, 'dragstart', preventDefault)); + + //bind mousedown if necessary + if (o.mouse && !eventModel) { + listeners.push(addEvent(_this, events[3][0], function(e) {tStart(e, 3);})); + } + + //No clicking during touch + listeners.push(addEvent(_this, 'click', function(event) { + clicksAllowed? o.click(event): preventDefault(event); + })); + } + + init(); + + //expose the API + return { + getClicksAllowed: function() { + return clicksAllowed; + }, + kill: function() { + for (var i = listeners.length - 1; i >= 0; i--) { + listeners[i].remove(); + } + } + } +} diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.min.js b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.min.js new file mode 100644 index 0000000..0c71c3e --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.min.js @@ -0,0 +1,10 @@ +/*! + * Peppermint touch slider + * v. 1.3.7 | https://github.com/wilddeer/Peppermint + * Copyright Oleg Korsunsky | http://wd.dizaina.net/ + * + * Depends on Event Burrito (included) | https://github.com/wilddeer/Event-Burrito + * MIT License + */ +function Peppermint(a,b){function c(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])}function d(a){var b=["Webkit","Moz","O","ms"],c=document.createElement("div");if(void 0!==c.style[a])return!0;a=a.charAt(0).toUpperCase()+a.slice(1);for(var d in b)if(void 0!==c.style[b[d]+a])return!0;return!1}function e(a,b){new RegExp("(\\s|^)"+b+"(\\s|$)").test(a.className)||(a.className+=" "+b)}function f(a,b){a.className=a.className.replace(new RegExp("(\\s+|^)"+b+"(\\s+|$)","g")," ").replace(/^\s+|\s+$/g,"")}function g(a,b){0>a?a=0:a>v-1&&(a=v-1);for(var c=C.dots.length-1;c>=0;c--)f(C.dots[c],G.activeDot);return e(C.dots[a],G.activeDot),E=a,h(-a*C.width,void 0===b?F.speed:b),o(),F.onSlideChange&&F.onSlideChange(a),a}function h(a,b){var c=b?b+"ms":"";y.style.webkitTransitionDuration=y.style.MozTransitionDuration=y.style.msTransitionDuration=y.style.OTransitionDuration=y.style.transitionDuration=c,j(a)}function i(a,b){if(B&&clearInterval(B),!b)return void j(a);var c=+new Date,d=C.left;B=setInterval(function(){function e(a,b){return(b-a)*i+a}var f,g,h=+new Date-c,i=h/b,k=[0,.7,1,1];return i>=1?(j(a),void clearInterval(B)):(f=a-d,g=e(e(e(k[0],k[1]),e(k[1],k[2])),e(e(k[1],k[2]),e(k[2],k[3]))),void j(Math.floor(g*f+d)))},15)}function j(a){y.style.webkitTransform="translate("+a+"px,0) translateZ(0)",y.style.msTransform=y.style.MozTransform=y.style.OTransform=y.style.transform="translateX("+a+"px)",C.left=a}function k(a){y.style.left=a+"px",C.left=a}function l(){var a=E+1;return a>v-1&&(a=0),g(a)}function m(){var a=E-1;return 0>a&&(a=v-1),g(a)}function n(){A=!0,o()}function o(){A&&(z&&clearTimeout(z),z=setTimeout(function(){l()},F.slideshowInterval))}function p(){z&&clearTimeout(z)}function q(){A=!1,z&&clearTimeout(z)}function r(){C.width=a.offsetWidth,y.style.width=C.width*v+"px";for(var b=0;v>b;b++)C.slides[b].style.width=C.width+"px";h(-E*C.width)}function s(a,b,c,d){b&&(a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent("on"+b,c))}function t(){EventBurrito(y,{mouse:F.mouseDrag,start:function(){e(a,G.drag)},move:function(a,b,c){p(),c.x=c.x/(!E&&c.x>0||E==v-1&&c.x<0?Math.abs(c.x)/C.width*2+1:1),h(c.x-C.width*E)},end:function(b,c,d){if(d.x){var e=Math.abs(d.x)/C.width,h=Math.floor(e)+(e-Math.floor(e)>.25?1:0),i=d.time(h?-C.width/9:20);h+=i?1:0,d.x<0?g(E+h,F.touchSpeed):g(E-h,F.touchSpeed),F.stopSlideshowAfterInteraction&&q()}f(a,G.drag)}})}function u(){var b=F.slidesContainer||a,c=F.dotsContainer||a;if(!(F.disableIfOneSlide&&b.children.length<=1)){(!H.transforms||window.opera)&&(j=k),(!H.transitions||window.opera)&&(h=i),y=F.slidesContainer||document.createElement("div"),e(y,G.slides);for(var d=0,l=b.children.length;l>d;d++){var m=b.children[d],o=document.createElement("li");C.slides.push(m),o.setAttribute("tabindex","0"),o.setAttribute("role","button"),o.innerHTML="",function(b,c){s(c,"click",function(){g(b),F.stopSlideshowAfterInteraction&&q()}),s(c,"keyup",function(a){13==a.keyCode&&(g(b),F.stopSlideshowAfterInteraction&&q())}),s(c,"mouseup",function(){e(c,G.mouseClicked)}),s(c,"blur",function(){f(c,G.mouseClicked)},!0),s(m,"focus",m.onfocusin=function(){a.scrollLeft=0,setTimeout(function(){a.scrollLeft=0},0),g(b)},!0)}(d,o),C.dots.push(o)}v=C.slides.length,w=100/v,e(a,G.active),f(a,G.inactive),F.mouseDrag&&e(a,G.mouse),C.width=a.offsetWidth,y.style.width=C.width*v+"px";for(var d=0;v>d;d++)C.slides[d].style.width=C.width+"px",y.appendChild(C.slides[d]);if(F.slidesContainer||a.appendChild(y),F.dots&&v>1){x=document.createElement("ul"),e(x,G.dots);for(var d=0,l=C.dots.length;l>d;d++)x.appendChild(C.dots[d]);F.dotsPrepend?c.insertBefore(x,c.firstChild):c.appendChild(x)}s(window,"resize",r),s(window,"orientationchange",r),setTimeout(function(){g(F.startSlide,0)},0),F.slideshow&&n(),t(),setTimeout(function(){F.onSetup&&F.onSetup(v)},0)}}var v,w,x,y,z,A,B,C={slides:[],dots:[],left:0},D=200,E=0,F={speed:300,touchSpeed:300,slideshow:!1,slideshowInterval:4e3,stopSlideshowAfterInteraction:!1,startSlide:0,mouseDrag:!0,disableIfOneSlide:!0,cssPrefix:"peppermint-",dots:!1,dotsPrepend:!1,dotsContainer:void 0,slidesContainer:void 0,onSlideChange:void 0,onSetup:void 0};b&&c(F,b);var G={inactive:F.cssPrefix+"inactive",active:F.cssPrefix+"active",mouse:F.cssPrefix+"mouse",drag:F.cssPrefix+"drag",slides:F.cssPrefix+"slides",dots:F.cssPrefix+"dots",activeDot:F.cssPrefix+"active-dot",mouseClicked:F.cssPrefix+"mouse-clicked"},H={transforms:d("transform"),transitions:d("transition")};return u(),{slideTo:function(a){return g(parseInt(a,10))},next:l,prev:m,start:n,stop:q,pause:p,getCurrentPos:function(){return E},getSlidesNumber:function(){return v},recalcWidth:r}}window.jQuery&&!function($){$.fn.Peppermint=function(a){return this.each(function(){$(this).data("Peppermint",Peppermint(this,a))}),this}}(window.jQuery); +function EventBurrito(a,b){function c(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])}function d(a,b,c,d){return b?(a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent("on"+b,c),{remove:function(){e(a,b,c,d)}}):void 0}function e(a,b,c,d){b&&(a.removeEventListener?a.removeEventListener(b,c,!!d):a.detachEvent("on"+b,c))}function f(a){a.preventDefault?a.preventDefault():a.returnValue=!1}function g(a){if(r={x:(o?a.clientX:a.touches[0].clientX)-q.x,y:(o?a.clientY:a.touches[0].clientY)-q.y,time:Number(new Date)-q.time},r.time-t[t.length-1].time){for(var b=0;b80;b++);s={x:(r.x-t[b].x)/(r.time-t[b].time),y:(r.y-t[b].y)/(r.time-t[b].time)},t.length>=5&&t.shift(),t.push({x:r.x,y:r.y,time:r.time})}}function h(a,b){v=!0,o=b,y[o](a)||(d(document,x[o][1],i),d(document,x[o][2],j),d(document,x[o][3],j),m.preventDefault&&o&&f(a),q={x:o?a.clientX:a.touches[0].clientX,y:o?a.clientY:a.touches[0].clientY,time:Number(new Date)},n=void 0,r={x:0,y:0,time:0},s={x:0,y:0},t=[{x:0,y:0,time:0}],m.start(a,q))}function i(a){!m.preventScroll&&n||y[o](a)||(g(a),(Math.abs(r.x)>m.clickTolerance||Math.abs(r.y)>m.clickTolerance)&&(v=!1),void 0===n&&3!==o&&(n=Math.abs(r.x)1||a.scale&&1!==a.scale},function(a){return!a.isPrimary||a.buttons&&1!==a.buttons||!m.mouse&&"touch"!==a.pointerType&&"pen"!==a.pointerType},function(a){return!a.isPrimary||a.buttons&&1!==a.buttons||!m.mouse&&a.pointerType!==a.MSPOINTER_TYPE_TOUCH&&a.pointerType!==a.MSPOINTER_TYPE_PEN},function(a){return a.buttons&&1!==a.buttons}];return k(),{getClicksAllowed:function(){return v},kill:function(){for(var a=u.length-1;a>=0;a--)u[a].remove()}}} \ No newline at end of file diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.required.css b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.required.css new file mode 100644 index 0000000..668efc7 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.required.css @@ -0,0 +1,62 @@ +/* Peppermint minimal required styles */ + +.peppermint.peppermint-active { + position: relative; + overflow: hidden; + padding-left: 0; + padding-right: 0; +} + +.peppermint.peppermint-active .peppermint-slides { + position: relative; + overflow: hidden; /* clearfix */ + -ms-touch-action: pan-y; + touch-action: pan-y; +} + +.peppermint.peppermint-active .peppermint-slides > * { + float: left; + margin: 0; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + tap-highlight-color: transparent; +} + +.peppermint.peppermint-active .peppermint-slides a:active, +.peppermint.peppermint-active .peppermint-slides a:active img { + outline: none; +} + +.peppermint.peppermint-active, +.peppermint.peppermint-active .peppermint-dots, +.peppermint.peppermint-active .peppermint-slides, +.peppermint.peppermint-active .peppermint-slides > * { + -webkit-transform: translate3d(0,0,0); + -ms-transform: translate3d(0,0,0); + -moz-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; +} + +.peppermint.peppermint-mouse .peppermint-slides { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: move; + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; +} + +.peppermint.peppermint-mouse.peppermint-drag .peppermint-slides * { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; +} \ No newline at end of file diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.suggested.css b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.suggested.css new file mode 100644 index 0000000..030d978 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/peppermint.suggested.css @@ -0,0 +1,154 @@ +/* Peppermint required styles + default appearance styles */ + +.peppermint.peppermint-active { + position: relative; + overflow: hidden; + padding-left: 0; + padding-right: 0; +} + +.peppermint.peppermint-active .peppermint-slides { + position: relative; + overflow: hidden; /* clearfix */ + -ms-touch-action: pan-y; + touch-action: pan-y; +} + +.peppermint.peppermint-active .peppermint-slides > * { + float: left; + margin: 0; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + tap-highlight-color: transparent; +} + +.peppermint.peppermint-active .peppermint-slides a:active, +.peppermint.peppermint-active .peppermint-slides a:active img { + outline: none; +} + +.peppermint.peppermint-active, +.peppermint.peppermint-active .peppermint-dots, +.peppermint.peppermint-active .peppermint-slides, +.peppermint.peppermint-active .peppermint-slides > * { + -webkit-transform: translate3d(0,0,0); + -ms-transform: translate3d(0,0,0); + -moz-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; +} + +.peppermint.peppermint-mouse .peppermint-slides { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: move; + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; +} + +.peppermint.peppermint-mouse.peppermint-drag .peppermint-slides * { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; +} + +/* default appearance styles */ +.peppermint { + text-align: center; +} + +.peppermint figure { + margin: 0 0 1.5em 0; +} + +.peppermint figure img { + vertical-align: top; + max-width: 100%; + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2); +} + +.peppermint figure figcaption { + font-style: italic; + color: #787575; + font-size: 0.8em; + margin-top: 0.5em; +} + +.peppermint.peppermint-active { + margin-bottom: 1.5em; +} + +.peppermint-slides { + padding-top: 0.5em; + padding-bottom: 0.5em; +} + +/* dots */ +ul.peppermint-dots { + margin: 0.6em 0; + padding: 0; + text-align: center; + list-style-type: none; +} + +.peppermint.peppermint-active ul.peppermint-dots { + margin: 0 0 0.6em 0; +} + +.peppermint.peppermint-active .peppermint-slides + ul.peppermint-dots { + margin: 0.6em 0 0 0; +} + +ul.peppermint-dots > li { + display: inline-block; + position: relative; + padding: 0.5em 0.6em; + width: 12px; + height: 12px; + cursor: pointer; + text-align: center; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + /* ie7 fallback */ + *display: inline; + *zoom: 1; +} + +ul.peppermint-dots > li.peppermint-mouse-clicked, +ul.peppermint-dots > li:active { + outline: 0; +} + +ul.peppermint-dots > li > span { + display: inline-block; + position: absolute; + top: 50%; + left: 50%; + margin: -4px 0 0 -4px; + width: 8px; + height: 8px; + border-radius: 50%; + background: #9b9890; +} + +ul.peppermint-dots > li.peppermint-active-dot > span { + margin: -6px 0 0 -6px; + width: 10px; + height: 10px; + border: 1px solid #9b9890; + background: transparent; +} diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/dist/pure/peppermint.pure.js b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/pure/peppermint.pure.js new file mode 100644 index 0000000..88ad1a5 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/pure/peppermint.pure.js @@ -0,0 +1,493 @@ +/*! + * Peppermint touch slider + * v. 1.3.7 | https://github.com/wilddeer/Peppermint + * Copyright Oleg Korsunsky | http://wd.dizaina.net/ + * + * Depends on Event Burrito | https://github.com/wilddeer/Event-Burrito + * MIT License + */ +function Peppermint(_this, options) { + var slider = { + slides: [], + dots: [], + left: 0 + }, + slidesNumber, + flickThreshold = 200, //Flick threshold (ms) + activeSlide = 0, + slideWidth, + dotBlock, + slideBlock, + slideshowTimeoutId, + slideshowActive, + animationTimer; + + //default options + var o = { + speed: 300, //transition between slides in ms + touchSpeed: 300, //transition between slides in ms after touch + slideshow: false, //launch slideshow at start + slideshowInterval: 4000, + stopSlideshowAfterInteraction: false, //stop slideshow after user interaction + startSlide: 0, //first slide to show + mouseDrag: true, //enable mouse drag + disableIfOneSlide: true, + cssPrefix: 'peppermint-', + dots: false, //show dots + dotsPrepend: false, //dots before slides + dotsContainer: undefined, + slidesContainer: undefined, + onSlideChange: undefined, //slide change callback + onSetup: undefined //setup callback + }; + + //merge user options into defaults + options && mergeObjects(o, options); + + var classes = { + inactive: o.cssPrefix + 'inactive', + active: o.cssPrefix + 'active', + mouse: o.cssPrefix + 'mouse', + drag: o.cssPrefix + 'drag', + slides: o.cssPrefix + 'slides', + dots: o.cssPrefix + 'dots', + activeDot: o.cssPrefix + 'active-dot', + mouseClicked: o.cssPrefix + 'mouse-clicked' + }; + + //feature detects + var support = { + transforms: testProp('transform'), + transitions: testProp('transition') + }; + + function mergeObjects(targetObj, sourceObject) { + for (var key in sourceObject) { + if (sourceObject.hasOwnProperty(key)) { + targetObj[key] = sourceObject[key]; + } + } + } + + function testProp(prop) { + var prefixes = ['Webkit', 'Moz', 'O', 'ms'], + block = document.createElement('div'); + + if (block.style[prop] !== undefined) return true; + + prop = prop.charAt(0).toUpperCase() + prop.slice(1); + for (var i in prefixes) { + if (block.style[prefixes[i]+prop] !== undefined) return true; + } + + return false; + } + + function addClass(el, cl) { + if (!new RegExp('(\\s|^)'+cl+'(\\s|$)').test(el.className)) { + el.className += ' ' + cl; + } + } + + function removeClass(el, cl) { + el.className = el.className.replace(new RegExp('(\\s+|^)'+cl+'(\\s+|$)', 'g'), ' ').replace(/^\s+|\s+$/g, ''); + } + + //n - slide number (starting from 0) + //speed - transition in ms, can be omitted + function changeActiveSlide(n, speed) { + if (n<0) { + n = 0; + } + else if (n>slidesNumber-1) { + n = slidesNumber-1; + } + + //change active dot + for (var i = slider.dots.length - 1; i >= 0; i--) { + removeClass(slider.dots[i], classes.activeDot); + } + + addClass(slider.dots[n], classes.activeDot); + + activeSlide = n; + + changePos(-n*slider.width, (speed===undefined?o.speed:speed)); + + //reset slideshow timeout whenever active slide is changed for whatever reason + stepSlideshow(); + + //API callback + o.onSlideChange && o.onSlideChange(n); + + return n; + } + + //changes position of the slider (in px) with given speed (in ms) + function changePos(pos, speed) { + var time = speed?speed+'ms':''; + + slideBlock.style.webkitTransitionDuration = + slideBlock.style.MozTransitionDuration = + slideBlock.style.msTransitionDuration = + slideBlock.style.OTransitionDuration = + slideBlock.style.transitionDuration = time; + + setPos(pos); + } + + //fallback to `setInterval` animations for UAs with no CSS transitions + function changePosFallback(pos, speed) { + animationTimer && clearInterval(animationTimer); + + if (!speed) { + setPos(pos); + return; + } + + var startTime = +new Date, + startPos = slider.left; + + animationTimer = setInterval(function() { + //rough bezier emulation + var diff, y, + elapsed = +new Date - startTime, + f = elapsed / speed, + bezier = [0, 0.7, 1, 1]; + + function getPoint(p1, p2) { + return (p2-p1)*f + p1; + } + + if (f >= 1) { + setPos(pos); + clearInterval(animationTimer); + return; + } + + diff = pos - startPos; + + y = getPoint( + getPoint(getPoint(bezier[0], bezier[1]), getPoint(bezier[1], bezier[2])), + getPoint(getPoint(bezier[1], bezier[2]), getPoint(bezier[2], bezier[3])) + ); + + setPos(Math.floor(y*diff + startPos)); + }, 15); + } + + //sets position of the slider (in px) + function setPos(pos) { + slideBlock.style.webkitTransform = 'translate('+pos+'px,0) translateZ(0)'; + slideBlock.style.msTransform = + slideBlock.style.MozTransform = + slideBlock.style.OTransform = + slideBlock.style.transform = 'translateX('+pos+'px)'; + + slider.left = pos; + } + + //`setPos` fallback for UAs with no CSS transforms support + function setPosFallback(pos) { + slideBlock.style.left = pos+'px'; + + slider.left = pos; + } + + function nextSlide() { + var n = activeSlide + 1; + + if (n > slidesNumber - 1) { + n = 0; + } + + return changeActiveSlide(n); + } + + function prevSlide() { + var n = activeSlide - 1; + + if (n < 0) { + n = slidesNumber - 1; + } + + return changeActiveSlide(n); + } + + function startSlideshow() { + slideshowActive = true; + stepSlideshow(); + } + + //sets or resets timeout before switching to the next slide + function stepSlideshow() { + if (slideshowActive) { + slideshowTimeoutId && clearTimeout(slideshowTimeoutId); + + slideshowTimeoutId = setTimeout(function() { + nextSlide(); + }, + o.slideshowInterval); + } + } + + //pauses slideshow until `stepSlideshow` is invoked + function pauseSlideshow() { + slideshowTimeoutId && clearTimeout(slideshowTimeoutId); + } + + function stopSlideshow() { + slideshowActive = false; + slideshowTimeoutId && clearTimeout(slideshowTimeoutId); + } + + //this should be invoked when the width of the slider is changed + function onWidthChange() { + slider.width = _this.offsetWidth; + + //have to do this in `px` because of webkit's rounding errors :-( + slideBlock.style.width = slider.width*slidesNumber+'px'; + for (var i = 0; i < slidesNumber; i++) { + slider.slides[i].style.width = slider.width+'px'; + } + changePos(-activeSlide*slider.width); + } + + function addEvent(el, event, func, bool) { + if (!event) return; + + el.addEventListener? el.addEventListener(event, func, !!bool): el.attachEvent('on'+event, func); + } + + //init touch events + function touchInit() { + EventBurrito(slideBlock, { + mouse: o.mouseDrag, + start: function(event, start) { + //firefox doesn't want to apply cursor from `:active` CSS rule, have to add a class :-/ + addClass(_this, classes.drag); + }, + move: function(event, start, diff, speed) { + pauseSlideshow(); //pause the slideshow when touch is in progress + + //if it's first slide and moving left or last slide and moving right -- resist! + diff.x = + diff.x / + ( + (!activeSlide && diff.x > 0 + || activeSlide == slidesNumber - 1 && diff.x < 0) + ? + (Math.abs(diff.x)/slider.width*2 + 1) + : + 1 + ); + + //change position of the slider appropriately + changePos(diff.x - slider.width*activeSlide); + }, + end: function(event, start, diff, speed) { + if (diff.x) { + var ratio = Math.abs(diff.x)/slider.width, + //How many slides to skip. Remainder > 0.25 counts for one slide. + skip = Math.floor(ratio) + (ratio - Math.floor(ratio) > 0.25?1:0), + //Super-duper formula to detect a flick. + //First, it's got to be fast enough. + //Second, if `skip==0`, 20px move is enough to switch to the next slide. + //If `skip>0`, it's enough to slide to the middle of the slide minus `slider.width/9` to skip even further. + flick = diff.time < flickThreshold+flickThreshold*skip/1.8 && Math.abs(diff.x) - skip*slider.width > (skip?-slider.width/9:20); + + skip += (flick?1:0); + + if (diff.x < 0) { + changeActiveSlide(activeSlide+skip, o.touchSpeed); + } + else { + changeActiveSlide(activeSlide-skip, o.touchSpeed); + } + + o.stopSlideshowAfterInteraction && stopSlideshow(); + } + + //remove the drag class + removeClass(_this, classes.drag); + } + }); + } + + function setup() { + var slideSource = o.slidesContainer || _this, + dotsTarget = o.dotsContainer || _this; + + if (o.disableIfOneSlide && slideSource.children.length <= 1) return; + + //If current UA doesn't support css transforms or transitions -- use fallback functions. + //(Using separate functions instead of checks for better performance) + if (!support.transforms || !!window.opera) setPos = setPosFallback; + if (!support.transitions || !!window.opera) changePos = changePosFallback; + + slideBlock = o.slidesContainer || document.createElement('div'); + addClass(slideBlock, classes.slides); + + //get slides & generate dots + for (var i = 0, l = slideSource.children.length; i < l; i++) { + var slide = slideSource.children[i], + dot = document.createElement('li'); + + slider.slides.push(slide); + + //`tabindex` makes dots tabbable + dot.setAttribute('tabindex', '0'); + dot.setAttribute('role', 'button'); + + dot.innerHTML = ''; + + (function(x, dotClosure) { + //bind events to dots + addEvent(dotClosure, 'click', function(event) { + changeActiveSlide(x); + o.stopSlideshowAfterInteraction && stopSlideshow(); + }); + + //Bind the same function to Enter key except for the `blur` part -- I dont't want + //the focus to be lost when the user is using his keyboard to navigate. + addEvent(dotClosure, 'keyup', function(event) { + if (event.keyCode == 13) { + changeActiveSlide(x); + o.stopSlideshowAfterInteraction && stopSlideshow(); + } + }); + + //Don't want to disable outlines completely for accessibility reasons. + //Instead, add class with `outline: 0` on mouseup and remove it on blur. + addEvent(dotClosure, 'mouseup', function(event) { + addClass(dotClosure, classes.mouseClicked); + }); + + //capturing fixes IE bug + addEvent(dotClosure, 'blur', function(){ + removeClass(dotClosure, classes.mouseClicked); + }, true); + + //This solves tabbing problems: + //When an element inside a slide catches focus we switch to that slide + //and reset `scrollLeft` of the slider block. + //`SetTimeout` solves Chrome's bug. + //Event capturing is used to catch events on the slide level. + //Since older IEs don't have capturing, `onfocusin` is used as a fallback. + addEvent(slide, 'focus', slide.onfocusin = function(e) { + _this.scrollLeft = 0; + setTimeout(function() { + _this.scrollLeft = 0; + }, 0); + changeActiveSlide(x); + }, true); + })(i, dot) + + slider.dots.push(dot); + } + + slidesNumber = slider.slides.length; + + slideWidth = 100/slidesNumber; + + addClass(_this, classes.active); + removeClass(_this, classes.inactive); + o.mouseDrag && addClass(_this, classes.mouse); + + slider.width = _this.offsetWidth; + + //had to do this in `px` because of webkit's rounding errors :-( + slideBlock.style.width = slider.width*slidesNumber+'px'; + for (var i = 0; i < slidesNumber; i++) { + slider.slides[i].style.width = slider.width+'px'; + slideBlock.appendChild(slider.slides[i]); + } + + if (!o.slidesContainer) _this.appendChild(slideBlock); + + //append dots + if (o.dots && slidesNumber > 1) { + dotBlock = document.createElement('ul'); + addClass(dotBlock, classes.dots); + + for (var i = 0, l = slider.dots.length; i < l; i++) { + dotBlock.appendChild(slider.dots[i]); + } + + if (o.dotsPrepend) { + dotsTarget.insertBefore(dotBlock,dotsTarget.firstChild); + } + else { + dotsTarget.appendChild(dotBlock); + } + } + + //watch for slider width changes + addEvent(window, 'resize', onWidthChange); + addEvent(window, 'orientationchange', onWidthChange); + + //init first slide, timeout to expose the API first + setTimeout(function() { + changeActiveSlide(o.startSlide, 0); + }, 0); + + //init slideshow + if (o.slideshow) startSlideshow(); + + touchInit(); + + //API callback, timeout to expose the API first + setTimeout(function() { + o.onSetup && o.onSetup(slidesNumber); + }, 0); + } + + //Init + setup(); + + //expose the API + return { + slideTo: function(slide) { + return changeActiveSlide(parseInt(slide, 10)); + }, + + next: nextSlide, + + prev: prevSlide, + + //start slideshow + start: startSlideshow, + + //stop slideshow + stop: stopSlideshow, + + //pause slideshow until the next slide change + pause: pauseSlideshow, + + //get current slide number + getCurrentPos: function() { + return activeSlide; + }, + + //get total number of slides + getSlidesNumber: function() { + return slidesNumber; + }, + + //invoke this when the slider's width is changed + recalcWidth: onWidthChange + }; +}; + +//if jQuery is present -- create a plugin +if (window.jQuery) { + (function($) { + $.fn.Peppermint = function(options) { + this.each(function() { + $(this).data('Peppermint', Peppermint(this, options)); + }); + + return this; + }; + })(window.jQuery); +} diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/dist/pure/peppermint.pure.min.js b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/pure/peppermint.pure.min.js new file mode 100644 index 0000000..77b6f6e --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/dist/pure/peppermint.pure.min.js @@ -0,0 +1,9 @@ +/*! + * Peppermint touch slider + * v. 1.3.7 | https://github.com/wilddeer/Peppermint + * Copyright Oleg Korsunsky | http://wd.dizaina.net/ + * + * Depends on Event Burrito | https://github.com/wilddeer/Event-Burrito + * MIT License + */ +function Peppermint(a,b){function c(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])}function d(a){var b=["Webkit","Moz","O","ms"],c=document.createElement("div");if(void 0!==c.style[a])return!0;a=a.charAt(0).toUpperCase()+a.slice(1);for(var d in b)if(void 0!==c.style[b[d]+a])return!0;return!1}function e(a,b){new RegExp("(\\s|^)"+b+"(\\s|$)").test(a.className)||(a.className+=" "+b)}function f(a,b){a.className=a.className.replace(new RegExp("(\\s+|^)"+b+"(\\s+|$)","g")," ").replace(/^\s+|\s+$/g,"")}function g(a,b){0>a?a=0:a>v-1&&(a=v-1);for(var c=C.dots.length-1;c>=0;c--)f(C.dots[c],G.activeDot);return e(C.dots[a],G.activeDot),E=a,h(-a*C.width,void 0===b?F.speed:b),o(),F.onSlideChange&&F.onSlideChange(a),a}function h(a,b){var c=b?b+"ms":"";y.style.webkitTransitionDuration=y.style.MozTransitionDuration=y.style.msTransitionDuration=y.style.OTransitionDuration=y.style.transitionDuration=c,j(a)}function i(a,b){if(B&&clearInterval(B),!b)return void j(a);var c=+new Date,d=C.left;B=setInterval(function(){function e(a,b){return(b-a)*i+a}var f,g,h=+new Date-c,i=h/b,k=[0,.7,1,1];return i>=1?(j(a),void clearInterval(B)):(f=a-d,g=e(e(e(k[0],k[1]),e(k[1],k[2])),e(e(k[1],k[2]),e(k[2],k[3]))),void j(Math.floor(g*f+d)))},15)}function j(a){y.style.webkitTransform="translate("+a+"px,0) translateZ(0)",y.style.msTransform=y.style.MozTransform=y.style.OTransform=y.style.transform="translateX("+a+"px)",C.left=a}function k(a){y.style.left=a+"px",C.left=a}function l(){var a=E+1;return a>v-1&&(a=0),g(a)}function m(){var a=E-1;return 0>a&&(a=v-1),g(a)}function n(){A=!0,o()}function o(){A&&(z&&clearTimeout(z),z=setTimeout(function(){l()},F.slideshowInterval))}function p(){z&&clearTimeout(z)}function q(){A=!1,z&&clearTimeout(z)}function r(){C.width=a.offsetWidth,y.style.width=C.width*v+"px";for(var b=0;v>b;b++)C.slides[b].style.width=C.width+"px";h(-E*C.width)}function s(a,b,c,d){b&&(a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent("on"+b,c))}function t(){EventBurrito(y,{mouse:F.mouseDrag,start:function(){e(a,G.drag)},move:function(a,b,c){p(),c.x=c.x/(!E&&c.x>0||E==v-1&&c.x<0?Math.abs(c.x)/C.width*2+1:1),h(c.x-C.width*E)},end:function(b,c,d){if(d.x){var e=Math.abs(d.x)/C.width,h=Math.floor(e)+(e-Math.floor(e)>.25?1:0),i=d.time(h?-C.width/9:20);h+=i?1:0,d.x<0?g(E+h,F.touchSpeed):g(E-h,F.touchSpeed),F.stopSlideshowAfterInteraction&&q()}f(a,G.drag)}})}function u(){var b=F.slidesContainer||a,c=F.dotsContainer||a;if(!(F.disableIfOneSlide&&b.children.length<=1)){(!H.transforms||window.opera)&&(j=k),(!H.transitions||window.opera)&&(h=i),y=F.slidesContainer||document.createElement("div"),e(y,G.slides);for(var d=0,l=b.children.length;l>d;d++){var m=b.children[d],o=document.createElement("li");C.slides.push(m),o.setAttribute("tabindex","0"),o.setAttribute("role","button"),o.innerHTML="",function(b,c){s(c,"click",function(){g(b),F.stopSlideshowAfterInteraction&&q()}),s(c,"keyup",function(a){13==a.keyCode&&(g(b),F.stopSlideshowAfterInteraction&&q())}),s(c,"mouseup",function(){e(c,G.mouseClicked)}),s(c,"blur",function(){f(c,G.mouseClicked)},!0),s(m,"focus",m.onfocusin=function(){a.scrollLeft=0,setTimeout(function(){a.scrollLeft=0},0),g(b)},!0)}(d,o),C.dots.push(o)}v=C.slides.length,w=100/v,e(a,G.active),f(a,G.inactive),F.mouseDrag&&e(a,G.mouse),C.width=a.offsetWidth,y.style.width=C.width*v+"px";for(var d=0;v>d;d++)C.slides[d].style.width=C.width+"px",y.appendChild(C.slides[d]);if(F.slidesContainer||a.appendChild(y),F.dots&&v>1){x=document.createElement("ul"),e(x,G.dots);for(var d=0,l=C.dots.length;l>d;d++)x.appendChild(C.dots[d]);F.dotsPrepend?c.insertBefore(x,c.firstChild):c.appendChild(x)}s(window,"resize",r),s(window,"orientationchange",r),setTimeout(function(){g(F.startSlide,0)},0),F.slideshow&&n(),t(),setTimeout(function(){F.onSetup&&F.onSetup(v)},0)}}var v,w,x,y,z,A,B,C={slides:[],dots:[],left:0},D=200,E=0,F={speed:300,touchSpeed:300,slideshow:!1,slideshowInterval:4e3,stopSlideshowAfterInteraction:!1,startSlide:0,mouseDrag:!0,disableIfOneSlide:!0,cssPrefix:"peppermint-",dots:!1,dotsPrepend:!1,dotsContainer:void 0,slidesContainer:void 0,onSlideChange:void 0,onSetup:void 0};b&&c(F,b);var G={inactive:F.cssPrefix+"inactive",active:F.cssPrefix+"active",mouse:F.cssPrefix+"mouse",drag:F.cssPrefix+"drag",slides:F.cssPrefix+"slides",dots:F.cssPrefix+"dots",activeDot:F.cssPrefix+"active-dot",mouseClicked:F.cssPrefix+"mouse-clicked"},H={transforms:d("transform"),transitions:d("transition")};return u(),{slideTo:function(a){return g(parseInt(a,10))},next:l,prev:m,start:n,stop:q,pause:p,getCurrentPos:function(){return E},getSlidesNumber:function(){return v},recalcWidth:r}}window.jQuery&&!function($){$.fn.Peppermint=function(a){return this.each(function(){$(this).data("Peppermint",Peppermint(this,a))}),this}}(window.jQuery); \ No newline at end of file diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/package.json b/sites/all/themes/gui/jee/bower_components/Peppermint/package.json new file mode 100644 index 0000000..0d5f400 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/package.json @@ -0,0 +1,22 @@ +{ + "name": "Peppermint", + "version": "1.3.7", + "license": "MIT", + "homepage": "https://github.com/wilddeer/Peppermint", + "repository": { + "type": "git", + "url": "https://github.com/wilddeer/Peppermint.git" + }, + "author": { + "name": "Oleg Korsunsky", + "url": "http://wd.dizaina.net/" + }, + "devDependencies": { + "grunt": "~0.4.1", + "grunt-contrib-uglify": "~0.2.5", + "grunt-contrib-concat": "~0.3.0", + "grunt-contrib-watch": "~0.5.3", + "grunt-bump": "0.0.14", + "grunt-shell": "~0.7.0" + } +} diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.appearance.css b/sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.appearance.css new file mode 100644 index 0000000..91a9f7e --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.appearance.css @@ -0,0 +1,90 @@ +.peppermint { + text-align: center; +} + +.peppermint figure { + margin: 0 0 1.5em 0; +} + +.peppermint figure img { + vertical-align: top; + max-width: 100%; + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2); +} + +.peppermint figure figcaption { + font-style: italic; + color: #787575; + font-size: 0.8em; + margin-top: 0.5em; +} + +.peppermint.peppermint-active { + margin-bottom: 1.5em; +} + +.peppermint-slides { + padding-top: 0.5em; + padding-bottom: 0.5em; +} + +/* dots */ +ul.peppermint-dots { + margin: 0.6em 0; + padding: 0; + text-align: center; + list-style-type: none; +} + +.peppermint.peppermint-active ul.peppermint-dots { + margin: 0 0 0.6em 0; +} + +.peppermint.peppermint-active .peppermint-slides + ul.peppermint-dots { + margin: 0.6em 0 0 0; +} + +ul.peppermint-dots > li { + display: inline-block; + position: relative; + padding: 0.5em 0.6em; + width: 12px; + height: 12px; + cursor: pointer; + text-align: center; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + /* ie7 fallback */ + *display: inline; + *zoom: 1; +} + +ul.peppermint-dots > li.peppermint-mouse-clicked, +ul.peppermint-dots > li:active { + outline: 0; +} + +ul.peppermint-dots > li > span { + display: inline-block; + position: absolute; + top: 50%; + left: 50%; + margin: -4px 0 0 -4px; + width: 8px; + height: 8px; + border-radius: 50%; + background: #9b9890; +} + +ul.peppermint-dots > li.peppermint-active-dot > span { + margin: -6px 0 0 -6px; + width: 10px; + height: 10px; + border: 1px solid #9b9890; + background: transparent; +} diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.js b/sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.js new file mode 100644 index 0000000..6adb726 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.js @@ -0,0 +1,485 @@ +function Peppermint(_this, options) { + var slider = { + slides: [], + dots: [], + left: 0 + }, + slidesNumber, + flickThreshold = 200, //Flick threshold (ms) + activeSlide = 0, + slideWidth, + dotBlock, + slideBlock, + slideshowTimeoutId, + slideshowActive, + animationTimer; + + //default options + var o = { + speed: 300, //transition between slides in ms + touchSpeed: 300, //transition between slides in ms after touch + slideshow: false, //launch slideshow at start + slideshowInterval: 4000, + stopSlideshowAfterInteraction: false, //stop slideshow after user interaction + startSlide: 0, //first slide to show + mouseDrag: true, //enable mouse drag + disableIfOneSlide: true, + cssPrefix: 'peppermint-', + dots: false, //show dots + dotsPrepend: false, //dots before slides + dotsContainer: undefined, + slidesContainer: undefined, + onSlideChange: undefined, //slide change callback + onSetup: undefined //setup callback + }; + + //merge user options into defaults + options && mergeObjects(o, options); + + var classes = { + inactive: o.cssPrefix + 'inactive', + active: o.cssPrefix + 'active', + mouse: o.cssPrefix + 'mouse', + drag: o.cssPrefix + 'drag', + slides: o.cssPrefix + 'slides', + dots: o.cssPrefix + 'dots', + activeDot: o.cssPrefix + 'active-dot', + mouseClicked: o.cssPrefix + 'mouse-clicked' + }; + + //feature detects + var support = { + transforms: testProp('transform'), + transitions: testProp('transition') + }; + + function mergeObjects(targetObj, sourceObject) { + for (var key in sourceObject) { + if (sourceObject.hasOwnProperty(key)) { + targetObj[key] = sourceObject[key]; + } + } + } + + function testProp(prop) { + var prefixes = ['Webkit', 'Moz', 'O', 'ms'], + block = document.createElement('div'); + + if (block.style[prop] !== undefined) return true; + + prop = prop.charAt(0).toUpperCase() + prop.slice(1); + for (var i in prefixes) { + if (block.style[prefixes[i]+prop] !== undefined) return true; + } + + return false; + } + + function addClass(el, cl) { + if (!new RegExp('(\\s|^)'+cl+'(\\s|$)').test(el.className)) { + el.className += ' ' + cl; + } + } + + function removeClass(el, cl) { + el.className = el.className.replace(new RegExp('(\\s+|^)'+cl+'(\\s+|$)', 'g'), ' ').replace(/^\s+|\s+$/g, ''); + } + + //n - slide number (starting from 0) + //speed - transition in ms, can be omitted + function changeActiveSlide(n, speed) { + if (n<0) { + n = 0; + } + else if (n>slidesNumber-1) { + n = slidesNumber-1; + } + + //change active dot + for (var i = slider.dots.length - 1; i >= 0; i--) { + removeClass(slider.dots[i], classes.activeDot); + } + + addClass(slider.dots[n], classes.activeDot); + + activeSlide = n; + + changePos(-n*slider.width, (speed===undefined?o.speed:speed)); + + //reset slideshow timeout whenever active slide is changed for whatever reason + stepSlideshow(); + + //API callback + o.onSlideChange && o.onSlideChange(n); + + return n; + } + + //changes position of the slider (in px) with given speed (in ms) + function changePos(pos, speed) { + var time = speed?speed+'ms':''; + + slideBlock.style.webkitTransitionDuration = + slideBlock.style.MozTransitionDuration = + slideBlock.style.msTransitionDuration = + slideBlock.style.OTransitionDuration = + slideBlock.style.transitionDuration = time; + + setPos(pos); + } + + //fallback to `setInterval` animations for UAs with no CSS transitions + function changePosFallback(pos, speed) { + animationTimer && clearInterval(animationTimer); + + if (!speed) { + setPos(pos); + return; + } + + var startTime = +new Date, + startPos = slider.left; + + animationTimer = setInterval(function() { + //rough bezier emulation + var diff, y, + elapsed = +new Date - startTime, + f = elapsed / speed, + bezier = [0, 0.7, 1, 1]; + + function getPoint(p1, p2) { + return (p2-p1)*f + p1; + } + + if (f >= 1) { + setPos(pos); + clearInterval(animationTimer); + return; + } + + diff = pos - startPos; + + y = getPoint( + getPoint(getPoint(bezier[0], bezier[1]), getPoint(bezier[1], bezier[2])), + getPoint(getPoint(bezier[1], bezier[2]), getPoint(bezier[2], bezier[3])) + ); + + setPos(Math.floor(y*diff + startPos)); + }, 15); + } + + //sets position of the slider (in px) + function setPos(pos) { + slideBlock.style.webkitTransform = 'translate('+pos+'px,0) translateZ(0)'; + slideBlock.style.msTransform = + slideBlock.style.MozTransform = + slideBlock.style.OTransform = + slideBlock.style.transform = 'translateX('+pos+'px)'; + + slider.left = pos; + } + + //`setPos` fallback for UAs with no CSS transforms support + function setPosFallback(pos) { + slideBlock.style.left = pos+'px'; + + slider.left = pos; + } + + function nextSlide() { + var n = activeSlide + 1; + + if (n > slidesNumber - 1) { + n = 0; + } + + return changeActiveSlide(n); + } + + function prevSlide() { + var n = activeSlide - 1; + + if (n < 0) { + n = slidesNumber - 1; + } + + return changeActiveSlide(n); + } + + function startSlideshow() { + slideshowActive = true; + stepSlideshow(); + } + + //sets or resets timeout before switching to the next slide + function stepSlideshow() { + if (slideshowActive) { + slideshowTimeoutId && clearTimeout(slideshowTimeoutId); + + slideshowTimeoutId = setTimeout(function() { + nextSlide(); + }, + o.slideshowInterval); + } + } + + //pauses slideshow until `stepSlideshow` is invoked + function pauseSlideshow() { + slideshowTimeoutId && clearTimeout(slideshowTimeoutId); + } + + function stopSlideshow() { + slideshowActive = false; + slideshowTimeoutId && clearTimeout(slideshowTimeoutId); + } + + //this should be invoked when the width of the slider is changed + function onWidthChange() { + slider.width = _this.offsetWidth; + + //have to do this in `px` because of webkit's rounding errors :-( + slideBlock.style.width = slider.width*slidesNumber+'px'; + for (var i = 0; i < slidesNumber; i++) { + slider.slides[i].style.width = slider.width+'px'; + } + changePos(-activeSlide*slider.width); + } + + function addEvent(el, event, func, bool) { + if (!event) return; + + el.addEventListener? el.addEventListener(event, func, !!bool): el.attachEvent('on'+event, func); + } + + //init touch events + function touchInit() { + EventBurrito(slideBlock, { + mouse: o.mouseDrag, + start: function(event, start) { + //firefox doesn't want to apply cursor from `:active` CSS rule, have to add a class :-/ + addClass(_this, classes.drag); + }, + move: function(event, start, diff, speed) { + pauseSlideshow(); //pause the slideshow when touch is in progress + + //if it's first slide and moving left or last slide and moving right -- resist! + diff.x = + diff.x / + ( + (!activeSlide && diff.x > 0 + || activeSlide == slidesNumber - 1 && diff.x < 0) + ? + (Math.abs(diff.x)/slider.width*2 + 1) + : + 1 + ); + + //change position of the slider appropriately + changePos(diff.x - slider.width*activeSlide); + }, + end: function(event, start, diff, speed) { + if (diff.x) { + var ratio = Math.abs(diff.x)/slider.width, + //How many slides to skip. Remainder > 0.25 counts for one slide. + skip = Math.floor(ratio) + (ratio - Math.floor(ratio) > 0.25?1:0), + //Super-duper formula to detect a flick. + //First, it's got to be fast enough. + //Second, if `skip==0`, 20px move is enough to switch to the next slide. + //If `skip>0`, it's enough to slide to the middle of the slide minus `slider.width/9` to skip even further. + flick = diff.time < flickThreshold+flickThreshold*skip/1.8 && Math.abs(diff.x) - skip*slider.width > (skip?-slider.width/9:20); + + skip += (flick?1:0); + + if (diff.x < 0) { + changeActiveSlide(activeSlide+skip, o.touchSpeed); + } + else { + changeActiveSlide(activeSlide-skip, o.touchSpeed); + } + + o.stopSlideshowAfterInteraction && stopSlideshow(); + } + + //remove the drag class + removeClass(_this, classes.drag); + } + }); + } + + function setup() { + var slideSource = o.slidesContainer || _this, + dotsTarget = o.dotsContainer || _this; + + if (o.disableIfOneSlide && slideSource.children.length <= 1) return; + + //If current UA doesn't support css transforms or transitions -- use fallback functions. + //(Using separate functions instead of checks for better performance) + if (!support.transforms || !!window.opera) setPos = setPosFallback; + if (!support.transitions || !!window.opera) changePos = changePosFallback; + + slideBlock = o.slidesContainer || document.createElement('div'); + addClass(slideBlock, classes.slides); + + //get slides & generate dots + for (var i = 0, l = slideSource.children.length; i < l; i++) { + var slide = slideSource.children[i], + dot = document.createElement('li'); + + slider.slides.push(slide); + + //`tabindex` makes dots tabbable + dot.setAttribute('tabindex', '0'); + dot.setAttribute('role', 'button'); + + dot.innerHTML = ''; + + (function(x, dotClosure) { + //bind events to dots + addEvent(dotClosure, 'click', function(event) { + changeActiveSlide(x); + o.stopSlideshowAfterInteraction && stopSlideshow(); + }); + + //Bind the same function to Enter key except for the `blur` part -- I dont't want + //the focus to be lost when the user is using his keyboard to navigate. + addEvent(dotClosure, 'keyup', function(event) { + if (event.keyCode == 13) { + changeActiveSlide(x); + o.stopSlideshowAfterInteraction && stopSlideshow(); + } + }); + + //Don't want to disable outlines completely for accessibility reasons. + //Instead, add class with `outline: 0` on mouseup and remove it on blur. + addEvent(dotClosure, 'mouseup', function(event) { + addClass(dotClosure, classes.mouseClicked); + }); + + //capturing fixes IE bug + addEvent(dotClosure, 'blur', function(){ + removeClass(dotClosure, classes.mouseClicked); + }, true); + + //This solves tabbing problems: + //When an element inside a slide catches focus we switch to that slide + //and reset `scrollLeft` of the slider block. + //`SetTimeout` solves Chrome's bug. + //Event capturing is used to catch events on the slide level. + //Since older IEs don't have capturing, `onfocusin` is used as a fallback. + addEvent(slide, 'focus', slide.onfocusin = function(e) { + _this.scrollLeft = 0; + setTimeout(function() { + _this.scrollLeft = 0; + }, 0); + changeActiveSlide(x); + }, true); + })(i, dot) + + slider.dots.push(dot); + } + + slidesNumber = slider.slides.length; + + slideWidth = 100/slidesNumber; + + addClass(_this, classes.active); + removeClass(_this, classes.inactive); + o.mouseDrag && addClass(_this, classes.mouse); + + slider.width = _this.offsetWidth; + + //had to do this in `px` because of webkit's rounding errors :-( + slideBlock.style.width = slider.width*slidesNumber+'px'; + for (var i = 0; i < slidesNumber; i++) { + slider.slides[i].style.width = slider.width+'px'; + slideBlock.appendChild(slider.slides[i]); + } + + if (!o.slidesContainer) _this.appendChild(slideBlock); + + //append dots + if (o.dots && slidesNumber > 1) { + dotBlock = document.createElement('ul'); + addClass(dotBlock, classes.dots); + + for (var i = 0, l = slider.dots.length; i < l; i++) { + dotBlock.appendChild(slider.dots[i]); + } + + if (o.dotsPrepend) { + dotsTarget.insertBefore(dotBlock,dotsTarget.firstChild); + } + else { + dotsTarget.appendChild(dotBlock); + } + } + + //watch for slider width changes + addEvent(window, 'resize', onWidthChange); + addEvent(window, 'orientationchange', onWidthChange); + + //init first slide, timeout to expose the API first + setTimeout(function() { + changeActiveSlide(o.startSlide, 0); + }, 0); + + //init slideshow + if (o.slideshow) startSlideshow(); + + touchInit(); + + //API callback, timeout to expose the API first + setTimeout(function() { + o.onSetup && o.onSetup(slidesNumber); + }, 0); + } + + //Init + setup(); + + //expose the API + return { + slideTo: function(slide) { + return changeActiveSlide(parseInt(slide, 10)); + }, + + next: nextSlide, + + prev: prevSlide, + + //start slideshow + start: startSlideshow, + + //stop slideshow + stop: stopSlideshow, + + //pause slideshow until the next slide change + pause: pauseSlideshow, + + //get current slide number + getCurrentPos: function() { + return activeSlide; + }, + + //get total number of slides + getSlidesNumber: function() { + return slidesNumber; + }, + + //invoke this when the slider's width is changed + recalcWidth: onWidthChange + }; +}; + +//if jQuery is present -- create a plugin +if (window.jQuery) { + (function($) { + $.fn.Peppermint = function(options) { + this.each(function() { + $(this).data('Peppermint', Peppermint(this, options)); + }); + + return this; + }; + })(window.jQuery); +} diff --git a/sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.required.css b/sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.required.css new file mode 100644 index 0000000..ed05b51 --- /dev/null +++ b/sites/all/themes/gui/jee/bower_components/Peppermint/src/peppermint.required.css @@ -0,0 +1,60 @@ +.peppermint.peppermint-active { + position: relative; + overflow: hidden; + padding-left: 0; + padding-right: 0; +} + +.peppermint.peppermint-active .peppermint-slides { + position: relative; + overflow: hidden; /* clearfix */ + -ms-touch-action: pan-y; + touch-action: pan-y; +} + +.peppermint.peppermint-active .peppermint-slides > * { + float: left; + margin: 0; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + tap-highlight-color: transparent; +} + +.peppermint.peppermint-active .peppermint-slides a:active, +.peppermint.peppermint-active .peppermint-slides a:active img { + outline: none; +} + +.peppermint.peppermint-active, +.peppermint.peppermint-active .peppermint-dots, +.peppermint.peppermint-active .peppermint-slides, +.peppermint.peppermint-active .peppermint-slides > * { + -webkit-transform: translate3d(0,0,0); + -ms-transform: translate3d(0,0,0); + -moz-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; +} + +.peppermint.peppermint-mouse .peppermint-slides { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: move; + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; +} + +.peppermint.peppermint-mouse.peppermint-drag .peppermint-slides * { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; +} \ No newline at end of file diff --git a/sites/all/themes/gui/jee/css/jee.css b/sites/all/themes/gui/jee/css/jee.css index 952b320..a24cf0d 100644 --- a/sites/all/themes/gui/jee/css/jee.css +++ b/sites/all/themes/gui/jee/css/jee.css @@ -3974,6 +3974,12 @@ div.messages { |_____|__|__|__|__|__| |_| |_____|__|__|_____| |_____|_____|_|___|_____|__|__|_____|__ _|_____|_____| |__| */ + /* ____ ____ _______ ____________ ________ _____ ____ ________________ _____ + / __ \/ __ \/ ____/ | / / ____/ __ \ / ____/ / / / | / __ \/_ __/ ____/ __ \/ ___/ + / / / / /_/ / __/ / |/ / __/ / / / / / / / /_/ / /| | / /_/ / / / / __/ / /_/ /\__ \ + / /_/ / ____/ /___/ /| / /___/ /_/ / / /___/ __ / ___ |/ ____/ / / / /___/ _, _/___/ / + \____/_/ /_____/_/ |_/_____/_____/ \____/_/ /_/_/ |_/_/ /_/ /_____/_/ |_|/____/ + */ } /* line 174, jee.scss */ #main > .region, #main > .region > .block-system, #main > .region > .block-system > .content { @@ -3982,161 +3988,161 @@ div.messages { height: 100%; overflow: hidden; } -/* line 189, jee.scss */ -#main #node-2::after { +/* line 190, jee.scss */ +#main #node-2.node-teaser::after { background: transparent url("../assets/img/bgd-sol.png") no-repeat center center; background: none, url("../assets/img/bgd-sol.svg") no-repeat center center; } -/* line 190, jee.scss */ -#main #node-2, #main #node-2 a { +/* line 191, jee.scss */ +#main #node-2.node-teaser, #main #node-2.node-teaser a { color: #b24c14; } -/* line 191, jee.scss */ -#main #node-2 h2.node-title, #main #node-2 h2.node-title a { +/* line 192, jee.scss */ +#main #node-2.node-teaser h2.node-title, #main #node-2.node-teaser h2.node-title a { color: #d85509; } -/* line 192, jee.scss */ -#main #node-2 .field-name-field-vignette { +/* line 193, jee.scss */ +#main #node-2.node-teaser .field-name-field-vignette { background: transparent url("../assets/img/shadow-sol.png") no-repeat center center; background: none, url("../assets/img/shadow-sol.svg") no-repeat center center; } -/* line 193, jee.scss */ -#main #node-2 .line { +/* line 194, jee.scss */ +#main #node-2.node-teaser .line { background-color: #ea5b0c; } -/* line 197, jee.scss */ -#main #node-3::after { +/* line 200, jee.scss */ +#main #node-3.node-teaser::after { background: transparent url("../assets/img/bgd-dph.png") no-repeat center center; background: none, url("../assets/img/bgd-dph.svg") no-repeat center center; } -/* line 198, jee.scss */ -#main #node-3, #main #node-3 a { +/* line 201, jee.scss */ +#main #node-3.node-teaser, #main #node-3.node-teaser a { color: #686b00; } -/* line 199, jee.scss */ -#main #node-3 h2.node-title, #main #node-3 h2.node-title a { +/* line 202, jee.scss */ +#main #node-3.node-teaser h2.node-title, #main #node-3.node-teaser h2.node-title a { color: #afaf00; } -/* line 200, jee.scss */ -#main #node-3 .field-name-field-vignette { +/* line 203, jee.scss */ +#main #node-3.node-teaser .field-name-field-vignette { background: transparent url("../assets/img/shadow-dph.png") no-repeat center center; background: none, url("../assets/img/shadow-dph.svg") no-repeat center center; } -/* line 201, jee.scss */ -#main #node-3 .line { +/* line 204, jee.scss */ +#main #node-3.node-teaser .line { background-color: #cecd00; } -/* line 205, jee.scss */ -#main #node-4::after { +/* line 210, jee.scss */ +#main #node-4.node-teaser::after { background: transparent url("../assets/img/bgd-sub.png") no-repeat center center; background: none, url("../assets/img/bgd-sub.svg") no-repeat center center; } -/* line 206, jee.scss */ -#main #node-4, #main #node-4 a { +/* line 211, jee.scss */ +#main #node-4.node-teaser, #main #node-4.node-teaser a { color: #b71330; } -/* line 207, jee.scss */ -#main #node-4 h2.node-title, #main #node-4 h2.node-title a { +/* line 212, jee.scss */ +#main #node-4.node-teaser h2.node-title, #main #node-4.node-teaser h2.node-title a { color: #cd0734; } -/* line 208, jee.scss */ -#main #node-4 .field-name-field-vignette { +/* line 213, jee.scss */ +#main #node-4.node-teaser .field-name-field-vignette { background: transparent url("../assets/img/shadow-sub.png") no-repeat center center; background: none, url("../assets/img/shadow-sub.svg") no-repeat center center; } -/* line 209, jee.scss */ -#main #node-4 .line { +/* line 214, jee.scss */ +#main #node-4.node-teaser .line { background-color: #de003a; } -/* line 213, jee.scss */ -#main #node-5::after { +/* line 220, jee.scss */ +#main #node-5.node-teaser::after { background: transparent url("../assets/img/bgd-bc.png") no-repeat center center; background: none, url("../assets/img/bgd-bc.svg") no-repeat center center; } -/* line 214, jee.scss */ -#main #node-5, #main #node-5 a { +/* line 221, jee.scss */ +#main #node-5.node-teaser, #main #node-5.node-teaser a { color: #033d6f; } -/* line 215, jee.scss */ -#main #node-5 h2.node-title, #main #node-5 h2.node-title a { +/* line 222, jee.scss */ +#main #node-5.node-teaser h2.node-title, #main #node-5.node-teaser h2.node-title a { color: #024b87; } -/* line 216, jee.scss */ -#main #node-5 .field-name-field-vignette { +/* line 223, jee.scss */ +#main #node-5.node-teaser .field-name-field-vignette { background: transparent url("../assets/img/shadow-bc.png") no-repeat center center; background: none, url("../assets/img/shadow-bc.svg") no-repeat center center; } -/* line 217, jee.scss */ -#main #node-5 .line { +/* line 224, jee.scss */ +#main #node-5.node-teaser .line { background-color: #0066b1; } -/* line 221, jee.scss */ -#main #node-6::after { +/* line 230, jee.scss */ +#main #node-6.node-teaser::after { background: transparent url("../assets/img/bgd-opp.png") no-repeat center center; background: none, url("../assets/img/bgd-opp.svg") no-repeat center center; } -/* line 222, jee.scss */ -#main #node-6, #main #node-6 a { +/* line 231, jee.scss */ +#main #node-6.node-teaser, #main #node-6.node-teaser a { color: #7f1965; } -/* line 223, jee.scss */ -#main #node-6 h2.node-title, #main #node-6 h2.node-title a { +/* line 232, jee.scss */ +#main #node-6.node-teaser h2.node-title, #main #node-6.node-teaser h2.node-title a { color: #941b80; } -/* line 224, jee.scss */ -#main #node-6 .field-name-field-vignette { +/* line 233, jee.scss */ +#main #node-6.node-teaser .field-name-field-vignette { background: transparent url("../assets/img/shadow-opp.png") no-repeat center center; background: none, url("../assets/img/shadow-opp.svg") no-repeat center center; } -/* line 225, jee.scss */ -#main #node-6 .line { +/* line 234, jee.scss */ +#main #node-6.node-teaser .line { background-color: #af1380; } -/* line 229, jee.scss */ -#main #node-7::after { +/* line 240, jee.scss */ +#main #node-7.node-teaser::after { background: transparent url("../assets/img/bgd-dub.png") no-repeat center center; background: none, url("../assets/img/bgd-dub.svg") no-repeat center center; } -/* line 230, jee.scss */ -#main #node-7, #main #node-7 a { +/* line 241, jee.scss */ +#main #node-7.node-teaser, #main #node-7.node-teaser a { color: #22742c; } -/* line 231, jee.scss */ -#main #node-7 h2.node-title, #main #node-7 h2.node-title a { +/* line 242, jee.scss */ +#main #node-7.node-teaser h2.node-title, #main #node-7.node-teaser h2.node-title a { color: #288d80; } -/* line 232, jee.scss */ -#main #node-7 .field-name-field-vignette { +/* line 243, jee.scss */ +#main #node-7.node-teaser .field-name-field-vignette { background: transparent url("../assets/img/shadow-dub.png") no-repeat center center; background: none, url("../assets/img/shadow-dub.svg") no-repeat center center; } -/* line 233, jee.scss */ -#main #node-7 .line { +/* line 244, jee.scss */ +#main #node-7.node-teaser .line { background-color: #62a530; } -/* line 237, jee.scss */ -#main #node-8::after { +/* line 250, jee.scss */ +#main #node-8.node-teaser::after { background: transparent url("../assets/img/bgd-juso.png") no-repeat center center; background: none, url("../assets/img/bgd-juso.svg") no-repeat center center; } -/* line 238, jee.scss */ -#main #node-8, #main #node-8 a { +/* line 251, jee.scss */ +#main #node-8.node-teaser, #main #node-8.node-teaser a { color: #0b7f8a; } -/* line 239, jee.scss */ -#main #node-8 h2.node-title, #main #node-8 h2.node-title a { +/* line 252, jee.scss */ +#main #node-8.node-teaser h2.node-title, #main #node-8.node-teaser h2.node-title a { color: #009aa8; } -/* line 240, jee.scss */ -#main #node-8 .field-name-field-vignette { +/* line 253, jee.scss */ +#main #node-8.node-teaser .field-name-field-vignette { background: transparent url("../assets/img/shadow-juso.png") no-repeat center center; background: none, url("../assets/img/shadow-juso.svg") no-repeat center center; } -/* line 241, jee.scss */ -#main #node-8 .line { +/* line 254, jee.scss */ +#main #node-8.node-teaser .line { background-color: #33b4b5; } -/* line 251, jee.scss */ +/* line 265, jee.scss */ #main .node-chapitre.node-teaser { z-index: 2; position: absolute; @@ -4147,31 +4153,38 @@ div.messages { _/ // /| / / / / /___/ _, _/ ___ / /___ / / _/ / | |/ // / / / / /___ /___/_/ |_/ /_/ /_____/_/ |_/_/ |_\____/ /_/ /___/ |___/___/ /_/ /_____/ */ - /* - ____ _____ _____ _____ _____ __ _____ _____ _____ ____ _____ - | \| __| __| _ | | | ||_ _| | | | \| __| - | | | __| __| | | | |__| | | | | | | | | | __| - |____/|_____|__| |__|__|_____|_____|_| |_|_|_|_____|____/|_____| + /* + ____ _____ _____ _____ _____ __ _____ _____ _____ ____ _____ + | \| __| __| _ | | | ||_ _| | | | \| __| + | | | __| __| | | | |__| | | | | | | | | | __| + |____/|_____|__| |__|__|_____|_____|_| |_|_|_|_____|____/|_____| - */ + */ opacity: 1; -webkit-transition: 1s ease-out; transition: 1s ease-out; -webkit-transition-property: opacity; transition-property: opacity; - /* - _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ ____ _____ - | _ | __ | __| | | | __| | | | | | | \| __| - | __| -| __| | |- -| __| | | | | | | | | | | | __| - |__| |__|__|_____|\___/|_____|_____|_____| |_|_|_|_____|____/|_____| + /* + _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ ____ _____ + | _ | __ | __| | | | __| | | | | | | \| __| + | __| -| __| | |- -| __| | | | | | | | | | | | __| + |__| |__|__|_____|\___/|_____|_____|_____| |_|_|_|_____|____/|_____| - */ + */ /* _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ ____ _____ | | |_ _| | __| _ |_ _| __| | | | \| __| | | | |- -| | | |- -| | | | | | | __| | | | | | | | | __| |_|_|_|_____| |_| |_____|_____|__|__| |_| |_____| |_|_|_|_____|____/|_____| */ + /* + _____ _____ _____ _____ _____ _____ _____ ____ _____ _____ _____ __ _____ __ __ _____ ____ + | | | | _ | _ |_ _| __| __ | | \| | __| _ | | | _ | | | __| \ + | --| | | __| | | | __| -| | | |- -|__ | __| |__| |_ _| __| | | + |_____|__|__|__|__|__| |_| |_____|__|__| |____/|_____|_____|__| |_____|__|__| |_| |_____|____/ + + */ /* _____________ ____________ ___ __ _____ __ _ __ __ _ _ / ____/ ____/ | / / ____/ __ \/ | / / / ___/ _/_/___ ____ ____ (_)___ / /____ _________ ______/ /_(_) _____ | | @@ -4181,7 +4194,7 @@ div.messages { |_| /_/ */ } -/* line 274, jee.scss */ +/* line 288, jee.scss */ #main .node-chapitre.node-teaser h2.node-title { -webkit-transform: none; -ms-transform: none; @@ -4195,11 +4208,11 @@ div.messages { transition-property: transform; z-index: 5; } -/* line 281, jee.scss */ +/* line 295, jee.scss */ #main .node-chapitre.node-teaser > .content { position: relative; } -/* line 282, jee.scss */ +/* line 296, jee.scss */ #main .node-chapitre.node-teaser .texts { opacity: 0; height: 1px; @@ -4210,7 +4223,7 @@ div.messages { transition-property: opacity height; position: absolute; } -/* line 288, jee.scss */ +/* line 302, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-partie { opacity: 0; position: absolute; @@ -4219,12 +4232,12 @@ div.messages { -webkit-transition-property: opacity -webkit-transform; transition-property: opacity transform; } -/* line 294, jee.scss */ +/* line 308, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-partie:nth-child(2) { z-index: 2; opacity: 1; } -/* line 298, jee.scss */ +/* line 312, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-partie:nth-child(2) > .field-type-text { opacity: 0; -webkit-transition: 1s ease-out 0.9s; @@ -4232,12 +4245,12 @@ div.messages { -webkit-transition-property: opacity; transition-property: opacity; } -/* line 303, jee.scss */ +/* line 317, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-partie:nth-child(2) > .field-name-field-vignette { cursor: pointer; z-index: 2; } -/* line 306, jee.scss */ +/* line 320, jee.scss */ #main .node-chapitre.node-teaser:after { opacity: 0; -webkit-transition: 2s ease-in; @@ -4249,11 +4262,11 @@ div.messages { bottom: 2px; right: 2px; } -/* line 324, jee.scss */ +/* line 338, jee.scss */ #main .node-chapitre.node-teaser.previewed { z-index: 100; } -/* line 326, jee.scss */ +/* line 340, jee.scss */ #main .node-chapitre.node-teaser.previewed:after { opacity: 1; top: 2em; @@ -4261,40 +4274,44 @@ div.messages { right: -12em; bottom: -30em; } -/* line 333, jee.scss */ +/* line 347, jee.scss */ #main .node-chapitre.node-teaser.previewed h2.node-title { -webkit-transform: scale(2, 2); -ms-transform: scale(2, 2); transform: scale(2, 2); } -/* line 334, jee.scss */ +/* line 348, jee.scss */ #main .node-chapitre.node-teaser.previewed .texts { opacity: 1; height: 8em; } -/* line 335, jee.scss */ +/* line 349, jee.scss */ #main .node-chapitre.node-teaser.previewed .field-name-field-partie { opacity: 1; z-index: 0; } -/* line 338, jee.scss */ +/* line 352, jee.scss */ #main .node-chapitre.node-teaser.previewed .field-name-field-partie > .field { opacity: 1; z-index: -1; cursor: default; } -/* line 348, jee.scss */ +/* line 362, jee.scss */ #main .node-chapitre.node-teaser.mitigated { opacity: 0.3; } -/* line 361, jee.scss */ +/* line 373, jee.scss */ +.chapter-displayed #main .node-chapitre.node-teaser { + opacity: 0.1; +} +/* line 385, jee.scss */ #main .node-chapitre.node-teaser:after { content: " "; background-size: contain !important; position: absolute; z-index: -1; } -/* line 368, jee.scss */ +/* line 392, jee.scss */ #main .node-chapitre.node-teaser h2.node-title { font-family: "epflulb"; font-weight: normal; @@ -4305,30 +4322,30 @@ div.messages { z-index: 5; } @media only screen and (min-width: 64.063em) { - /* line 368, jee.scss */ + /* line 392, jee.scss */ #main .node-chapitre.node-teaser h2.node-title { font-size: 1.3em; } } @media only screen and (min-width: 90.063em) { - /* line 368, jee.scss */ + /* line 392, jee.scss */ #main .node-chapitre.node-teaser h2.node-title { font-size: 1.8em; } } -/* line 388, jee.scss */ +/* line 412, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-comprendre { min-width: 16em; } -/* line 389, jee.scss */ +/* line 413, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-comprendre h1, #main .node-chapitre.node-teaser .field-name-field-comprendre h2, #main .node-chapitre.node-teaser .field-name-field-comprendre h3, #main .node-chapitre.node-teaser .field-name-field-comprendre h4, #main .node-chapitre.node-teaser .field-name-field-comprendre h5, #main .node-chapitre.node-teaser .field-name-field-comprendre h6 { display: none !important; } -/* line 391, jee.scss */ +/* line 415, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-comprendre p { margin: 0; } -/* line 395, jee.scss */ +/* line 419, jee.scss */ #main .node-chapitre.node-teaser ul.links { display: block; margin: 0; @@ -4337,11 +4354,11 @@ div.messages { position: relative; width: 100%; } -/* line 397, jee.scss */ +/* line 421, jee.scss */ #main .node-chapitre.node-teaser ul.links li.node-readmore { padding: 0; } -/* line 399, jee.scss */ +/* line 423, jee.scss */ #main .node-chapitre.node-teaser ul.links li.node-readmore a { display: inline-block; height: 25px; @@ -4353,12 +4370,12 @@ div.messages { background: transparent url("../assets/img/readmore-btn.png") no-repeat right center; background: none, url("../assets/img/readmore-btn.svg") no-repeat right center; } -/* line 412, jee.scss */ +/* line 436, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-partie { clear: both; padding-top: 1em; } -/* line 416, jee.scss */ +/* line 440, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-vignette { position: relative; float: left; @@ -4369,28 +4386,28 @@ div.messages { margin-left: 0; background-size: contain; } -/* line 429, jee.scss */ +/* line 453, jee.scss */ #main .node-chapitre.node-teaser .field-type-text { min-width: 16em; } -/* line 430, jee.scss */ +/* line 454, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-titre { font-family: "epflul"; font-size: 1.6em; line-height: 1.1; } -/* line 435, jee.scss */ +/* line 459, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-sous-titre { font-family: "epflul"; font-size: 1.4em; line-height: 1.2; } -/* line 440, jee.scss */ +/* line 464, jee.scss */ #main .node-chapitre.node-teaser .field-name-field-description { font-size: 0.88em; line-height: 1.2; } -/* line 446, jee.scss */ +/* line 470, jee.scss */ #main .node-chapitre.node-teaser .line { z-index: -1; position: absolute; @@ -4402,13 +4419,177 @@ div.messages { width: 2px; opacity: 0.4; } -/* line 457, jee.scss */ -#main .chapter-wrapper { +/* line 489, jee.scss */ +#main #chapter-wrapper { position: absolute; top: 0; left: 0; - bottom: 0; - right: 0; + width: 100%; + height: 100%; + z-index: -1; + opacity: 0; + -webkit-transition: 2s ease-out; + transition: 2s ease-out; + -webkit-transition-property: opacity; + transition-property: opacity; +} +/* line 498, jee.scss */ +#main #chapter-wrapper.visible { + opacity: 1; + z-index: 500; + /* + _____ _____ __ _____ _____ _____ _____ __ __ _____ _____ ____ _____ + | | | | | | __ | __| | __ | | | | | | | \| __| + | --| | | |__| | | -|__ | | __ -|_ _| | | | | | | | | __| + |_____|_____|_____|_____|__|__|_____| |_____| |_| |_|___|_____|____/|_____| + */ + /* + _____ _____ _____ _____ _____ _____ _____ _____ _____ + | __| __| | | __| __ | | | | | __| + | | | __| | | | __| -|- -| | | | | __| + |_____|_____|_|___|_____|__|__|_____|__ _|_____|_____| + |__| + */ +} +/* line 509, jee.scss */ +#main #chapter-wrapper.visible #node-2 .field-type-text-long .field-label, +#main #chapter-wrapper.visible #node-2 h2.node-title, +#main #chapter-wrapper.visible #node-2 .field-name-field-dbatre li:before { + color: #ea5b0c; +} +/* line 516, jee.scss */ +#main #chapter-wrapper.visible #node-3 .field-type-text-long .field-label, +#main #chapter-wrapper.visible #node-3 h2.node-title, +#main #chapter-wrapper.visible #node-3 .field-name-field-dbatre li:before { + color: #cecd00; +} +/* line 523, jee.scss */ +#main #chapter-wrapper.visible #node-4 .field-type-text-long .field-label, +#main #chapter-wrapper.visible #node-4 h2.node-title, +#main #chapter-wrapper.visible #node-4 .field-name-field-dbatre li:before { + color: #de003a; +} +/* line 530, jee.scss */ +#main #chapter-wrapper.visible #node-5 .field-type-text-long .field-label, +#main #chapter-wrapper.visible #node-5 h2.node-title, +#main #chapter-wrapper.visible #node-5 .field-name-field-dbatre li:before { + color: #0066b1; +} +/* line 537, jee.scss */ +#main #chapter-wrapper.visible #node-6 .field-type-text-long .field-label, +#main #chapter-wrapper.visible #node-6 h2.node-title, +#main #chapter-wrapper.visible #node-6 .field-name-field-dbatre li:before { + color: #af1380; +} +/* line 544, jee.scss */ +#main #chapter-wrapper.visible #node-7 .field-type-text-long .field-label, +#main #chapter-wrapper.visible #node-7 h2.node-title, +#main #chapter-wrapper.visible #node-7 .field-name-field-dbatre li:before { + color: #62a530; +} +/* line 551, jee.scss */ +#main #chapter-wrapper.visible #node-8 .field-type-text-long .field-label, +#main #chapter-wrapper.visible #node-8 h2.node-title, +#main #chapter-wrapper.visible #node-8 .field-name-field-dbatre li:before { + color: #33b4b5; +} +/* line 567, jee.scss */ +#main #chapter-wrapper .node { + position: relative; + height: 100%; + width: 100%; +} +/* line 570, jee.scss */ +#main #chapter-wrapper .node a { + color: inherit; +} +/* line 573, jee.scss */ +#main #chapter-wrapper .node-title { + font-family: "epflulb"; + font-weight: normal; + text-transform: uppercase; + text-align: center; + max-width: 8.5em; + line-height: 0.85; + font-size: 2.268em; +} +/* line 583, jee.scss */ +#main #chapter-wrapper .node > .field { + position: absolute; +} +/* line 587, jee.scss */ +#main #chapter-wrapper .field-type-text-long { + background-color: rgba(255, 255, 255, 0.9); + width: 23em; + padding: 1em; + z-index: 10; +} +/* line 592, jee.scss */ +#main #chapter-wrapper .field-type-text-long .field-label { + text-transform: uppercase; + font-family: "epflulb"; + font-size: 1.5em; +} +/* line 598, jee.scss */ +#main #chapter-wrapper .field-type-text-long h2 { + font-size: 0.88em; +} +/* line 601, jee.scss */ +#main #chapter-wrapper .field-type-text-long p { + font-size: 0.88em; + margin-bottom: 0.5em; +} +/* line 606, jee.scss */ +#main #chapter-wrapper .field-name-field-dbatre { + left: 60em; +} +/* line 608, jee.scss */ +#main #chapter-wrapper .field-name-field-dbatre ul { + margin-left: 1em; +} +/* line 610, jee.scss */ +#main #chapter-wrapper .field-name-field-dbatre ul li { + list-style: none; + line-height: 1; + margin-bottom: 1em; + position: relative; +} +/* line 615, jee.scss */ +#main #chapter-wrapper .field-name-field-dbatre ul li:before { + content: "?"; + position: absolute; + top: 0; + left: -1em; + font-family: "epflul"; +} +/* line 626, jee.scss */ +#main #chapter-wrapper .field-name-field-partie { + height: 60%; + width: 100%; + top: 20%; + left: 0; +} +/* line 629, jee.scss */ +#main #chapter-wrapper .field-name-field-partie .field-items { + position: relative; + top: 0; + left: 0; + height: 100%; + width: auto; +} +/* line 634, jee.scss */ +#main #chapter-wrapper .field-name-field-partie .field-items .field { + position: relative; + display: inline-block; +} +/* line 637, jee.scss */ +#main #chapter-wrapper .field-name-field-partie .field-items .field .mask { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 10; } /* __________ ____ ________________ @@ -4417,13 +4598,13 @@ div.messages { / __/ / /_/ / /_/ / / / / /___/ _, _/ /_/ \____/\____/ /_/ /_____/_/ |_| */ -/* line 470, jee.scss */ +/* line 656, jee.scss */ #footer { position: fixed; bottom: 0; right: 0; } -/* line 473, jee.scss */ +/* line 659, jee.scss */ #footer .block { display: inline-block; vertical-align: top; @@ -4436,7 +4617,7 @@ div.messages { / / / // / ___/ / /___ /_/ /_/___//____/\____/ */ -/* line 485, jee.scss */ +/* line 671, jee.scss */ #fullscreen-btn { position: fixed; top: 20px; @@ -4444,7 +4625,7 @@ div.messages { z-index: 1000; } -/* line 499, jee.scss */ +/* line 685, jee.scss */ .bubble-1 { position: absolute; z-index: 0; @@ -4457,7 +4638,7 @@ div.messages { left: -200px; } -/* line 503, jee.scss */ +/* line 689, jee.scss */ .bubble-2 { position: absolute; z-index: 0; @@ -4470,7 +4651,7 @@ div.messages { right: -400px; } -/* line 508, jee.scss */ +/* line 694, jee.scss */ .star { position: absolute; z-index: 0; @@ -4488,7 +4669,7 @@ div.messages { / /_/ / /___/ /_/ / /_/ / /_/ / /_____/_____/_____/\____/\____/ */ -/* line 522, jee.scss */ +/* line 708, jee.scss */ #fps { position: fixed; top: 20px; @@ -4496,7 +4677,7 @@ div.messages { z-index: 1000; } -/* line 528, jee.scss */ +/* line 714, jee.scss */ #nav-cursor { position: absolute; width: 6px; diff --git a/sites/all/themes/gui/jee/css/jee.scss b/sites/all/themes/gui/jee/css/jee.scss index 5604c36..be6acfd 100755 --- a/sites/all/themes/gui/jee/css/jee.scss +++ b/sites/all/themes/gui/jee/css/jee.scss @@ -186,59 +186,73 @@ div.messages{ */ //SOL #node-2{ - &::after{ @include bg-svg-png('bgd-sol');} - &, a{color:$SOL-col-txt;} - h2.node-title{&,a{color:$SOL-color;}} - .field-name-field-vignette{@include bg-svg-png('shadow-sol');} - .line{background-color:$SOL-col-active;} + &.node-teaser{ + &::after{ @include bg-svg-png('bgd-sol');} + &, a{color:$SOL-col-txt;} + h2.node-title{&,a{color:$SOL-color;}} + .field-name-field-vignette{@include bg-svg-png('shadow-sol');} + .line{background-color:$SOL-col-active;} + } } //DPH #node-3{ - &::after{ @include bg-svg-png('bgd-dph');} - &, a{color:$DPH-col-txt;} - h2.node-title{&,a{color:$DPH-color;}} - .field-name-field-vignette{@include bg-svg-png('shadow-dph');} - .line{background-color:$DPH-col-active;} + &.node-teaser{ + &::after{ @include bg-svg-png('bgd-dph');} + &, a{color:$DPH-col-txt;} + h2.node-title{&,a{color:$DPH-color;}} + .field-name-field-vignette{@include bg-svg-png('shadow-dph');} + .line{background-color:$DPH-col-active;} + } } // SUB #node-4{ - &::after{ @include bg-svg-png('bgd-sub');} - &, a{color:$SUB-col-txt;} - h2.node-title{&,a{color:$SUB-color;}} - .field-name-field-vignette{@include bg-svg-png('shadow-sub');} - .line{background-color:$SUB-col-active;} + &.node-teaser{ + &::after{ @include bg-svg-png('bgd-sub');} + &, a{color:$SUB-col-txt;} + h2.node-title{&,a{color:$SUB-color;}} + .field-name-field-vignette{@include bg-svg-png('shadow-sub');} + .line{background-color:$SUB-col-active;} + } } // BC #node-5{ - &::after{ @include bg-svg-png('bgd-bc');} - &, a{color:$BC-col-txt;} - h2.node-title{&,a{color:$BC-color;}} - .field-name-field-vignette{@include bg-svg-png('shadow-bc');} - .line{background-color:$BC-col-active;} + &.node-teaser{ + &::after{ @include bg-svg-png('bgd-bc');} + &, a{color:$BC-col-txt;} + h2.node-title{&,a{color:$BC-color;}} + .field-name-field-vignette{@include bg-svg-png('shadow-bc');} + .line{background-color:$BC-col-active;} + } } //OPP #node-6{ - &::after{ @include bg-svg-png('bgd-opp');} - &, a{color:$OPP-col-txt;} - h2.node-title{&,a{color:$OPP-color;}} - .field-name-field-vignette{@include bg-svg-png('shadow-opp');} - .line{background-color:$OPP-col-active;} + &.node-teaser{ + &::after{ @include bg-svg-png('bgd-opp');} + &, a{color:$OPP-col-txt;} + h2.node-title{&,a{color:$OPP-color;}} + .field-name-field-vignette{@include bg-svg-png('shadow-opp');} + .line{background-color:$OPP-col-active;} + } } //DUB #node-7{ - &::after{ @include bg-svg-png('bgd-dub');} - &, a{color:$DUB-col-txt;} - h2.node-title{&,a{color:$DUB-color;}} - .field-name-field-vignette{@include bg-svg-png('shadow-dub');} - .line{background-color:$DUB-col-active;} + &.node-teaser{ + &::after{ @include bg-svg-png('bgd-dub');} + &, a{color:$DUB-col-txt;} + h2.node-title{&,a{color:$DUB-color;}} + .field-name-field-vignette{@include bg-svg-png('shadow-dub');} + .line{background-color:$DUB-col-active;} + } } // JUSO #node-8{ - &::after{ @include bg-svg-png('bgd-juso');} - &, a{color:$JUSO-col-txt;} - h2.node-title{&,a{color:$JUSO-color;}} - .field-name-field-vignette{@include bg-svg-png('shadow-juso');} - .line{background-color:$JUSO-col-active;} + &.node-teaser{ + &::after{ @include bg-svg-png('bgd-juso');} + &, a{color:$JUSO-col-txt;} + h2.node-title{&,a{color:$JUSO-color;}} + .field-name-field-vignette{@include bg-svg-png('shadow-juso');} + .line{background-color:$JUSO-col-active;} + } } /* @@ -250,215 +264,387 @@ div.messages{ */ .node-chapitre.node-teaser{ z-index: 2; - position:absolute; + position:absolute; - /* - _____ __________________ ___ _________________ __________________ - / _/ | / /_ __/ ____/ __ \/ | / ____/_ __/ _/ | / / _/_ __/ ____/ - / // |/ / / / / __/ / /_/ / /| |/ / / / / / | | / // / / / / __/ - _/ // /| / / / / /___/ _, _/ ___ / /___ / / _/ / | |/ // / / / / /___ - /___/_/ |_/ /_/ /_____/_/ |_/_/ |_\____/ /_/ /___/ |___/___/ /_/ /_____/ - */ + /* + _____ __________________ ___ _________________ __________________ + / _/ | / /_ __/ ____/ __ \/ | / ____/_ __/ _/ | / / _/_ __/ ____/ + / // |/ / / / / __/ / /_/ / /| |/ / / / / / | | / // / / / / __/ + _/ // /| / / / / /___/ _, _/ ___ / /___ / / _/ / | |/ // / / / / /___ + /___/_/ |_/ /_/ /_____/_/ |_/_/ |_\____/ /_/ /___/ |___/___/ /_/ /_____/ + */ - /* - ____ _____ _____ _____ _____ __ _____ _____ _____ ____ _____ - | \| __| __| _ | | | ||_ _| | | | \| __| - | | | __| __| | | | |__| | | | | | | | | | __| - |____/|_____|__| |__|__|_____|_____|_| |_|_|_|_____|____/|_____| + /* + ____ _____ _____ _____ _____ __ _____ _____ _____ ____ _____ + | \| __| __| _ | | | ||_ _| | | | \| __| + | | | __| __| | | | |__| | | | | | | | | | __| + |____/|_____|__| |__|__|_____|_____|_| |_|_|_|_____|____/|_____| - */ - opacity:1; + */ + opacity:1; + transition:1s ease-out; + transition-property:opacity; + + h2.node-title{ + transform:none; + transform-origin:bottom center; transition:1s ease-out; - transition-property:opacity; - - h2.node-title{ - transform:none; - transform-origin:bottom center; - transition:1s ease-out; - transition-property:transform; - z-index:5; - } - >.content{position:relative;} - .texts{ - opacity:0; height:1px; overflow:hidden; - transition:1s ease-out; - transition-property:opacity height; - position:absolute; - } - .field-name-field-partie{ - opacity:0; - position:absolute; - transition:1s ease-in-out 0.1s; - transition-property: opacity transform; - // just let see the field vignette of first partie - &:nth-child(2){ - z-index:2; - opacity:1; - // transition-delay:0; - >.field-type-text{ - opacity:0; - transition:1s ease-out 0.9s; - transition-property: opacity; - } - >.field-name-field-vignette{cursor:pointer;z-index:2;} - } - } - &:after{ + transition-property:transform; + z-index:5; + } + >.content{position:relative;} + .texts{ + opacity:0; height:1px; overflow:hidden; + transition:1s ease-out; + transition-property:opacity height; + position:absolute; + } + .field-name-field-partie{ opacity:0; - transition: 2s ease-in; - transition-property:opacity; - top:1px; left:1px; bottom:2px; right:2px; - } - .line{ - // transition: 0.1s ease-out; - // transition-property:height transform; - } - - /* - _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ ____ _____ - | _ | __ | __| | | | __| | | | | | | \| __| - | __| -| __| | |- -| __| | | | | | | | | | | | __| - |__| |__|__|_____|\___/|_____|_____|_____| |_|_|_|_____|____/|_____| - - */ - &.previewed{ - z-index:100; - &:after{ + position:absolute; + transition:1s ease-in-out 0.1s; + transition-property: opacity transform; + // just let see the field vignette of first partie + &:nth-child(2){ + z-index:2; opacity:1; - $pad:-2em; - top:-$pad; - left:$pad*6; right:$pad*6; - bottom:$pad*15; - } - h2.node-title{transform:scale(2,2);} - .texts{opacity:1; height:8em;} - .field-name-field-partie{ - opacity:1; z-index:0; - // display all fields inside each parties - >.field{opacity:1; z-index:-1; cursor:default;} - } - } - - /* - _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ ____ _____ - | | |_ _| | __| _ |_ _| __| | | | \| __| - | | | |- -| | | |- -| | | | | | | __| | | | | | | | | __| - |_|_|_|_____| |_| |_____|_____|__|__| |_| |_____| |_|_|_|_____|____/|_____| - */ - &.mitigated{ - opacity:0.3; - } - - - /* - _____________ ____________ ___ __ _____ __ _ __ __ _ _ - / ____/ ____/ | / / ____/ __ \/ | / / / ___/ _/_/___ ____ ____ (_)___ / /____ _________ ______/ /_(_) _____ | | - / / __/ __/ / |/ / __/ / /_/ / /| | / / \__ \ / // __ \/ __ \/ __ \ / / __ \/ __/ _ \/ ___/ __ `/ ___/ __/ / | / / _ \ / / - / /_/ / /___/ /| / /___/ _, _/ ___ |/ /______/ / / // / / / /_/ / / / / / / / / / /_/ __/ / / /_/ / /__/ /_/ /| |/ / __// / - \____/_____/_/ |_/_____/_/ |_/_/ |_/_____/____/ / //_/ /_/\____/_/ /_/ /_/_/ /_/\__/\___/_/ \__,_/\___/\__/_/ |___/\___//_/ - |_| /_/ - */ - &:after{ // background - content:" "; - background-size:contain!important; - position:absolute; - z-index:-1; - } - - h2.node-title{ - font-family: "epflulb"; - font-weight:normal; - text-transform: uppercase; - text-align: center; - max-width: 8.5em; - line-height: 0.85; - @media #{$large-up} { - font-size: 1.3em; - } - @media #{$xlarge-up} { - font-size:1.8em; - } - z-index: 5; - } - - .texts{ - // position:relative; - } - - .field-name-field-comprendre{ - h1,h2,h3,h4,h5,h6{display:none!important;} - // max-width:15em; - p{margin:0;} - min-width:16em; - } - - ul.links{ - display:block; margin:0; text-align:right; z-index:5; position:relative; width:100%; - li.node-readmore{ - padding:0; - a{ - display:inline-block; - height:25px; - font-family: "open_sans"; - font-weight: 900; - color:#000!important; - width:8em; text-align: left; - // background: transparent url(../assets/img/readmore-btn.svg) no-repeat right center; - @include bg-svg-png('readmore-btn', no-repeat, right, center); + // transition-delay:0; + >.field-type-text{ + opacity:0; + transition:1s ease-out 0.9s; + transition-property: opacity; } + >.field-name-field-vignette{cursor:pointer;z-index:2;} + } + } + &:after{ + opacity:0; + transition: 2s ease-in; + transition-property:opacity; + top:1px; left:1px; bottom:2px; right:2px; + } + .line{ + // transition: 0.1s ease-out; + // transition-property:height transform; + } + + /* + _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ ____ _____ + | _ | __ | __| | | | __| | | | | | | \| __| + | __| -| __| | |- -| __| | | | | | | | | | | | __| + |__| |__|__|_____|\___/|_____|_____|_____| |_|_|_|_____|____/|_____| + + */ + &.previewed{ + z-index:100; + &:after{ + opacity:1; + $pad:-2em; + top:-$pad; + left:$pad*6; right:$pad*6; + bottom:$pad*15; + } + h2.node-title{transform:scale(2,2);} + .texts{opacity:1; height:8em;} + .field-name-field-partie{ + opacity:1; z-index:0; + // display all fields inside each parties + >.field{opacity:1; z-index:-1; cursor:default;} + } + } + + /* + _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ ____ _____ + | | |_ _| | __| _ |_ _| __| | | | \| __| + | | | |- -| | | |- -| | | | | | | __| | | | | | | | | __| + |_|_|_|_____| |_| |_____|_____|__|__| |_| |_____| |_|_|_|_____|____/|_____| + */ + &.mitigated{ + opacity:0.3; + } + + /* + _____ _____ _____ _____ _____ _____ _____ ____ _____ _____ _____ __ _____ __ __ _____ ____ + | | | | _ | _ |_ _| __| __ | | \| | __| _ | | | _ | | | __| \ + | --| | | __| | | | __| -| | | |- -|__ | __| |__| |_ _| __| | | + |_____|__|__|__|__|__| |_| |_____|__|__| |____/|_____|_____|__| |_____|__|__| |_| |_____|____/ + + */ + .chapter-displayed & { + opacity:0.1; + } + + /* + _____________ ____________ ___ __ _____ __ _ __ __ _ _ + / ____/ ____/ | / / ____/ __ \/ | / / / ___/ _/_/___ ____ ____ (_)___ / /____ _________ ______/ /_(_) _____ | | + / / __/ __/ / |/ / __/ / /_/ / /| | / / \__ \ / // __ \/ __ \/ __ \ / / __ \/ __/ _ \/ ___/ __ `/ ___/ __/ / | / / _ \ / / + / /_/ / /___/ /| / /___/ _, _/ ___ |/ /______/ / / // / / / /_/ / / / / / / / / / /_/ __/ / / /_/ / /__/ /_/ /| |/ / __// / + \____/_____/_/ |_/_____/_/ |_/_/ |_/_____/____/ / //_/ /_/\____/_/ /_/ /_/_/ /_/\__/\___/_/ \__,_/\___/\__/_/ |___/\___//_/ + |_| /_/ + */ + &:after{ // background + content:" "; + background-size:contain!important; + position:absolute; + z-index:-1; + } + + h2.node-title{ + font-family: "epflulb"; + font-weight:normal; + text-transform: uppercase; + text-align: center; + max-width: 8.5em; + line-height: 0.85; + @media #{$large-up} { + font-size: 1.3em; + } + @media #{$xlarge-up} { + font-size:1.8em; + } + z-index: 5; + } + + .texts{ + // position:relative; + } + + .field-name-field-comprendre{ + h1,h2,h3,h4,h5,h6{display:none!important;} + // max-width:15em; + p{margin:0;} + min-width:16em; + } + + ul.links{ + display:block; margin:0; text-align:right; z-index:5; position:relative; width:100%; + li.node-readmore{ + padding:0; + a{ + display:inline-block; + height:25px; + font-family: "open_sans"; + font-weight: 900; + color:#000!important; + width:8em; text-align: left; + // background: transparent url(../assets/img/readmore-btn.svg) no-repeat right center; + @include bg-svg-png('readmore-btn', no-repeat, right, center); } } + } - .field-name-field-partie{clear:both; padding-top:1em;} + .field-name-field-partie{clear:both; padding-top:1em;} + $shadow-size:3.5em; + .field-name-field-vignette{ + position:relative; + float:left; $shadow-size:3.5em; - .field-name-field-vignette{ - position:relative; - float:left; - $shadow-size:3.5em; - padding:$shadow-size; - margin-top:-$shadow-size*1.15; - margin-right:-$shadow-size+1.5em; - margin-bottom:0; - margin-left:0; - background-size: contain; - // background-repeat: no-repeat; - // background-origin: center center; - } - .field-type-text{ min-width:16em; } - .field-name-field-titre{ - font-family: "epflul"; - font-size:1.6em; - line-height:1.1; - } - .field-name-field-sous-titre{ - font-family: "epflul"; - font-size:1.4em; - line-height:1.2; - } - .field-name-field-description{ - // font-family: "epf-lul"; - font-size:0.88em; - line-height:1.2; - } + padding:$shadow-size; + margin-top:-$shadow-size*1.15; + margin-right:-$shadow-size+1.5em; + margin-bottom:0; + margin-left:0; + background-size: contain; + // background-repeat: no-repeat; + // background-origin: center center; + } + .field-type-text{ min-width:16em; } + .field-name-field-titre{ + font-family: "epflul"; + font-size:1.6em; + line-height:1.1; + } + .field-name-field-sous-titre{ + font-family: "epflul"; + font-size:1.4em; + line-height:1.2; + } + .field-name-field-description{ + // font-family: "epf-lul"; + font-size:0.88em; + line-height:1.2; + } - .line{ - z-index:-1; - position:absolute; - top:$shadow-size - 0.5em; left:$shadow-size+2.5em; - transform-origin:top left; - width:2px; //background-color:red; - opacity:0.4; - } + .line{ + z-index:-1; + position:absolute; + top:$shadow-size - 0.5em; left:$shadow-size+2.5em; + transform-origin:top left; + width:2px; //background-color:red; + opacity:0.4; + } } // node-chapitre - .chapter-wrapper{ + +/* ____ ____ _______ ____________ ________ _____ ____ ________________ _____ + / __ \/ __ \/ ____/ | / / ____/ __ \ / ____/ / / / | / __ \/_ __/ ____/ __ \/ ___/ + / / / / /_/ / __/ / |/ / __/ / / / / / / / /_/ / /| | / /_/ / / / / __/ / /_/ /\__ \ +/ /_/ / ____/ /___/ /| / /___/ /_/ / / /___/ __ / ___ |/ ____/ / / / /___/ _, _/___/ / +\____/_/ /_____/_/ |_/_____/_____/ \____/_/ /_/_/ |_/_/ /_/ /_____/_/ |_|/____/ +*/ + + #chapter-wrapper{ position:absolute; - top:0; left:0; bottom:0; right:0; - } -} // main + top:0; left:0; + width:100%; height:100%; + z-index: -1; + opacity:0; + transition:2s ease-out; + transition-property:opacity; + + &.visible{ + opacity:1; + z-index: 500; + /* + _____ _____ __ _____ _____ _____ _____ __ __ _____ _____ ____ _____ + | | | | | | __ | __| | __ | | | | | | | \| __| + | --| | | |__| | | -|__ | | __ -|_ _| | | | | | | | | __| + |_____|_____|_____|_____|__|__|_____| |_____| |_| |_|___|_____|____/|_____| + */ + + #node-2{ + .field-type-text-long .field-label, + h2.node-title, + .field-name-field-dbatre li:before{ + color:$SOL-col-active; + } + } + #node-3{ + .field-type-text-long .field-label, + h2.node-title, + .field-name-field-dbatre li:before{ + color:$DPH-col-active; + } + } + #node-4{ + .field-type-text-long .field-label, + h2.node-title, + .field-name-field-dbatre li:before{ + color:$SUB-col-active; + } + } + #node-5{ + .field-type-text-long .field-label, + h2.node-title, + .field-name-field-dbatre li:before{ + color:$BC-col-active; + } + } + #node-6{ + .field-type-text-long .field-label, + h2.node-title, + .field-name-field-dbatre li:before{ + color:$OPP-col-active; + } + } + #node-7{ + .field-type-text-long .field-label, + h2.node-title, + .field-name-field-dbatre li:before{ + color:$DUB-col-active; + } + } + #node-8{ + .field-type-text-long .field-label, + h2.node-title, + .field-name-field-dbatre li:before{ + color:$JUSO-col-active; + } + } + + /* + _____ _____ _____ _____ _____ _____ _____ _____ _____ + | __| __| | | __| __ | | | | | __| + | | | __| | | | __| -|- -| | | | | __| + |_____|_____|_|___|_____|__|__|_____|__ _|_____|_____| + |__| + */ + } + + .node{ + position:relative; + height:100%; width:100%; + a{color:inherit;} + } + + .node-title{ + font-family: "epflulb"; + font-weight:normal; + text-transform: uppercase; + text-align: center; + max-width: 8.5em; + line-height: 0.85; + font-size: 2.268em; + } + + .node>.field{ + position:absolute; + } + + .field-type-text-long{ + background-color: rgba(255,255,255,0.9); + width:23em; padding:1em; + z-index:10; + + .field-label{ + text-transform: uppercase; + font-family: "epflulb"; + font-size:1.5em; + } + + h2{ + font-size:0.88em; + } + p{ + font-size: 0.88em; + margin-bottom:0.5em; + } + } + .field-name-field-dbatre{ + left:60em; + ul{ + margin-left:1em; + li{ + list-style: none; + line-height:1; + margin-bottom: 1em; + position:relative; + &:before{ + content:"?"; + position:absolute; + top:0; left:-1em; + font-family: "epflul"; + } + } + } + } + + + .field-name-field-partie{ + height:60%; width:100%; + top:20%; left:0; + .field-items{ + position:relative; + top:0; left:0; + height:100%; width:auto; + // overflow:hidden; + .field{ + position:relative; + display:inline-block; + .mask{ + position:absolute; + width:100%; height:100%; + top:0; left:0; + z-index:10; + } + } + } + } + } // #chapter-wrapper +} // #main /* __________ ____ ________________ / ____/ __ \/ __ \/_ __/ ____/ __ \ @@ -531,4 +717,4 @@ div.messages{ margin-top: -3px; margin-left: -3px; background-color: red; z-index:1000; -} \ No newline at end of file +} diff --git a/sites/all/themes/gui/jee/jee.info b/sites/all/themes/gui/jee/jee.info index 8bcf79d..76b276a 100755 --- a/sites/all/themes/gui/jee/jee.info +++ b/sites/all/themes/gui/jee/jee.info @@ -7,10 +7,12 @@ core = "7.x" engine = "phptemplate" ;----------// Styles +stylesheets[all][] = "bower_components/Peppermint/dist/peppermint.required.css" stylesheets[all][] = "css/jee.css" ;----------// Scripts -scripts[] = "bower_components/jquery.transit/jquery.transit.js" +scripts[] = "bower_components/jquery.pep/src/jquery.pep.js" +scripts[] = "bower_components/Peppermint/dist/peppermint.min.js" scripts[] = "js/jee.js" ;----------// Regions diff --git a/sites/all/themes/gui/jee/js/jee.js b/sites/all/themes/gui/jee/js/jee.js index c2d8723..2cc4a16 100755 --- a/sites/all/themes/gui/jee/js/jee.js +++ b/sites/all/themes/gui/jee/js/jee.js @@ -35,6 +35,9 @@ jQuery(document).ready(function($) { _fps = 1000/12, _dragging = false, _timeout_dragging; + var _$chapter_wrapper = $('
').attr('id', 'chapter-wrapper').appendTo(_$container), + _loaded_chapter = false; + var _bubbles = new Array(), _stars = new Array(); @@ -46,17 +49,17 @@ jQuery(document).ready(function($) { initChapters(); launchNav(); + // FULL SCREEN var $fullscreenBtn = $('
enter
').attr('id','fullscreen-btn').appendTo("#root"); - // Launch fullscreen for browsers that support it! - $fullscreenBtn.on('click', function(e){ - // launchIntoFullscreen(document.documentElement); // the whole page - launchIntoFullscreen(document.getElementById("root")); // any individual element - }); + $fullscreenBtn.on('click', onFullScreen); + + // create bubbles for (var i = 2; i > 0; i--) { _bubbles.push($('
').addClass('bubble bubble-'+i).prependTo(_$container)); }; + // create stars for (var i = 20; i > 0; i--) { _stars.push( $('
') @@ -116,15 +119,19 @@ jQuery(document).ready(function($) { |____/|_____|_____|__|__| |_| |_____|__| |_____|\___/|_____|_|___| |_| |_____| */ .bind('mousedown', function(e){ - console.log('mousedown'); + console.log('document mousedown'); clearTimeout(_timeout_dragging); + + if(_loaded_chapter) + return false; + // set initial cursor pos _mouse_down_pos.x = e.clientX; _mouse_down_pos.y = e.clientY; updateNavPos(e.clientX, e.clientY, true); $(this).bind('mousemove', function(e){ - console.log('mousemove'); + console.log('document mousemove'); updateNavPos(e.clientX, e.clientY, false); }); @@ -135,9 +142,14 @@ jQuery(document).ready(function($) { } }) .bind('mouseup', function(e){ - console.log('mouseup'); + console.log('document mouseup'); + + if(_loaded_chapter) + return false; + stopMoveNav(); $(this).unbind('mousemove'); + // close all preview if(Math.abs(e.clientX - _mouse_down_pos.x) < 2 && Math.abs(e.clientY - _mouse_down_pos.y) < 2) @@ -150,7 +162,7 @@ jQuery(document).ready(function($) { | | | | | | | --| | | __| | | __| | | | | | |__ | |_| |_____|_____|_____|__|__| |_____|\___/|_____|_|___| |_| |_____| */ - .bind('touchstart', function(e){ + .bind('document touchstart', function(e){ console.log('touchstart'); clearTimeout(_timeout_dragging); // set initial pos @@ -163,11 +175,11 @@ jQuery(document).ready(function($) { } }) .bind('touchmove', function(e){ - console.log('touchmove'); + console.log('document touchmove'); updateNavPos(e.originalEvent.touches[0].clientX, e.originalEvent.touches[0].clientY, false); }) .bind('touchend', function(e){ - console.log("touchend"); + console.log("document touchend"); stopMoveNav(); }); }; @@ -256,6 +268,11 @@ jQuery(document).ready(function($) { stopMoveNav(); }; + function onFullScreen(e){ + launchIntoFullscreen(document.getElementById("root")); + if(_loaded_chapter) + setTimeout(_loaded_chapter.buildVideos(), 100); + }; /* ________ __ / ____/ /_ ____ _____ / /____ _____ @@ -295,6 +312,13 @@ jQuery(document).ready(function($) { this.linesAnimeStartTime = 0, this.linesAnimeDuration = 2000; // milli sec + // chapter + this.$n = false; + this.$blocks = false; + this.$vids = false; + this.texts_pos = shuffleArray([1,2,3]); + this.dimvideo = {w:0, h:0}; + // prototypes if (typeof Chapter.initialized == "undefined") { @@ -376,8 +400,8 @@ jQuery(document).ready(function($) { // ) // )); - if(this.i === 0) - console.log(this.i+" this.trans.z", this.trans.z); + // if(this.i === 0) + // console.log(this.i+" this.trans.z", this.trans.z); this.$e.css({ transform:'translate3d('+this.trans.x+'px,'+this.trans.y+'px,0)' @@ -526,16 +550,119 @@ jQuery(document).ready(function($) { $.getJSON( '/jee/chapter/'+this.nid, {}, - this.displayNode + this.nodeLoaded.bind(this) ); + _$body.addClass('chapter-displayed'); }; - Chapter.prototype.displayNode = function(json, textstatus){ - console.log('Chapter :: displayNode : json', json); + Chapter.prototype.nodeLoaded = function(json, textstatus){ + console.log('Chapter :: nodeLoaded '+this.nid+' : json', json); + + // insert ajax loaded into dom + _$chapter_wrapper.html(json.node); + + // record some usefull data + this.$n = $('.node-chapitre', _$chapter_wrapper); + this.$blocks = $('.field-type-text-long', this.$n); + this.$vids = $('.field-name-field-partie', this.$n); + + // record the current loaded chapter + // this will stop first interface to run + _loaded_chapter = this; + + // wait to build correct display of chapter + setTimeout(this.displayNode.bind(this), 100); + }; + + Chapter.prototype.displayNode = function(){ + console.log('Chapter :: displayNode '+this.nid); + + // place text blocks + this.texts_pos = shuffleArray([1,2,3]); + this.$blocks + .each(this.placeText.bind(this)) + .pep({ + allowDragEventPropagation:false, + disableSelect:true, + velocityMultiplier:1 + }); + + // build video player + this.buildVideos(); + + $('.node-title', this.$n).pep(); + + // show the whole thing + _$chapter_wrapper.addClass('visible'); + }; + + Chapter.prototype.placeText = function(i, e){ + // console.log("Chapter :: placeText", e); + switch(this.texts_pos[i]){ + case 1: // top right + $(e) + .css({ + top:randB(_container.h*0.05-$(e).height(),_container.h*0.15-$(e).height()), + left:randB(_container.w*0.8-$(e).width(),_container.w*0.9-$(e).width()) + }) + // .pep({debug:true, startPos:{bottom:randB(80,90),right:randB(80,90)}}) + .find('.field-label') + .appendTo(e); + break; + case 2: // bottom left + $(e).css({ + top:randB(_container.h*0.8,_container.h*0.9), + left:randB(_container.w*0.1,_container.w*0.2) + }); + // $(e).pep({debug:true, startPos:{top:randB(80,90),left:randB(10,30)}}); + break; + case 3: // bottom right + $(e).css({ + top:randB(_container.h*0.8,_container.h*0.9), + left:randB(_container.w*0.7,_container.w*0.9-$(e).width()) + }); + // $(e).pep({debug:true, startPos:{top:randB(80,90),right:randB(10,30)}}); + break; + } + }; + + Chapter.prototype.buildVideos = function(){ + console.log('Chapter :: buildVideos'); + + this.dimvideo.h = this.$vids.height(); + + // redim each iframe to fit + // add a mask on top of each iframe to avoid bad interaction with vimeo + $('iframe', this.$vids) + .each(this.redimVideo.bind(this)) + .after('
'); + + this.$vids.css({ + width:this.dimvideo.w*1.3, + height:this.dimvideo.h, + marginLeft:(_container.w-this.dimvideo.w*1.3)/2 + }); + + // create the slider with peppermint + $('.field-items', this.$vids).Peppermint(); + }; + + Chapter.prototype.redimVideo = function(i,e){ + // compute proportional video width ragarding the parent height + this.dimvideo.w = (this.dimvideo.h * parseInt($(e).attr("width")))/parseInt($(e).attr("height")); + // apply thees sizes + $(e) + .css({ width:this.dimvideo.w, height:this.dimvideo.h }) + .attr({ width:this.dimvideo.w, height:this.dimvideo.h }) + // add some paading to parent for slider display + .parent().css({ + paddingLeft:this.dimvideo.w*0.15, + paddingright:this.dimvideo.w*0.15 + }); }; Node.initialized = true; - } + }; this.init(); };//Chapter @@ -566,6 +693,10 @@ jQuery(document).ready(function($) { }; } + function translate3d(x, y, z){ + // return + }; + /* _ _ __ (_)___ (_) /_ @@ -577,7 +708,55 @@ jQuery(document).ready(function($) { init(); }); +/* + ____ __ __ _____________ _______ + / __ \/ / / / / / ____/ _/ | / / ___/ + / /_/ / / / / / / / __ / // |/ /\__ \ + / ____/ /___/ /_/ / /_/ // // /| /___/ / +/_/ /_____/\____/\____/___/_/ |_//____/ +*/ +// https://css-tricks.com/snippets/jquery/draggable-without-jquery-ui/ +// (function($) { +// $.fn.drags = function(opt) { +// opt = $.extend({handle:"",cursor:"move"}, opt); + +// if(opt.handle === "") { +// var $el = this; +// } else { +// var $el = this.find(opt.handle); +// } + +// return $el.css('cursor', opt.cursor).on("mousedown", function(e) { +// if(opt.handle === "") { +// var $drag = $(this).addClass('draggable'); +// } else { +// var $drag = $(this).addClass('active-handle').parent().addClass('draggable'); +// } +// var z_idx = $drag.css('z-index'), +// drg_h = $drag.outerHeight(), +// drg_w = $drag.outerWidth(), +// pos_y = $drag.offset().top + drg_h - e.pageY, +// pos_x = $drag.offset().left + drg_w - e.pageX; +// $drag.css('z-index', 1000).parents().on("mousemove", function(e) { +// $('.draggable').offset({ +// top:e.pageY + pos_y - drg_h, +// left:e.pageX + pos_x - drg_w +// }).on("mouseup", function() { +// $(this).removeClass('draggable').css('z-index', z_idx); +// }); +// }); +// e.preventDefault(); // disable selection +// }).on("mouseup", function() { +// if(opt.handle === "") { +// $(this).removeClass('draggable'); +// } else { +// $(this).removeClass('active-handle').parent().removeClass('draggable'); +// } +// }); + +// } +// })(jQuery); /* ____ __________ __ ___________________ ___ _ ________ ______ ______________ _ __ __________ ___ __ _________ diff --git a/sites/all/themes/gui/jee/preprocess/html.pre.php b/sites/all/themes/gui/jee/preprocess/html.pre.php index 44a5446..3ed773d 100755 --- a/sites/all/themes/gui/jee/preprocess/html.pre.php +++ b/sites/all/themes/gui/jee/preprocess/html.pre.php @@ -21,8 +21,6 @@ $heads['HandheldFriendly'] = array( ), ); - - # Mobile Viewport Fix # j.mp/mobileviewport & davidbcalhoun.com/2010/viewport-metatag # device-width : Occupy full width of the screen in its current orientation @@ -33,12 +31,10 @@ $heads['viewport'] = array( '#tag' => 'meta', '#attributes' => array( 'name' => 'viewport', - 'content' => 'width=device-width,initial-scale=1', + 'content' => 'width=device-width,initial-scale=1,maximum-scale=1', ), ); - - # Add these icons links to your sub theme # or Place favicon.ico and apple-touch-icon.png in the root of your domain and delete these references @@ -62,6 +58,22 @@ $heads['apple-touch-icon'] = array( ), ); + +$heads['manifest'] = array( + '#tag' => 'link', + '#attributes' => array( + 'href' => base_path() . path_to_theme() .'/manifest.webapp' + ), +); + +$heads['manifest'] = array( + '#tag' => 'meta', + '#attributes' => array( + 'name' => "application-name", + 'content' => "Store Finder" + ), +); + foreach ($heads as $type=>$head) drupal_add_html_head($head, $type); diff --git a/sites/all/themes/gui/jee/templates/field--field-partie--chapter.tpl.php b/sites/all/themes/gui/jee/templates/field--field-partie--chapter.tpl.php new file mode 100644 index 0000000..2af09cd --- /dev/null +++ b/sites/all/themes/gui/jee/templates/field--field-partie--chapter.tpl.php @@ -0,0 +1,7 @@ +
> +
> + $item): ?> + + +
+
diff --git a/sites/all/themes/gui/jee/templates/field.tpl.php b/sites/all/themes/gui/jee/templates/field.tpl.php index 0e8eced..a7816b3 100755 --- a/sites/all/themes/gui/jee/templates/field.tpl.php +++ b/sites/all/themes/gui/jee/templates/field.tpl.php @@ -50,7 +50,7 @@ HTML comment. -->
> -
>
+
>
1): ?>
> diff --git a/sites/all/themes/gui/jee/templates/html.tpl.php b/sites/all/themes/gui/jee/templates/html.tpl.php index ff0d10e..ce4732a 100755 --- a/sites/all/themes/gui/jee/templates/html.tpl.php +++ b/sites/all/themes/gui/jee/templates/html.tpl.php @@ -58,11 +58,10 @@ - - + <?php print $head_title; ?> diff --git a/sites/all/themes/gui/jee/templates/node--chapitre--teaser.tpl.php b/sites/all/themes/gui/jee/templates/node--chapitre--teaser.tpl.php new file mode 100644 index 0000000..48e71d5 --- /dev/null +++ b/sites/all/themes/gui/jee/templates/node--chapitre--teaser.tpl.php @@ -0,0 +1,21 @@ +
> + + > + +
+ +
+ +
+ +
+
diff --git a/sites/all/themes/gui/jee/templates/node--chapitre.tpl.php b/sites/all/themes/gui/jee/templates/node--chapitre.tpl.php index 48e71d5..a2717c3 100644 --- a/sites/all/themes/gui/jee/templates/node--chapitre.tpl.php +++ b/sites/all/themes/gui/jee/templates/node--chapitre.tpl.php @@ -1,21 +1,13 @@ -
> +
> + - > + > -
- -
- -
- -
-
+
diff --git a/sites/all/themes/gui/jee/templates/video-embed-field-embed-code.tpl.php b/sites/all/themes/gui/jee/templates/video-embed-field-embed-code.tpl.php new file mode 100644 index 0000000..b852138 --- /dev/null +++ b/sites/all/themes/gui/jee/templates/video-embed-field-embed-code.tpl.php @@ -0,0 +1,17 @@ + +