summaryrefslogtreecommitdiffstats
path: root/core/js
diff options
context:
space:
mode:
authorJan-Christoph Borchardt <JanCBorchardt@fsfe.org>2011-08-12 11:26:13 +0200
committerJan-Christoph Borchardt <JanCBorchardt@fsfe.org>2011-08-12 11:26:13 +0200
commit6c4d075bd656497e793c230818c53fa085cbbbf9 (patch)
tree55aff5d2c17074056998537eb441227ff64d9cd5 /core/js
parent3747ba928ff573a8c50943ac8748ec2c24cbba09 (diff)
downloadnextcloud-server-6c4d075bd656497e793c230818c53fa085cbbbf9.tar.gz
nextcloud-server-6c4d075bd656497e793c230818c53fa085cbbbf9.zip
added jquery-tipsy for nice title tooltips
Diffstat (limited to 'core/js')
-rw-r--r--core/js/jquery-showpassword.js113
-rw-r--r--core/js/jquery-tipsy.js108
-rw-r--r--core/js/js.js121
3 files changed, 226 insertions, 116 deletions
diff --git a/core/js/jquery-showpassword.js b/core/js/jquery-showpassword.js
new file mode 100644
index 00000000000..0f4678327a3
--- /dev/null
+++ b/core/js/jquery-showpassword.js
@@ -0,0 +1,113 @@
+/*
+* @name Show Password
+* @descripton
+* @version 1.3
+* @requires Jquery 1.5
+*
+* @author Jan Jarfalk
+* @author-email jan.jarfalk@unwrongest.com
+* @author-website http://www.unwrongest.com
+*
+* @special-thanks Michel Gratton
+*
+* @licens MIT License - http://www.opensource.org/licenses/mit-license.php
+*/
+(function($){
+ $.fn.extend({
+ showPassword: function(c) {
+
+ // Setup callback object
+ var callback = {'fn':null,'args':{}}
+ callback.fn = c;
+
+ // Clones passwords and turn the clones into text inputs
+ var cloneElement = function( element ) {
+
+ var $element = $(element);
+
+ $clone = $("<input />");
+
+ // Name added for JQuery Validation compatibility
+ // Element name is required to avoid script warning.
+ $clone.attr({
+ 'type' : 'text',
+ 'class' : $element.attr('class'),
+ 'style' : $element.attr('style'),
+ 'size' : $element.attr('size'),
+ 'name' : $element.attr('name')+'-clone',
+ 'tabindex' : $element.attr('tabindex')
+ });
+
+ return $clone;
+
+ };
+
+ // Transfers values between two elements
+ var update = function(a,b){
+ b.val(a.val());
+ };
+
+ // Shows a or b depending on checkbox
+ var setState = function( checkbox, a, b ){
+
+ if(checkbox.is(':checked')){
+ update(a,b);
+ b.show();
+ a.hide();
+ } else {
+ update(b,a);
+ b.hide();
+ a.show();
+ }
+
+ };
+
+ return this.each(function() {
+
+ var $input = $(this),
+ $checkbox = $($input.data('typetoggle'));
+
+ // Create clone
+ var $clone = cloneElement($input);
+ $clone.insertAfter($input);
+
+ // Set callback arguments
+ if(callback.fn){
+ callback.args.input = $input;
+ callback.args.checkbox = $checkbox;
+ callback.args.clone = $clone;
+ }
+
+
+
+ $checkbox.bind('click', function() {
+ setState( $checkbox, $input, $clone );
+ });
+
+ $input.bind('keyup', function() {
+ update( $input, $clone )
+ });
+
+ $clone.bind('keyup', function(){
+ update( $clone, $input );
+
+ // Added for JQuery Validation compatibility
+ // This will trigger validation if it's ON for keyup event
+ $input.trigger('keyup');
+
+ });
+
+ // Added for JQuery Validation compatibility
+ // This will trigger validation if it's ON for blur event
+ $clone.bind('blur', function() { $input.trigger('focusout'); });
+
+ setState( $checkbox, $input, $clone );
+
+ if( callback.fn ){
+ callback.fn( callback.args );
+ }
+
+ });
+ }
+ });
+})(jQuery);
diff --git a/core/js/jquery-tipsy.js b/core/js/jquery-tipsy.js
new file mode 100644
index 00000000000..58d834771ff
--- /dev/null
+++ b/core/js/jquery-tipsy.js
@@ -0,0 +1,108 @@
+// tipsy - Facebook-style tooltip plugin for jQuery
+// (c) 2008-2009 Jason Frame (jason@onehackoranother.com)
+// Released under The MIT License.
+
+(function($) {
+ $.fn.tipsy = function(options) {
+
+ options = $.extend({}, $.fn.tipsy.defaults, options);
+
+ return this.each(function() {
+
+ var opts = $.fn.tipsy.elementOptions(this, options);
+
+ $(this).hover(function() {
+
+ $.data(this, 'cancel.tipsy', true);
+
+ var tip = $.data(this, 'active.tipsy');
+ if (!tip) {
+ tip = $('<div class="tipsy"><div class="tipsy-inner"/></div>');
+ tip.css({position: 'absolute', zIndex: 100000});
+ $.data(this, 'active.tipsy', tip);
+ }
+
+ if ($(this).attr('title') || typeof($(this).attr('original-title')) != 'string') {
+ $(this).attr('original-title', $(this).attr('title') || '').removeAttr('title');
+ }
+
+ var title;
+ if (typeof opts.title == 'string') {
+ title = $(this).attr(opts.title == 'title' ? 'original-title' : opts.title);
+ } else if (typeof opts.title == 'function') {
+ title = opts.title.call(this);
+ }
+
+ tip.find('.tipsy-inner')[opts.html ? 'html' : 'text'](title || opts.fallback);
+
+ var pos = $.extend({}, $(this).offset(), {width: this.offsetWidth, height: this.offsetHeight});
+ tip.get(0).className = 'tipsy'; // reset classname in case of dynamic gravity
+ tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).appendTo(document.body);
+ var actualWidth = tip[0].offsetWidth, actualHeight = tip[0].offsetHeight;
+ var gravity = (typeof opts.gravity == 'function') ? opts.gravity.call(this) : opts.gravity;
+
+ switch (gravity.charAt(0)) {
+ case 'n':
+ tip.css({top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-north');
+ break;
+ case 's':
+ tip.css({top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-south');
+ break;
+ case 'e':
+ tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}).addClass('tipsy-east');
+ break;
+ case 'w':
+ tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}).addClass('tipsy-west');
+ break;
+ }
+
+ if (opts.fade) {
+ tip.css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: 0.8});
+ } else {
+ tip.css({visibility: 'visible'});
+ }
+
+ }, function() {
+ $.data(this, 'cancel.tipsy', false);
+ var self = this;
+ setTimeout(function() {
+ if ($.data(this, 'cancel.tipsy')) return;
+ var tip = $.data(self, 'active.tipsy');
+ if (opts.fade) {
+ tip.stop().fadeOut(function() { $(this).remove(); });
+ } else {
+ tip.remove();
+ }
+ }, 100);
+
+ });
+
+ });
+
+ };
+
+ // Overwrite this method to provide options on a per-element basis.
+ // For example, you could store the gravity in a 'tipsy-gravity' attribute:
+ // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });
+ // (remember - do not modify 'options' in place!)
+ $.fn.tipsy.elementOptions = function(ele, options) {
+ return $.metadata ? $.extend({}, options, $(ele).metadata()) : options;
+ };
+
+ $.fn.tipsy.defaults = {
+ fade: false,
+ fallback: '',
+ gravity: 'n',
+ html: false,
+ title: 'title'
+ };
+
+ $.fn.tipsy.autoNS = function() {
+ return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n';
+ };
+
+ $.fn.tipsy.autoWE = function() {
+ return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';
+ };
+
+})(jQuery);
diff --git a/core/js/js.js b/core/js/js.js
index 30cf01d0b22..b66f0a559dd 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -288,7 +288,11 @@ $(document).ready(function(){
});
$('#settings #expand').hover(function(){
$('#settings #expand+span').fadeToggle();
- })
+ });
+
+ $('a.file_action').tipsy({gravity:'s', live:true});
+ $('.selectedActions a').tipsy({gravity:'n', live:true});
+ $('.selectedActions a.delete').tipsy({gravity: 'ne', live:true});
});
if (!Array.prototype.map){
@@ -314,118 +318,3 @@ if (!Array.prototype.map){
return res;
};
}
-
-
-/*
-* @name Show Password
-* @descripton
-* @version 1.3
-* @requires Jquery 1.5
-*
-* @author Jan Jarfalk
-* @author-email jan.jarfalk@unwrongest.com
-* @author-website http://www.unwrongest.com
-*
-* @special-thanks Michel Gratton
-*
-* @licens MIT License - http://www.opensource.org/licenses/mit-license.php
-*/
-(function($){
- $.fn.extend({
- showPassword: function(c) {
-
- // Setup callback object
- var callback = {'fn':null,'args':{}}
- callback.fn = c;
-
- // Clones passwords and turn the clones into text inputs
- var cloneElement = function( element ) {
-
- var $element = $(element);
-
- $clone = $("<input />");
-
- // Name added for JQuery Validation compatibility
- // Element name is required to avoid script warning.
- $clone.attr({
- 'type' : 'text',
- 'class' : $element.attr('class'),
- 'style' : $element.attr('style'),
- 'size' : $element.attr('size'),
- 'name' : $element.attr('name')+'-clone',
- 'tabindex' : $element.attr('tabindex')
- });
-
- return $clone;
-
- };
-
- // Transfers values between two elements
- var update = function(a,b){
- b.val(a.val());
- };
-
- // Shows a or b depending on checkbox
- var setState = function( checkbox, a, b ){
-
- if(checkbox.is(':checked')){
- update(a,b);
- b.show();
- a.hide();
- } else {
- update(b,a);
- b.hide();
- a.show();
- }
-
- };
-
- return this.each(function() {
-
- var $input = $(this),
- $checkbox = $($input.data('typetoggle'));
-
- // Create clone
- var $clone = cloneElement($input);
- $clone.insertAfter($input);
-
- // Set callback arguments
- if(callback.fn){
- callback.args.input = $input;
- callback.args.checkbox = $checkbox;
- callback.args.clone = $clone;
- }
-
-
-
- $checkbox.bind('click', function() {
- setState( $checkbox, $input, $clone );
- });
-
- $input.bind('keyup', function() {
- update( $input, $clone )
- });
-
- $clone.bind('keyup', function(){
- update( $clone, $input );
-
- // Added for JQuery Validation compatibility
- // This will trigger validation if it's ON for keyup event
- $input.trigger('keyup');
-
- });
-
- // Added for JQuery Validation compatibility
- // This will trigger validation if it's ON for blur event
- $clone.bind('blur', function() { $input.trigger('focusout'); });
-
- setState( $checkbox, $input, $clone );
-
- if( callback.fn ){
- callback.fn( callback.args );
- }
-
- });
- }
- });
-})(jQuery);