1
0
Fork 0
mirror of https://github.com/Yetangitu/ampache synced 2025-10-03 01:39:28 +02:00

Center slideshow.

Should be improved for none "stretching" effect.
This commit is contained in:
SUTJael 2014-02-17 18:10:05 +01:00
parent 6e5122302c
commit cb8c1e3e4a
16 changed files with 1486 additions and 1790 deletions

View file

@ -0,0 +1,188 @@
'use strict';
jPlayerPlaylist.prototype._createListItem = function(media) {
var self = this;
// Wrap the <li> contents in a <div>
var attrClass = ' class="playlist-row ';
if ('string' === typeof media.attrClass) {
attrClass += media.attrClass;
}
attrClass += '" ';
var listItem = "<li" + attrClass + " name=\"" + $(myPlaylist.cssSelector.playlist + " ul li").length + "\" track_id=\"" + media.id + "\" artist_music_title_id=\"" + media.artist_music_title_id + "\"><div>";
// Create image
// listItem += "<img class=\"cover\" src=\"" + media.cover + "\" alt=\"" + media.title + "\"/>";
// Create remove control
listItem += "<a href='javascript:;' class='" + this.options.playlistOptions.removeItemClass + "'>&times;</a>";
// Create settings link
if (media.id) {
listItem += "<span class=\"jp-free-media menu\"><a title=\"Track Settings\" class=\"loadModal\" href=\"/api/tracksettings/track_id/" + media.id + "/artist_music_title_id/" + media.artist_music_title_id + "\"><img src=\"/img/settings.png\"/></a></span>";
}
// The title is given next in the HTML otherwise the float:right on the free media corrupts in IE6/7
listItem += "<a href='javascript:;' class='" + this.options.playlistOptions.itemClass + "' tabindex='1'>" + media.title + (media.artist ? " <span class='jp-artist'>by " + media.artist + "</span>" : "") + "</a>";
listItem += "</div></li>";
return listItem;
};
// TODO: take away the playlistName
jPlayerPlaylist.prototype.rmTrack = function(trackId, playlistName) {
playlistName = playlistName || 'default';
// $.bootstrapMessageLoading();
$.post('/playlist/rmtrack', {
playlist: playlistName,
trackId: trackId
}, function (data) {
// $.bootstrapMessageAuto(data[0], data[1]);
if ('error' === data[1]) {
$.loadPlaylist();
}
}, 'json').error(function (e) {
$.bootstrapMessageAuto('An error occured while trying to remove the track from your playlist.', 'error');
});
}
jPlayerPlaylist.prototype.remove = function(index) {
var self = this;
console.log("remove track " + index);
if (index === undefined) {
this._initPlaylist([]);
this._refresh(function() {
$(self.cssSelector.jPlayer).jPlayer("clearMedia");
self.scan();
});
return true;
} else {
if (this.removing) {
return false;
} else {
index = (index < 0) ? self.original.length + index : index; // Negative index relates to end of array.
if (0 <= index && index < this.playlist.length) {
this.removing = true;
if ('playlist' === myPlaylist.type) {
console.log('delete track index ' + index);
var trackId = $($('.jp-playlist-item-remove')[index]).parent().parent().attr('track_id')
myPlaylist.rmTrack(trackId, myPlaylist.name);
}
$(this.cssSelector.playlist + " li:nth-child(" + (index + 1) + ")").slideUp(this.options.playlistOptions.removeTime, function() {
$(this).remove();
if (self.shuffled) {
var item = self.playlist[index];
$.each(self.original, function(i,v) {
if (self.original[i] === item) {
self.original.splice(i, 1);
return false; // Exit $.each
}
});
self.playlist.splice(index, 1);
} else {
self.original.splice(index, 1);
self.playlist.splice(index, 1);
}
if (self.original.length) {
if (index === self.current) {
self.current = (index < self.original.length) ? self.current : self.original.length - 1; // To cope when last element being selected when it was removed
self.select(self.current);
} else if (index < self.current) {
self.current--;
}
} else {
$(self.cssSelector.jPlayer).jPlayer("clearMedia");
self.current = 0;
self.shuffled = false;
self._updateControls();
}
self.removing = false;
self.scan();
});
}
return true;
}
}
};
jPlayerPlaylist.prototype.removeAll = function() {
this.original = [];
this._originalPlaylist();
$(this.cssSelector.playlist + " ul").html(' ');
};
jPlayerPlaylist.prototype.scan = function() {
var self = this;
var isAdjusted = false;
var replace = [];
var maxName = 0; // maximum value that name attribute assumes.
$.each($(this.cssSelector.playlist + " ul li"), function(index, value) {
if ($(value).attr('name') > maxName)
maxName = parseInt($(value).attr('name'));
});
var diffCount = maxName + 1 != $(this.cssSelector.playlist + " ul li").length; // Flag that marks if the number of "ul li" elements doesn't match the name attribute counting.
$.each($(this.cssSelector.playlist + " ul li"), function(index, value) {
if (!diffCount) {
replace[index] = self.original[$(value).attr('name')];
if (!isAdjusted && self.current === parseInt($(value).attr('name'), 10)) {
self.current = index;
isAdjusted = true;
}
}
$(value).attr('name', index);
});
if (!diffCount) {
this.original = replace;
this._originalPlaylist();
}
};
jPlayerPlaylist.prototype.setCurrent = function(current) {
this.current = current;
this.select(this.current);
};
jPlayerPlaylist.prototype.play = function(index) {
index = (index < 0) ? this.original.length + index : index; // Negative index relates to end of array.
if ('function' === typeof this.options.callbackPlay) {
this.options.callbackPlay(index);
}
if (0 <= index && index < this.playlist.length) {
if (this.playlist.length) {
this.select(index);
$(this.cssSelector.jPlayer).jPlayer("play");
}
} else if (index === undefined) {
$(this.cssSelector.jPlayer).jPlayer("play");
}
};
jPlayerPlaylist.prototype._highlight = function(index) {
$(this.cssSelector.title + " li:first").html('Playlist: ' + this.name);
$(this.cssSelector.title + " li:last").html(' ');
if (this.playlist.length && index !== undefined) {
$(this.cssSelector.playlist + " .jp-playlist-current").removeClass("jp-playlist-current");
$(this.cssSelector.playlist + " li:nth-child(" + (index + 1) + ")").addClass("jp-playlist-current").find(".jp-playlist-item").addClass("jp-playlist-current");
$(this.cssSelector.title + " li:last").html(this.playlist[index].title + (this.playlist[index].artist ? " <span class='jp-artist'>by " + this.playlist[index].artist + "</span>" : ""));
}
};
$(document).ready(function() {
});

View file

@ -0,0 +1,123 @@
/**
* Rhinoslider 1.05
* http://rhinoslider.com/
*
* Copyright 2014: Sebastian Pontow, Rene Maas (http://renemaas.de/)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://rhinoslider.com/license/
*/
.rhino-btn {
background:url(../img/rhinoslider-sprite.png) 0 0 no-repeat;
z-index:10;
width:56px;
height:53px;
display:block;
text-indent:-999%;
-webkit-user-select:none;
-moz-user-select:none;
user-select:none;
}
.rhino-prev, .rhino-next { bottom:-4px; }
.rhino-prev {
left:-6px;
background-position:-168px 0;
}
.rhino-next {
right:-6px;
background-position:-106px 0;
}
.rhino-prev:hover { background-position:-168px -53px; }
.rhino-next:hover { background-position:-106px -53px; }
.rhino-toggle {
top:-4px;
left:-6px;
}
.rhino-play { background-position:0 0; }
.rhino-play:hover { background-position:0 -53px; }
.rhino-pause { background-position:-56px 0; }
.rhino-pause:hover { background-position:-56px -53px; }
.rhino-container { position:relative; }
.rhino-caption {
position:absolute;
background: #000;
display:none;
left:0;
right:0;
top:0;
color:#fff;
padding:10px;
text-align:right;
-webkit-user-select:none;
-moz-user-select:none;
user-select:none;
}
.rhino-bullets {
position: absolute;
bottom: -3px;
left: 50%;
margin:0 0 0 -50px;
z-index: 10;
background: #fff;
padding:0;
}
.rhino-bullets:before, .rhino-bullets:after {
position:absolute;
display:block;
left:-16px;
content:' ';
width:16px;
height:26px;
background:url(../img/rhinoslider-sprite.png) -224px 0 no-repeat;
}
.rhino-bullets:after {
left:auto;
right:-16px;
background-position: -240px 0;
}
.rhino-bullets li {
float:left;
display:inline;
margin:0 2px;
}
.rhino-bullets li a.rhino-bullet {
display: block;
width: 16px;
height: 15px;
cursor: pointer;
background: white;
font-size: 10px;
text-align: center;
padding: 6px 0 5px 0;
color: #333;
text-decoration:none;
-webkit-user-select:none;
-moz-user-select:none;
user-select:none;
}
.rhino-bullets li a.rhino-bullet:hover, .rhino-bullets li a.rhino-bullet:focus {
color:#999;
background:#eee;
}
.rhino-bullets li a.rhino-bullet.rhino-active-bullet {
color:#fff;
background:#5cd4e8;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View file

@ -0,0 +1,206 @@
/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - jQuery Easing
*
* Open source under the BSD License.
*
* Copyright © 2008 George McGinley Smith
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];
jQuery.extend( jQuery.easing,
{
def: 'easeOutQuad',
swing: function (x, t, b, c, d) {
//alert(jQuery.easing.default);
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
},
easeInQuad: function (x, t, b, c, d) {
return c*(t/=d)*t + b;
},
easeOutQuad: function (x, t, b, c, d) {
return -c *(t/=d)*(t-2) + b;
},
easeInOutQuad: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
},
easeInCubic: function (x, t, b, c, d) {
return c*(t/=d)*t*t + b;
},
easeOutCubic: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t + 1) + b;
},
easeInOutCubic: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
},
easeInQuart: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t + b;
},
easeOutQuart: function (x, t, b, c, d) {
return -c * ((t=t/d-1)*t*t*t - 1) + b;
},
easeInOutQuart: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 * ((t-=2)*t*t*t - 2) + b;
},
easeInQuint: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t*t + b;
},
easeOutQuint: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t*t*t + 1) + b;
},
easeInOutQuint: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
return c/2*((t-=2)*t*t*t*t + 2) + b;
},
easeInSine: function (x, t, b, c, d) {
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
},
easeOutSine: function (x, t, b, c, d) {
return c * Math.sin(t/d * (Math.PI/2)) + b;
},
easeInOutSine: function (x, t, b, c, d) {
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
},
easeInExpo: function (x, t, b, c, d) {
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
},
easeOutExpo: function (x, t, b, c, d) {
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
},
easeInOutExpo: function (x, t, b, c, d) {
if (t==0) return b;
if (t==d) return b+c;
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
},
easeInCirc: function (x, t, b, c, d) {
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
},
easeOutCirc: function (x, t, b, c, d) {
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
},
easeInOutCirc: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
},
easeInElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
},
easeOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
},
easeInOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
},
easeInBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*(t/=d)*t*((s+1)*t - s) + b;
},
easeOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
},
easeInOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
},
easeInBounce: function (x, t, b, c, d) {
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
},
easeOutBounce: function (x, t, b, c, d) {
if ((t/=d) < (1/2.75)) {
return c*(7.5625*t*t) + b;
} else if (t < (2/2.75)) {
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
} else if (t < (2.5/2.75)) {
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
} else {
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
}
},
easeInOutBounce: function (x, t, b, c, d) {
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
}
});
/*
*
* TERMS OF USE - EASING EQUATIONS
*
* Open source under the BSD License.
*
* Copyright © 2001 Robert Penner
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

View file

@ -0,0 +1,12 @@
/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
* Thanks to: Seamus Leahy for adding deltaX and deltaY
*
* Version: 3.0.6
*
* Requires: 1.2.2+
*/
(function(a){function d(b){var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=!0,g=0,h=0;return b=a.event.fix(c),b.type="mousewheel",c.wheelDelta&&(e=c.wheelDelta/120),c.detail&&(e=-c.detail/3),h=e,c.axis!==undefined&&c.axis===c.HORIZONTAL_AXIS&&(h=0,g=-1*e),c.wheelDeltaY!==undefined&&(h=c.wheelDeltaY/120),c.wheelDeltaX!==undefined&&(g=-1*c.wheelDeltaX/120),d.unshift(b,e,g,h),(a.event.dispatch||a.event.handle).apply(this,d)}var b=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var c=b.length;c;)a.event.fixHooks[b[--c]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=b.length;a;)this.addEventListener(b[--a],d,!1);else this.onmousewheel=d},teardown:function(){if(this.removeEventListener)for(var a=b.length;a;)this.removeEventListener(b[--a],d,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);

View file

@ -0,0 +1,871 @@
/**
* Rhinoslider 1.05
* http://rhinoslider.com/
*
* Copyright 2014: Sebastian Pontow, Rene Maas (http://renemaas.de/)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://rhinoslider.com/license/
*/
(function ($, window, undefined) {
$.extend($.easing, {
def: 'out',
out: function (none, currentTime, startValue, endValue, totalTime) {
return -endValue * (currentTime /= totalTime) * (currentTime - 2) + startValue;
},
kick: function (none, currentTime, startValue, endValue, totalTime) {
if ((currentTime /= totalTime / 2) < 1) {
return endValue / 2 * Math.pow(2, 10 * (currentTime - 1)) + startValue;
}
return endValue / 2 * (-Math.pow(2, -10 * --currentTime) + 2) + startValue;
},
shuffle: function (none, currentTime, startValue, endValue, totalTime) {
if ((currentTime /= totalTime / 2) < 1) {
return endValue / 2 * currentTime * currentTime * currentTime * currentTime * currentTime + startValue;
}
return endValue / 2 * ((currentTime -= 2) * currentTime * currentTime * currentTime * currentTime + 2) + startValue;
}
});
var rhinoSlider = function (element, opts) {
var
settings = $.extend({}, $.fn.rhinoslider.defaults, opts),
$slider = $(element),
effects = $.fn.rhinoslider.effects,
preparations = $.fn.rhinoslider.preparations,
//internal variables
vars = {
isPlaying: false,
intervalAutoPlay: false,
active: '',
next: '',
container: '',
items: '',
buttons: [],
prefix: 'rhino-',
playedArray: [],
playedCounter: 0,
original: element
};
settings.callBeforeInit();
var
setUpSettings = function (settings) {
settings.controlsPrevNext = String(settings.controlsPrevNext) == 'true' ? true : false;
settings.controlsKeyboard = String(settings.controlsKeyboard) == 'true' ? true : false;
settings.controlsMousewheel = String(settings.controlsMousewheel) == 'true' ? true : false;
settings.controlsPlayPause = String(settings.controlsPlayPause) == 'true' ? true : false;
settings.pauseOnHover = String(settings.pauseOnHover) == 'true' ? true : false;
settings.animateActive = String(settings.animateActive) == 'true' ? true : false;
settings.autoPlay = String(settings.autoPlay) == 'true' ? true : false;
settings.cycled = String(settings.cycled) == 'true' ? true : false;
settings.showTime = parseInt(settings.showTime, 10);
settings.effectTime = parseInt(settings.effectTime, 10);
settings.controlFadeTime = parseInt(settings.controlFadeTime, 10);
settings.captionsFadeTime = parseInt(settings.captionsFadeTime, 10);
tmpShiftValue = settings.shiftValue;
tmpParts = settings.parts;
settings.shiftValue = [];
settings.parts = [];
return settings;
},
//init function
init = function ($slider, settings, vars) {
settings = setUpSettings(settings);
$slider.wrap('<div class="' + vars.prefix + 'container">');
vars.container = $slider.parent('.' + vars.prefix + 'container');
vars.isPlaying = settings.autoPlay;
//the string, which will contain the button-html-code
var buttons = '';
//add prev/next-buttons
if (settings.controlsPrevNext) {
vars.container.addClass(vars.prefix + 'controls-prev-next');
buttons = '<a class="' + vars.prefix + 'prev ' + vars.prefix + 'btn">' + settings.prevText + '</a><a class="' + vars.prefix + 'next ' + vars.prefix + 'btn">' + settings.nextText + '</a>';
vars.container.append(buttons);
vars.buttons.prev = vars.container.find('.' + vars.prefix + 'prev');
vars.buttons.next = vars.container.find('.' + vars.prefix + 'next');
//add functionality to the "prev"-button
vars.buttons.prev.click(function () {
prev($slider, settings);
//stop autoplay, if set
if (settings.autoPlay) {
pause();
}
});
//add functionality to the "next"-button
vars.buttons.next.click(function () {
next($slider, settings);
//stop autoplay, if set
if (settings.autoPlay) {
pause();
}
});
}
//add play/pause-button
if (settings.controlsPlayPause) {
vars.container.addClass(vars.prefix + 'controls-play-pause');
buttons = settings.autoPlay ? '<a class="' + vars.prefix + 'toggle ' + vars.prefix + 'pause ' + vars.prefix + 'btn">' + settings.pauseText + '</a>' : '<a class="' + vars.prefix + 'toggle ' + vars.prefix + 'play ' + vars.prefix + 'btn">' + settings.playText + '</a>';
vars.container.append(buttons);
vars.buttons.play = vars.container.find('.' + vars.prefix + 'toggle');
//add functionality
vars.buttons.play.click(function () {
//self-explaining
if (vars.isPlaying === false) {
play();
} else {
pause();
}
});
}
//style
vars.container.find('.' + vars.prefix + 'btn').css({
position: 'absolute',
display: 'block',
cursor: 'pointer'
});
//hide/show controls on hover or never
if (settings.showControls !== 'always') {
var allControls = vars.container.find('.' + vars.prefix + 'btn');
allControls.stop(true, true).fadeOut(0);
if (settings.showControls === 'hover') {
vars.container.mouseenter(function () {
allControls.stop(true, true).fadeIn(settings.controlFadeTime);
}).mouseleave(function () {
allControls.delay(200).fadeOut(settings.controlFadeTime);
});
}
}
if(settings.showControls !== 'never'){
vars.container.addClass(vars.prefix + 'show-controls');
}
//get content-elements and set css-reset for positioning
vars.items = $slider.children();
vars.items.addClass(vars.prefix + 'item');
vars.items.first().addClass(vars.prefix + 'active');
//give sliderstyle to container
var sliderStyles = settings.styles.split(','), style;
$.each(sliderStyles, function(i, cssAttribute){
style = $.trim(cssAttribute);
vars.container.css(style, $slider.css(style));
$slider.css(style, ' ');
switch(style){
case 'width':
case 'height':
$slider.css(style, '100%');
break;
}
});
if(vars.container.css('position') == 'static'){
vars.container.css('position', 'relative');
}
$slider.css({
top: 'auto',
left: 'auto',
position: 'relative'
});
//style items
vars.items.css({
margin: 0,
width: $slider.css('width'),
height: $slider.css('height'),
position: 'absolute',
top: 0,
left: 0,
zIndex: 0,
opacity: 0,
overflow: 'hidden'
});
vars.items.each(function (i) {
$(this).attr('id', vars.prefix + 'item' + i);
});
//generate navigation
if (settings.showBullets !== 'never') {
vars.container.addClass(vars.prefix + 'show-bullets');
var navi = '<ol class="' + vars.prefix + 'bullets">';
vars.items.each(function (i) {
var $item = $(this);
var id = vars.prefix + 'item' + i;
navi = navi + '<li><a id="' + id + '-bullet" class="' + vars.prefix + 'bullet">' + parseInt(i + 1, 10) + '</a></li>';
});
navi = navi + '</ol>';
vars.container.append(navi);
vars.navigation = vars.container.find('.' + vars.prefix + 'bullets');
vars.buttons.bullets = vars.navigation.find('.' + vars.prefix + 'bullet');
vars.buttons.bullets.first().addClass(vars.prefix + 'active-bullet ' + vars.prefix + 'first-bullet');
vars.buttons.bullets.last().addClass(vars.prefix + 'last-bullet');
vars.buttons.bullets.click(function () {
var itemID = $(this).attr('id').replace('-bullet', '');
var $next = vars.container.find('#' + itemID);
var curID = parseInt(vars.navigation.find('.' + vars.prefix + 'active-bullet').attr('id').replace('-bullet', '').replace(vars.prefix + 'item', ''), 10);
var nextID = parseInt(itemID.replace(vars.prefix + 'item', ''), 10);
if (curID < nextID) {
next($slider, settings, $next);
} else if (curID > nextID) {
prev($slider, settings, $next);
} else {
return false;
}
//stop autoplay, if set
if (settings.autoPlay) {
pause();
}
});
}
//hide/show bullets on hover or never
if (settings.showBullets === 'hover') {
vars.navigation.hide();
vars.container.mouseenter(function () {
vars.navigation.stop(true, true).fadeIn(settings.controlFadeTime);
}).mouseleave(function () {
vars.navigation.delay(200).fadeOut(settings.controlFadeTime);
});
}
//add captions
if (settings.showCaptions !== 'never') {
vars.container.addClass(vars.prefix + 'show-captions');
vars.items.each(function () {
var $item = $(this);
if ($item.children('.' + vars.prefix + 'caption').length == 0) {
if ($item.children('img').length > 0) {
var title = $.trim($item.children('img:first').attr('title'));
if(undefined != title || '' == title){
$item.append('<div class="' + vars.prefix + 'caption">' + title + '</div>');
$item.children('.' + vars.prefix + 'caption:empty').remove();
}
}
}
});
if (settings.showCaptions === 'hover') {
$('.' + vars.prefix + 'caption').hide();
vars.container.mouseenter(function () {
vars.active.find('.' + vars.prefix + 'caption').stop(true, true).fadeTo(settings.captionFadeTime, settings.captionsOpacity);
}).mouseleave(function () {
vars.active.find('.' + vars.prefix + 'caption').delay(200).fadeOut(settings.captionFadeTime);
});
} else if (settings.showCaptions === 'always') {
$('.' + vars.prefix + 'caption').fadeTo(0, settings.captionsOpacity);
}
}
//remove titles
vars.items.each(function () {
$(this).children('img').removeAttr('title');
});
//start autoplay if set
if (settings.autoPlay) {
vars.intervalAutoPlay = setInterval(function () {
next($slider, settings);
}, settings.showTime);
} else {
vars.intervalAutoPlay = false;
}
//if pause on hover
if (settings.pauseOnHover) {
vars.container.addClass(vars.prefix + 'pause-on-hover');
//play/pause function cannot be used for they trigger the isPlaying variable
$slider.mouseenter(function () {
if (vars.isPlaying) {
clearInterval(vars.intervalAutoPlay);
if (settings.controlsPlayPause) {
vars.buttons.play.text(settings.playText).removeClass(vars.prefix + 'pause').addClass(vars.prefix + 'play');
}
}
}).mouseleave(function () {
if (vars.isPlaying) {
vars.intervalAutoPlay = setInterval(function () {
next($slider, settings);
}, settings.showTime);
if (settings.controlsPlayPause) {
vars.buttons.play.text(settings.pauseText).removeClass(vars.prefix + 'play').addClass(vars.prefix + 'pause');
}
}
});
}
//catch keyup event and trigger functions if the right key is pressed
if (settings.controlsKeyboard) {
vars.container.addClass(vars.prefix + 'controls-keyboard');
$(document).keyup(function (e) {
switch (e.keyCode) {
case 37:
pause();
prev($slider, settings);
break;
case 39:
pause();
next($slider, settings);
break;
case 80:
//self-explaining
if (vars.isPlaying === false) {
play();
} else {
pause();
}
break;
}
});
}
//catch mousewheel event and trigger prev or next
if (settings.controlsMousewheel) {
vars.container.addClass(vars.prefix + 'controls-mousewheel');
if (!$.isFunction($.fn.mousewheel)) {
alert('$.fn.mousewheel is not a function. Please check that you have the mousewheel-plugin installed properly.');
} else {
$slider.mousewheel(function (e, delta) {
e.preventDefault();
if(vars.container.hasClass('inProgress')){
return false;
}
var dir = delta > 0 ? 'up' : 'down';
if (dir === 'up') {
pause();
prev($slider, settings);
} else {
pause();
next($slider, settings);
}
});
}
}
vars.active = $slider.find('.' + vars.prefix + 'active');
vars.active.css({
zIndex: 1,
opacity: 1
});
//check if slider is non-cycled
if(!settings.cycled) {
vars.items.each(function() {
var $item = $(this);
if($item.is(':first-child')) {
$item.addClass(vars.prefix + 'firstItem');
}
if($item.is(':last-child')) {
$item.addClass(vars.prefix + 'lastItem');
}
});
if(vars.active.is(':first-child') && settings.controlsPrevNext){
vars.buttons.prev.addClass('disabled');
}
if(vars.active.is(':last-child')){
if(settings.controlsPrevNext){
vars.buttons.next.addClass('disabled');
pause();
}
if(settings.autoPlay){
vars.buttons.play.addClass('disabled');
}
}
}
if(preparations[settings.effect] == undefined){
console.log('Effect for ' + settings.effect + ' not found.');
}else{
preparations[settings.effect]($slider, settings, vars);
}
//return the init-data to the slide for further use
$slider.data('slider:vars', vars);
settings.callBackInit();
},
//check if item element is first-child
isFirst = function($item) {
return $item.is(':first-child');
},
//check if item element is last-child
isLast = function($item) {
return $item.is(':last-child');
},
//pause the autoplay and change the bg-image of the button to "play"
pause = function () {
var vars = $slider.data('slider:vars');
clearInterval(vars.intervalAutoPlay);
vars.isPlaying = false;
if (settings.controlsPlayPause) {
vars.buttons.play.text(settings.playText).removeClass(vars.prefix + 'pause').addClass(vars.prefix + 'play');
}
settings.callBackPause();
},
//start/resume the autoplay and change the bg-image of the button to "pause"
play = function () {
var vars = $slider.data('slider:vars');
vars.intervalAutoPlay = setInterval(function () {
next($slider, settings);
}, settings.showTime);
vars.isPlaying = true;
if (settings.controlsPlayPause) {
vars.buttons.play.text(settings.pauseText).removeClass(vars.prefix + 'play').addClass(vars.prefix + 'pause');
}
settings.callBackPlay();
},
prev = function ($slider, settings, $next) {
var vars = $slider.data('slider:vars');
if(!settings.cycled && isFirst(vars.active)){
return false;
}
settings.callBeforePrev();
//if some effect is already running, don't stack up another one
if (vars.container.hasClass('inProgress')) {
return false;
}
vars.container.addClass('inProgress');
if (!$next) {
if (settings.randomOrder) {
var nextID = getRandom(vars);
vars.next = vars.container.find('#' + nextID);
} else {
vars.next = vars.items.first().hasClass(vars.prefix + 'active') ? vars.items.last() : vars.active.prev();
}
} else {
vars.next = $next;
}
if (vars.next.hasClass(vars.prefix + 'active')) {
return false;
}
//hide captions
if (settings.showCaptions !== 'never') {
$('.' + vars.prefix + 'caption').stop(true, true).fadeOut(settings.captionsFadeTime);
}
if (settings.showBullets !== 'never' && settings.changeBullets == 'before') {
vars.navigation.find('.' + vars.prefix + 'active-bullet').removeClass(vars.prefix + 'active-bullet');
vars.navigation.find('#' + vars.next.attr('id') + '-bullet').addClass(vars.prefix + 'active-bullet');
}
setTimeout(function() {
var params = [];
params.settings = settings;
params.animateActive = settings.animateActive;
params.direction = settings.slidePrevDirection;
if(effects[settings.effect] == undefined){
console.log('Preparations for ' + settings.effect + ' not found.');
}else{
effects[settings.effect]($slider, params, resetElements);
}
setTimeout(function () {
if (settings.showBullets !== 'never' && settings.changeBullets == 'after') {
vars.navigation.find('.' + vars.prefix + 'active-bullet').removeClass(vars.prefix + 'active-bullet');
vars.navigation.find('#' + vars.next.attr('id') + '-bullet').addClass(vars.prefix + 'active-bullet');
}
settings.callBackPrev();
}, settings.effectTime);
}, settings.captionsFadeTime);
if (settings.showBullets !== 'never' && settings.changeBullets == 'after') {
vars.navigation.find('.' + vars.prefix + 'active-bullet').removeClass(vars.prefix + 'active-bullet');
vars.navigation.find('#' + vars.next.attr('id') + '-bullet').addClass(vars.prefix + 'active-bullet');
}
},
next = function ($slider, settings, $next) {
var vars = $slider.data('slider:vars');
if(!settings.cycled && isLast(vars.active)){
return false;
}
settings.callBeforeNext();
//if some effect is already running, don't stack up another one
if (vars.container.hasClass('inProgress')) {
return false;
}
vars.container.addClass('inProgress');
//check, if the active element is the last, so we can set the first element to be the "next"-element
if (!$next) {
if (settings.randomOrder) {
var nextID = getRandom(vars);
vars.next = vars.container.find('#' + nextID);
} else {
vars.next = vars.items.last().hasClass(vars.prefix + 'active') ? vars.items.first() : vars.active.next();
}
} else {
vars.next = $next;
}
if (vars.next.hasClass(vars.prefix + 'active')) {
return false;
}
//hide captions
if (settings.showCaptions !== 'never') {
$('.' + vars.prefix + 'caption').stop(true, true).fadeOut(settings.captionsFadeTime);
}
if (settings.showBullets !== 'never' && settings.changeBullets == 'before') {
vars.navigation.find('.' + vars.prefix + 'active-bullet').removeClass(vars.prefix + 'active-bullet');
vars.navigation.find('#' + vars.next.attr('id') + '-bullet').addClass(vars.prefix + 'active-bullet');
}
setTimeout(function() {
var params = [];
params.settings = settings;
params.animateActive = settings.animateActive;
params.direction = settings.slideNextDirection;
//run effect
if(effects[settings.effect] == undefined){
console.log('Preparations for ' + settings.effect + ' not found.');
}else{
effects[settings.effect]($slider, params, resetElements);
}
setTimeout(function () {
if (settings.showBullets !== 'never' && settings.changeBullets == 'after') {
vars.navigation.find('.' + vars.prefix + 'active-bullet').removeClass(vars.prefix + 'active-bullet');
vars.navigation.find('#' + vars.next.attr('id') + '-bullet').addClass(vars.prefix + 'active-bullet');
}
settings.callBackNext();
}, settings.effectTime);
}, settings.captionsFadeTime);
},
//get random itemID
getRandom = function (vars) {
var curID = vars.active.attr('id');
var itemCount = vars.items.length;
var nextID = vars.prefix + 'item' + parseInt((Math.random() * itemCount), 10);
var nextKey = nextID.replace(vars.prefix + 'item', '');
if (vars.playedCounter >= itemCount) {
vars.playedCounter = 0;
vars.playedArray = [];
}
if (curID == nextID || vars.playedArray[nextKey] === true) {
return getRandom(vars);
} else {
vars.playedArray[nextKey] = true;
vars.playedCounter++;
return nextID;
}
},
//function to reset elements and style after an effect
resetElements = function ($slider, settings) {
var vars = $slider.data('slider:vars');
//set the active-element on the same z-index as the rest and reset css
vars.next
//add the active-class
.addClass(vars.prefix + 'active')
//and put it above the others
.css({
zIndex: 1,
top: 0,
left: 0,
width: '100%',
height: '100%',
margin: 0,
opacity: 1
});
vars.active
.css({
zIndex: 0,
top: 0,
left: 0,
margin: 0,
opacity: 0
})
//and remove its active class
.removeClass(vars.prefix + 'active');
settings.additionalResets();
//check if cycled is false and start or end is reached
if(!settings.cycled) {
if(settings.controlsPrevNext){
if(isFirst(vars.next)) {
vars.buttons.prev.addClass('disabled');
} else {
vars.buttons.prev.removeClass('disabled');
}
if(isLast(vars.next)) {
vars.buttons.next.addClass('disabled');
pause();
} else {
vars.buttons.next.removeClass('disabled');
}
}
if(settings.controlsPlayPause){
if(isLast(vars.next)) {
vars.buttons.play.addClass('disabled');
pause();
} else {
vars.buttons.play.removeClass('disabled');
}
}
}
if (settings.showBullets !== 'never') {
vars.navigation.find('.' + vars.prefix + 'active-bullet').removeClass(vars.prefix + 'active-bullet');
vars.navigation.find('#' + vars.next.attr('id') + '-bullet').addClass(vars.prefix + 'active-bullet');
}
//make the "next"-element the new active-element
vars.active = vars.next;
//show captions
if (settings.showCaptions !== 'never') {
vars.active.find('.' + vars.prefix + 'caption').stop(true, true).fadeTo(settings.captionsFadeTime, settings.captionsOpacity);
}
vars.container.removeClass('inProgress');
};
this.pause = function () {pause();};
this.play = function () {play();};
this.prev = function ($next) {prev($slider, settings, $next);};
this.next = function ($next) {next($slider, settings, $next);};
this.uninit = function () {
pause();
vars.container.before($(element).data('slider:original'));
$slider.data('slider:vars', null);
vars.container.remove();
$(element).data('rhinoslider', null);
};
init($slider, settings, vars);
};
$.fn.rhinoslider = function (opts) {
return this.each(function () {
var element = $(this);
if (element.data('rhinoslider')) {
return element.data('rhinoslider');
}
element.data('slider:original', element.clone());
var rhinoslider = new rhinoSlider(this, opts);
element.data('rhinoslider', rhinoslider);
});
};
$.fn.rhinoslider.defaults = {
//which effect to blend content
effect: 'slide',
//easing for animations of the slides
easing: 'swing',
//linear or shuffled order for items
randomOrder: false,
//enable/disable mousewheel navigation
controlsMousewheel: true,
//enable/disable keyboard navigation
controlsKeyboard: true,
//show/hide prev/next-controls
controlsPrevNext: true,
//show/hide play/pause-controls
controlsPlayPause: true,
//pause on mouse-over
pauseOnHover: true,
//if the active content should be animated too - depending on effect slide
animateActive: true,
//start slideshow automatically on init
autoPlay: false,
//begin from start if end has reached
cycled: true,
//time, the content is visible before next content will be blend in - depends on autoPlay
showTime: 3000,
//time, the effect will last
effectTime: 1000,
//duration for fading controls
controlFadeTime: 650,
//duration for fading captions
captionsFadeTime: 250,
//opacity for captions
captionsOpacity: 0.7,
//delay for parts in "chewyBars" effect
partDelay: 100,
//width, the animation for moving the content needs, can be comma-seperated string (x,y) or int if both are the same
shiftValue: '150',
//amount of parts per line for shuffle effect
parts: '5,3',
//show image-title: hover, always, never
showCaptions: 'never',
//show navigation: hover, always, never
showBullets: 'hover',
//change bullets before or after the animation
changeBullets: 'after',
//show controls: hover, always, never
showControls: 'hover',
//the direction, the prev-button triggers - depending on effect slide
slidePrevDirection: 'toLeft',
//the direction, the next-button triggers - depending on effect slide
slideNextDirection: 'toRight',
//text for the prev-button
prevText: 'prev',
//text for the next-button
nextText: 'next',
//text for the play-button
playText: 'play',
//text for the pause-button
pauseText: 'pause',
//style which will be transfered to the containerelement
styles: 'position,top,right,bottom,left,margin-top,margin-right,margin-bottom,margin-left,width,height',
//callbacks
//the function, which is started bofore anything is done by this script
callBeforeInit: function () {
return false;
},
//the function, which is started when the slider is ready (only once)
callBackInit: function () {
return false;
},
//the function, which is started before the blending-effect
callBeforeNext: function () {
return false;
},
//the function, which is started before the blending-effect
callBeforePrev: function () {
return false;
},
//the function, which is started after the blending-effect
callBackNext: function () {
return false;
},
//the function, which is started after the blending-effect
callBackPrev: function () {
return false;
},
//the function, which is started if the autoplay intervall starts
callBackPlay: function () {
return false;
},
//the function, which is started if the autoplay intervall ends
callBackPause: function () {
return false;
},
//the function, which is started within resetElements
additionalResets: function () {
return false;
}
};
$.fn.rhinoslider.effects = {
//options: direction, animateActive, easing
slide: function ($slider, params, callback) {
var vars = $slider.data('slider:vars');
var settings = params.settings;
var direction = params.direction;
var values = [];
values.width = vars.container.width();
values.height = vars.container.height();
//if showtime is 0, content is sliding permanently so linear is the way to go
values.easing = settings.showTime === 0 ? 'linear' : settings.easing;
values.nextEasing = settings.showTime === 0 ? 'linear' : settings.easing;
$slider.css('overflow', 'hidden');
//check, in which direction the content will be moved
switch (direction) {
case 'toTop':
values.top = -values.height;
values.left = 0;
values.nextTop = -values.top;
values.nextLeft = 0;
break;
case 'toBottom':
values.top = values.height;
values.left = 0;
values.nextTop = -values.top;
values.nextLeft = 0;
break;
case 'toRight':
values.top = 0;
values.left = values.width;
values.nextTop = 0;
values.nextLeft = -values.left;
break;
case 'toLeft':
values.top = 0;
values.left = -values.width;
values.nextTop = 0;
values.nextLeft = -values.left;
break;
}
//put the "next"-element on top of the others and show/hide it, depending on the effect
vars.next.css({
zIndex: 2,
opacity: 1
});
//if animateActive is false, the active-element will not move
if (settings.animateActive) {
vars.active.css({
top: 0,
left: 0
}).animate({
top: values.top,
left: values.left,
opacity: 1
}, settings.effectTime, values.easing);
}
vars.next
//position "next"-element depending on the direction
.css({
top: values.nextTop,
left: values.nextLeft
}).animate({
top: 0,
left: 0,
opacity: 1
}, settings.effectTime, values.nextEasing, function () {
//reset element-positions
callback($slider, settings);
});
}
};
$.fn.rhinoslider.preparations = {
slide: function ($slider, settings, vars) {
vars.items.css('overflow', 'hidden');
$slider.css('overflow', 'hidden');
}
};
})(jQuery, window);

View file

@ -0,0 +1,61 @@
/**
* Rhinoslider 1.05
* http://rhinoslider.com/
*
* Copyright 2014: Sebastian Pontow, Rene Maas (http://renemaas.de/)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://rhinoslider.com/license/
*/
(function($,window,undefined){$.extend($.easing,{def:'out',out:function(none,currentTime,startValue,endValue,totalTime){return-endValue*(currentTime/=totalTime)*(currentTime-2)+startValue;},kick:function(none,currentTime,startValue,endValue,totalTime){if((currentTime/=totalTime/2)<1){return endValue/2*Math.pow(2,10*(currentTime-1))+startValue;}
return endValue/2*(-Math.pow(2,-10*--currentTime)+2)+startValue;},shuffle:function(none,currentTime,startValue,endValue,totalTime){if((currentTime/=totalTime/2)<1){return endValue/2*currentTime*currentTime*currentTime*currentTime*currentTime+startValue;}
return endValue/2*((currentTime-=2)*currentTime*currentTime*currentTime*currentTime+2)+startValue;}});var rhinoSlider=function(element,opts){var
settings=$.extend({},$.fn.rhinoslider.defaults,opts),$slider=$(element),effects=$.fn.rhinoslider.effects,preparations=$.fn.rhinoslider.preparations,vars={isPlaying:false,intervalAutoPlay:false,active:'',next:'',container:'',items:'',buttons:[],prefix:'rhino-',playedArray:[],playedCounter:0,original:element};settings.callBeforeInit();var
setUpSettings=function(settings){settings.controlsPrevNext=String(settings.controlsPrevNext)=='true'?true:false;settings.controlsKeyboard=String(settings.controlsKeyboard)=='true'?true:false;settings.controlsMousewheel=String(settings.controlsMousewheel)=='true'?true:false;settings.controlsPlayPause=String(settings.controlsPlayPause)=='true'?true:false;settings.pauseOnHover=String(settings.pauseOnHover)=='true'?true:false;settings.animateActive=String(settings.animateActive)=='true'?true:false;settings.autoPlay=String(settings.autoPlay)=='true'?true:false;settings.cycled=String(settings.cycled)=='true'?true:false;settings.showTime=parseInt(settings.showTime,10);settings.effectTime=parseInt(settings.effectTime,10);settings.controlFadeTime=parseInt(settings.controlFadeTime,10);settings.captionsFadeTime=parseInt(settings.captionsFadeTime,10);tmpShiftValue=settings.shiftValue;tmpParts=settings.parts;settings.shiftValue=[];settings.parts=[];return settings;},init=function($slider,settings,vars){settings=setUpSettings(settings);$slider.wrap('<div class="'+vars.prefix+'container">');vars.container=$slider.parent('.'+vars.prefix+'container');vars.isPlaying=settings.autoPlay;var buttons='';if(settings.controlsPrevNext){vars.container.addClass(vars.prefix+'controls-prev-next');buttons='<a class="'+vars.prefix+'prev '+vars.prefix+'btn">'+settings.prevText+'</a><a class="'+vars.prefix+'next '+vars.prefix+'btn">'+settings.nextText+'</a>';vars.container.append(buttons);vars.buttons.prev=vars.container.find('.'+vars.prefix+'prev');vars.buttons.next=vars.container.find('.'+vars.prefix+'next');vars.buttons.prev.click(function(){prev($slider,settings);if(settings.autoPlay){pause();}});vars.buttons.next.click(function(){next($slider,settings);if(settings.autoPlay){pause();}});}
if(settings.controlsPlayPause){vars.container.addClass(vars.prefix+'controls-play-pause');buttons=settings.autoPlay?'<a class="'+vars.prefix+'toggle '+vars.prefix+'pause '+vars.prefix+'btn">'+settings.pauseText+'</a>':'<a class="'+vars.prefix+'toggle '+vars.prefix+'play '+vars.prefix+'btn">'+settings.playText+'</a>';vars.container.append(buttons);vars.buttons.play=vars.container.find('.'+vars.prefix+'toggle');vars.buttons.play.click(function(){if(vars.isPlaying===false){play();}else{pause();}});}
vars.container.find('.'+vars.prefix+'btn').css({position:'absolute',display:'block',cursor:'pointer'});if(settings.showControls!=='always'){var allControls=vars.container.find('.'+vars.prefix+'btn');allControls.stop(true,true).fadeOut(0);if(settings.showControls==='hover'){vars.container.mouseenter(function(){allControls.stop(true,true).fadeIn(settings.controlFadeTime);}).mouseleave(function(){allControls.delay(200).fadeOut(settings.controlFadeTime);});}}
if(settings.showControls!=='never'){vars.container.addClass(vars.prefix+'show-controls');}
vars.items=$slider.children();vars.items.addClass(vars.prefix+'item');vars.items.first().addClass(vars.prefix+'active');var sliderStyles=settings.styles.split(','),style;$.each(sliderStyles,function(i,cssAttribute){style=$.trim(cssAttribute);vars.container.css(style,$slider.css(style));$slider.css(style,' ');switch(style){case'width':case'height':$slider.css(style,'100%');break;}});if(vars.container.css('position')=='static'){vars.container.css('position','relative');}
$slider.css({top:'auto',left:'auto',position:'relative'});vars.items.css({margin:0,width:$slider.css('width'),height:$slider.css('height'),position:'absolute',top:0,left:0,zIndex:0,opacity:0,overflow:'hidden'});vars.items.each(function(i){$(this).attr('id',vars.prefix+'item'+i);});if(settings.showBullets!=='never'){vars.container.addClass(vars.prefix+'show-bullets');var navi='<ol class="'+vars.prefix+'bullets">';vars.items.each(function(i){var $item=$(this);var id=vars.prefix+'item'+i;navi=navi+'<li><a id="'+id+'-bullet" class="'+vars.prefix+'bullet">'+parseInt(i+1,10)+'</a></li>';});navi=navi+'</ol>';vars.container.append(navi);vars.navigation=vars.container.find('.'+vars.prefix+'bullets');vars.buttons.bullets=vars.navigation.find('.'+vars.prefix+'bullet');vars.buttons.bullets.first().addClass(vars.prefix+'active-bullet '+vars.prefix+'first-bullet');vars.buttons.bullets.last().addClass(vars.prefix+'last-bullet');vars.buttons.bullets.click(function(){var itemID=$(this).attr('id').replace('-bullet','');var $next=vars.container.find('#'+itemID);var curID=parseInt(vars.navigation.find('.'+vars.prefix+'active-bullet').attr('id').replace('-bullet','').replace(vars.prefix+'item',''),10);var nextID=parseInt(itemID.replace(vars.prefix+'item',''),10);if(curID<nextID){next($slider,settings,$next);}else if(curID>nextID){prev($slider,settings,$next);}else{return false;}
if(settings.autoPlay){pause();}});}
if(settings.showBullets==='hover'){vars.navigation.hide();vars.container.mouseenter(function(){vars.navigation.stop(true,true).fadeIn(settings.controlFadeTime);}).mouseleave(function(){vars.navigation.delay(200).fadeOut(settings.controlFadeTime);});}
if(settings.showCaptions!=='never'){vars.container.addClass(vars.prefix+'show-captions');vars.items.each(function(){var $item=$(this);if($item.children('.'+vars.prefix+'caption').length==0){if($item.children('img').length>0){var title=$.trim($item.children('img:first').attr('title'));if(undefined!=title||''==title){$item.append('<div class="'+vars.prefix+'caption">'+title+'</div>');$item.children('.'+vars.prefix+'caption:empty').remove();}}}});if(settings.showCaptions==='hover'){$('.'+vars.prefix+'caption').hide();vars.container.mouseenter(function(){vars.active.find('.'+vars.prefix+'caption').stop(true,true).fadeTo(settings.captionFadeTime,settings.captionsOpacity);}).mouseleave(function(){vars.active.find('.'+vars.prefix+'caption').delay(200).fadeOut(settings.captionFadeTime);});}else if(settings.showCaptions==='always'){$('.'+vars.prefix+'caption').fadeTo(0,settings.captionsOpacity);}}
vars.items.each(function(){$(this).children('img').removeAttr('title');});if(settings.autoPlay){vars.intervalAutoPlay=setInterval(function(){next($slider,settings);},settings.showTime);}else{vars.intervalAutoPlay=false;}
if(settings.pauseOnHover){vars.container.addClass(vars.prefix+'pause-on-hover');$slider.mouseenter(function(){if(vars.isPlaying){clearInterval(vars.intervalAutoPlay);if(settings.controlsPlayPause){vars.buttons.play.text(settings.playText).removeClass(vars.prefix+'pause').addClass(vars.prefix+'play');}}}).mouseleave(function(){if(vars.isPlaying){vars.intervalAutoPlay=setInterval(function(){next($slider,settings);},settings.showTime);if(settings.controlsPlayPause){vars.buttons.play.text(settings.pauseText).removeClass(vars.prefix+'play').addClass(vars.prefix+'pause');}}});}
if(settings.controlsKeyboard){vars.container.addClass(vars.prefix+'controls-keyboard');$(document).keyup(function(e){switch(e.keyCode){case 37:pause();prev($slider,settings);break;case 39:pause();next($slider,settings);break;case 80:if(vars.isPlaying===false){play();}else{pause();}
break;}});}
if(settings.controlsMousewheel){vars.container.addClass(vars.prefix+'controls-mousewheel');if(!$.isFunction($.fn.mousewheel)){alert('$.fn.mousewheel is not a function. Please check that you have the mousewheel-plugin installed properly.');}else{$slider.mousewheel(function(e,delta){e.preventDefault();if(vars.container.hasClass('inProgress')){return false;}
var dir=delta>0?'up':'down';if(dir==='up'){pause();prev($slider,settings);}else{pause();next($slider,settings);}});}}
vars.active=$slider.find('.'+vars.prefix+'active');vars.active.css({zIndex:1,opacity:1});if(!settings.cycled){vars.items.each(function(){var $item=$(this);if($item.is(':first-child')){$item.addClass(vars.prefix+'firstItem');}
if($item.is(':last-child')){$item.addClass(vars.prefix+'lastItem');}});if(vars.active.is(':first-child')&&settings.controlsPrevNext){vars.buttons.prev.addClass('disabled');}
if(vars.active.is(':last-child')){if(settings.controlsPrevNext){vars.buttons.next.addClass('disabled');pause();}
if(settings.autoPlay){vars.buttons.play.addClass('disabled');}}}
if(preparations[settings.effect]==undefined){console.log('Effect for '+settings.effect+' not found.');}else{preparations[settings.effect]($slider,settings,vars);}
$slider.data('slider:vars',vars);settings.callBackInit();},isFirst=function($item){return $item.is(':first-child');},isLast=function($item){return $item.is(':last-child');},pause=function(){var vars=$slider.data('slider:vars');clearInterval(vars.intervalAutoPlay);vars.isPlaying=false;if(settings.controlsPlayPause){vars.buttons.play.text(settings.playText).removeClass(vars.prefix+'pause').addClass(vars.prefix+'play');}
settings.callBackPause();},play=function(){var vars=$slider.data('slider:vars');vars.intervalAutoPlay=setInterval(function(){next($slider,settings);},settings.showTime);vars.isPlaying=true;if(settings.controlsPlayPause){vars.buttons.play.text(settings.pauseText).removeClass(vars.prefix+'play').addClass(vars.prefix+'pause');}
settings.callBackPlay();},prev=function($slider,settings,$next){var vars=$slider.data('slider:vars');if(!settings.cycled&&isFirst(vars.active)){return false;}
settings.callBeforePrev();if(vars.container.hasClass('inProgress')){return false;}
vars.container.addClass('inProgress');if(!$next){if(settings.randomOrder){var nextID=getRandom(vars);vars.next=vars.container.find('#'+nextID);}else{vars.next=vars.items.first().hasClass(vars.prefix+'active')?vars.items.last():vars.active.prev();}}else{vars.next=$next;}
if(vars.next.hasClass(vars.prefix+'active')){return false;}
if(settings.showCaptions!=='never'){$('.'+vars.prefix+'caption').stop(true,true).fadeOut(settings.captionsFadeTime);}
if(settings.showBullets!=='never'&&settings.changeBullets=='before'){vars.navigation.find('.'+vars.prefix+'active-bullet').removeClass(vars.prefix+'active-bullet');vars.navigation.find('#'+vars.next.attr('id')+'-bullet').addClass(vars.prefix+'active-bullet');}
setTimeout(function(){var params=[];params.settings=settings;params.animateActive=settings.animateActive;params.direction=settings.slidePrevDirection;if(effects[settings.effect]==undefined){console.log('Preparations for '+settings.effect+' not found.');}else{effects[settings.effect]($slider,params,resetElements);}
setTimeout(function(){if(settings.showBullets!=='never'&&settings.changeBullets=='after'){vars.navigation.find('.'+vars.prefix+'active-bullet').removeClass(vars.prefix+'active-bullet');vars.navigation.find('#'+vars.next.attr('id')+'-bullet').addClass(vars.prefix+'active-bullet');}
settings.callBackPrev();},settings.effectTime);},settings.captionsFadeTime);if(settings.showBullets!=='never'&&settings.changeBullets=='after'){vars.navigation.find('.'+vars.prefix+'active-bullet').removeClass(vars.prefix+'active-bullet');vars.navigation.find('#'+vars.next.attr('id')+'-bullet').addClass(vars.prefix+'active-bullet');}},next=function($slider,settings,$next){var vars=$slider.data('slider:vars');if(!settings.cycled&&isLast(vars.active)){return false;}
settings.callBeforeNext();if(vars.container.hasClass('inProgress')){return false;}
vars.container.addClass('inProgress');if(!$next){if(settings.randomOrder){var nextID=getRandom(vars);vars.next=vars.container.find('#'+nextID);}else{vars.next=vars.items.last().hasClass(vars.prefix+'active')?vars.items.first():vars.active.next();}}else{vars.next=$next;}
if(vars.next.hasClass(vars.prefix+'active')){return false;}
if(settings.showCaptions!=='never'){$('.'+vars.prefix+'caption').stop(true,true).fadeOut(settings.captionsFadeTime);}
if(settings.showBullets!=='never'&&settings.changeBullets=='before'){vars.navigation.find('.'+vars.prefix+'active-bullet').removeClass(vars.prefix+'active-bullet');vars.navigation.find('#'+vars.next.attr('id')+'-bullet').addClass(vars.prefix+'active-bullet');}
setTimeout(function(){var params=[];params.settings=settings;params.animateActive=settings.animateActive;params.direction=settings.slideNextDirection;if(effects[settings.effect]==undefined){console.log('Preparations for '+settings.effect+' not found.');}else{effects[settings.effect]($slider,params,resetElements);}
setTimeout(function(){if(settings.showBullets!=='never'&&settings.changeBullets=='after'){vars.navigation.find('.'+vars.prefix+'active-bullet').removeClass(vars.prefix+'active-bullet');vars.navigation.find('#'+vars.next.attr('id')+'-bullet').addClass(vars.prefix+'active-bullet');}
settings.callBackNext();},settings.effectTime);},settings.captionsFadeTime);},getRandom=function(vars){var curID=vars.active.attr('id');var itemCount=vars.items.length;var nextID=vars.prefix+'item'+parseInt((Math.random()*itemCount),10);var nextKey=nextID.replace(vars.prefix+'item','');if(vars.playedCounter>=itemCount){vars.playedCounter=0;vars.playedArray=[];}
if(curID==nextID||vars.playedArray[nextKey]===true){return getRandom(vars);}else{vars.playedArray[nextKey]=true;vars.playedCounter++;return nextID;}},resetElements=function($slider,settings){var vars=$slider.data('slider:vars');vars.next.addClass(vars.prefix+'active').css({zIndex:1,top:0,left:0,width:'100%',height:'100%',margin:0,opacity:1});vars.active.css({zIndex:0,top:0,left:0,margin:0,opacity:0}).removeClass(vars.prefix+'active');settings.additionalResets();if(!settings.cycled){if(settings.controlsPrevNext){if(isFirst(vars.next)){vars.buttons.prev.addClass('disabled');}else{vars.buttons.prev.removeClass('disabled');}
if(isLast(vars.next)){vars.buttons.next.addClass('disabled');pause();}else{vars.buttons.next.removeClass('disabled');}}
if(settings.controlsPlayPause){if(isLast(vars.next)){vars.buttons.play.addClass('disabled');pause();}else{vars.buttons.play.removeClass('disabled');}}}
if(settings.showBullets!=='never'){vars.navigation.find('.'+vars.prefix+'active-bullet').removeClass(vars.prefix+'active-bullet');vars.navigation.find('#'+vars.next.attr('id')+'-bullet').addClass(vars.prefix+'active-bullet');}
vars.active=vars.next;if(settings.showCaptions!=='never'){vars.active.find('.'+vars.prefix+'caption').stop(true,true).fadeTo(settings.captionsFadeTime,settings.captionsOpacity);}
vars.container.removeClass('inProgress');};this.pause=function(){pause();};this.play=function(){play();};this.prev=function($next){prev($slider,settings,$next);};this.next=function($next){next($slider,settings,$next);};this.uninit=function(){pause();vars.container.before($(element).data('slider:original'));$slider.data('slider:vars',null);vars.container.remove();$(element).data('rhinoslider',null);};init($slider,settings,vars);};$.fn.rhinoslider=function(opts){return this.each(function(){var element=$(this);if(element.data('rhinoslider')){return element.data('rhinoslider');}
element.data('slider:original',element.clone());var rhinoslider=new rhinoSlider(this,opts);element.data('rhinoslider',rhinoslider);});};$.fn.rhinoslider.defaults={effect:'slide',easing:'swing',randomOrder:false,controlsMousewheel:true,controlsKeyboard:true,controlsPrevNext:true,controlsPlayPause:true,pauseOnHover:true,animateActive:true,autoPlay:false,cycled:true,showTime:3000,effectTime:1000,controlFadeTime:650,captionsFadeTime:250,captionsOpacity:0.7,partDelay:100,shiftValue:'150',parts:'5,3',showCaptions:'never',showBullets:'hover',changeBullets:'after',showControls:'hover',slidePrevDirection:'toLeft',slideNextDirection:'toRight',prevText:'prev',nextText:'next',playText:'play',pauseText:'pause',styles:'position,top,right,bottom,left,margin-top,margin-right,margin-bottom,margin-left,width,height',callBeforeInit:function(){return false;},callBackInit:function(){return false;},callBeforeNext:function(){return false;},callBeforePrev:function(){return false;},callBackNext:function(){return false;},callBackPrev:function(){return false;},callBackPlay:function(){return false;},callBackPause:function(){return false;},additionalResets:function(){return false;}};$.fn.rhinoslider.effects={slide:function($slider,params,callback){var vars=$slider.data('slider:vars');var settings=params.settings;var direction=params.direction;var values=[];values.width=vars.container.width();values.height=vars.container.height();values.easing=settings.showTime===0?'linear':settings.easing;values.nextEasing=settings.showTime===0?'linear':settings.easing;$slider.css('overflow','hidden');switch(direction){case'toTop':values.top=-values.height;values.left=0;values.nextTop=-values.top;values.nextLeft=0;break;case'toBottom':values.top=values.height;values.left=0;values.nextTop=-values.top;values.nextLeft=0;break;case'toRight':values.top=0;values.left=values.width;values.nextTop=0;values.nextLeft=-values.left;break;case'toLeft':values.top=0;values.left=-values.width;values.nextTop=0;values.nextLeft=-values.left;break;}
vars.next.css({zIndex:2,opacity:1});if(settings.animateActive){vars.active.css({top:0,left:0}).animate({top:values.top,left:values.left,opacity:1},settings.effectTime,values.easing);}
vars.next.css({top:values.nextTop,left:values.nextLeft}).animate({top:0,left:0,opacity:1},settings.effectTime,values.nextEasing,function(){callback($slider,settings);});}};$.fn.rhinoslider.preparations={slide:function($slider,settings,vars){vars.items.css('overflow','hidden');$slider.css('overflow','hidden');}};})(jQuery,window);

File diff suppressed because it is too large Load diff

View file

@ -256,23 +256,21 @@ switch ($_REQUEST['action']) {
echo "<div id='" . $fsname . "'>"; echo "<div id='" . $fsname . "'>";
$images = Slideshow::get_current_slideshow(); $images = Slideshow::get_current_slideshow();
foreach ($images as $image) { foreach ($images as $image) {
echo "<a href='#'><img src='" . $image['url'] . "' alt='' /></a>"; echo "<img src='" . $image['url'] . "' alt='' onclick='update_action();' />";
} }
echo "</div>"; echo "</div>";
$results['fslider'] = ob_get_clean(); $results['fslider'] = ob_get_clean();
ob_start(); ob_start();
echo "<script language='javascript' type='text/javascript'>"; echo "<script language='javascript' type='text/javascript'>";
echo "$('#" . $fsname . "').rhinoslider({ echo "$('#" . $fsname . "').rhinoslider({
effect: 'shuffle', showTime: 15000,
showTime: 15000, effectTime: 2000,
randomOrder: true, randomOrder: true,
controlsMousewheel: false, controlsPlayPause: false,
controlsKeyboard: false, autoPlay: true,
controlsPrevNext: false, showBullets: 'never',
controlsPlayPause: false, showControls: 'always',
autoPlay: true, controlsMousewheel: false,
pauseOnHover: false,
showControls: 'never'
});"; });";
echo "</script>"; echo "</script>";
$results['fslider_script'] = ob_get_clean(); $results['fslider_script'] = ob_get_clean();

View file

@ -113,9 +113,18 @@ a.tag_size1, a.tag_size2, a.tag_size3, a.tag_size4 { text-decoration: none; }
} }
#aslideshow_container { #aslideshow_container {
width: 800px; width: 50%;
max-width: 800px;
max-height: 600px; max-height: 600px;
height: auto; height: 100%;
margin: 80px auto; margin: 80px auto;
} }
#aslideshow_container .rhino-container {
width: 100% !important;
height: 100% !important;
}
#fslider {
width: 100%;
height: 100%;
}

View file

@ -43,6 +43,7 @@ if (AmpConfig::get('use_rss')) { ?>
<link rel="stylesheet" href="<?php echo $web_path; ?>/templates/jquery-editdialog.css" type="text/css" media="screen" /> <link rel="stylesheet" href="<?php echo $web_path; ?>/templates/jquery-editdialog.css" type="text/css" media="screen" />
<link rel="stylesheet" href="<?php echo $web_path; ?>/modules/jquery-ui/jquery-ui.min.css" type="text/css" media="screen" /> <link rel="stylesheet" href="<?php echo $web_path; ?>/modules/jquery-ui/jquery-ui.min.css" type="text/css" media="screen" />
<link rel="stylesheet" href="<?php echo $web_path; ?>/modules/tag-it/jquery.tagit.css" type="text/css" media="screen" /> <link rel="stylesheet" href="<?php echo $web_path; ?>/modules/tag-it/jquery.tagit.css" type="text/css" media="screen" />
<link rel="stylesheet" href="<?php echo $web_path; ?>/modules/rhinoslider/css/rhinoslider-1.05.css" type="text/css" media="screen" />
<script src="<?php echo $web_path; ?>/modules/jquery/jquery.min.js" language="javascript" type="text/javascript"></script> <script src="<?php echo $web_path; ?>/modules/jquery/jquery.min.js" language="javascript" type="text/javascript"></script>
<script src="<?php echo $web_path; ?>/modules/jquery-ui/jquery-ui.min.js" language="javascript" type="text/javascript"></script> <script src="<?php echo $web_path; ?>/modules/jquery-ui/jquery-ui.min.js" language="javascript" type="text/javascript"></script>
<script src="<?php echo $web_path; ?>/modules/prettyPhoto/js/jquery.prettyPhoto.js" language="javascript" type="text/javascript"></script> <script src="<?php echo $web_path; ?>/modules/prettyPhoto/js/jquery.prettyPhoto.js" language="javascript" type="text/javascript"></script>
@ -50,7 +51,7 @@ if (AmpConfig::get('use_rss')) { ?>
<script src="<?php echo $web_path; ?>/modules/noty/packaged/jquery.noty.packaged.min.js" language="javascript" type="text/javascript"></script> <script src="<?php echo $web_path; ?>/modules/noty/packaged/jquery.noty.packaged.min.js" language="javascript" type="text/javascript"></script>
<script src="<?php echo $web_path; ?>/modules/jscroll/jquery.jscroll.min.js" language="javascript" type="text/javascript"></script> <script src="<?php echo $web_path; ?>/modules/jscroll/jquery.jscroll.min.js" language="javascript" type="text/javascript"></script>
<script src="<?php echo $web_path; ?>/modules/jquery/jquery.qrcode.min.js" language="javascript" type="text/javascript"></script> <script src="<?php echo $web_path; ?>/modules/jquery/jquery.qrcode.min.js" language="javascript" type="text/javascript"></script>
<script src="<?php echo $web_path; ?>/modules/rhinoslider/rhinoslider-1.05.js" language="javascript" type="text/javascript"></script> <script src="<?php echo $web_path; ?>/modules/rhinoslider/js/rhinoslider-1.05.min.js" language="javascript" type="text/javascript"></script>
<script src="<?php echo $web_path; ?>/lib/javascript/base.js" language="javascript" type="text/javascript"></script> <script src="<?php echo $web_path; ?>/lib/javascript/base.js" language="javascript" type="text/javascript"></script>
<script src="<?php echo $web_path; ?>/lib/javascript/ajax.js" language="javascript" type="text/javascript"></script> <script src="<?php echo $web_path; ?>/lib/javascript/ajax.js" language="javascript" type="text/javascript"></script>
<script src="<?php echo $web_path; ?>/lib/javascript/tools.js" language="javascript" type="text/javascript"></script> <script src="<?php echo $web_path; ?>/lib/javascript/tools.js" language="javascript" type="text/javascript"></script>
@ -162,10 +163,7 @@ function init_slideshow_refresh()
tSlideshow = null; tSlideshow = null;
$("#aslideshow").height($(document).height()) $("#aslideshow").height($(document).height())
.css({'display': 'inline'}) .css({'display': 'inline'});
.click(function(e) {
update_action();
});
iSlideshow = true; iSlideshow = true;
refresh_slideshow(); refresh_slideshow();