summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/css/jquery-tipsy.css7
-rw-r--r--core/img/jquery-tipsy.gifbin0 -> 867 bytes
-rw-r--r--core/js/jquery-showpassword.js113
-rw-r--r--core/js/jquery-tipsy.js108
-rw-r--r--core/js/js.js121
-rw-r--r--files/css/files.css2
-rw-r--r--files/js/files.js4
-rw-r--r--files/templates/index.php9
-rw-r--r--lib/base.php5
9 files changed, 246 insertions, 123 deletions
diff --git a/core/css/jquery-tipsy.css b/core/css/jquery-tipsy.css
new file mode 100644
index 00000000000..5075f41c9f6
--- /dev/null
+++ b/core/css/jquery-tipsy.css
@@ -0,0 +1,7 @@
+.tipsy { padding: 5px; font-size: 10px; opacity: 0.8; filter: alpha(opacity=80); background-repeat: no-repeat; background-image: url(../img/jquery-tipsy.gif); }
+ .tipsy-inner { padding: 5px 8px 4px 8px; background-color: black; color: white; max-width: 200px; text-align: center; }
+ .tipsy-inner { -moz-border-radius:3px; -webkit-border-radius:3px; }
+ .tipsy-north { background-position: top center; }
+ .tipsy-south { background-position: bottom center; }
+ .tipsy-east { background-position: right center; }
+ .tipsy-west { background-position: left center; }
diff --git a/core/img/jquery-tipsy.gif b/core/img/jquery-tipsy.gif
new file mode 100644
index 00000000000..eb7718dfc16
--- /dev/null
+++ b/core/img/jquery-tipsy.gif
Binary files differ
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);
diff --git a/files/css/files.css b/files/css/files.css
index c856d3a6bdd..2ff985cfc3b 100644
--- a/files/css/files.css
+++ b/files/css/files.css
@@ -39,7 +39,7 @@ table th .name { float:left; margin-left:.5em; }
table th.multiselect { background:#ddd; color:#000; font-weight:bold; }
table th, table td { border-bottom:1px solid #ddd; text-align:left; font-weight:normal; }
table td { border-bottom:1px solid #eee; font-style:normal; background-position:1em .5em; background-repeat:no-repeat; }
-table th#headerSize, table td.filesize { width:5em; padding:0 1em; text-align:right; }
+table th#headerSize, table td.filesize { width:3em; padding:0 1em; text-align:right; }
table th#headerDate, table td.date { width:11em; padding:0 .1em 0 1em; text-align:left; }
table td.selection, table th.selection, table td.fileaction { width:2em; text-align:center; }
table td.filename a.name { display:block; height:1.5em; vertical-align:middle; margin-left:3em; }
diff --git a/files/js/files.js b/files/js/files.js
index 6af021c35bc..8fd4b95ec7b 100644
--- a/files/js/files.js
+++ b/files/js/files.js
@@ -17,6 +17,10 @@ $(document).ready(function() {
$('#file_upload_start').trigger('click');
return false;
});
+
+ $('#file_upload_button_wrapper').tipsy({gravity:'e'});
+ $('td.filesize').tipsy({gravity:'se', live:true});
+ $('td .modified').tipsy({gravity:'s', live:true});
// Sets the file-action buttons behaviour :
$('tr').live('mouseenter',function(event) {
diff --git a/files/templates/index.php b/files/templates/index.php
index a2cf037c756..7ebb6e46949 100644
--- a/files/templates/index.php
+++ b/files/templates/index.php
@@ -6,10 +6,9 @@
<input type="hidden" class="max_human_file_size" value="(max <?php echo $_['uploadMaxHumanFilesize']; ?>)">
<input type="hidden" name="dir" value="<?php echo $_['dir'] ?>" id="dir">
<div class="file_upload_wrapper" class="svg">
- <input type="submit" class="file_upload_filename" value="<?php echo $l->t('Upload');
- if($_['uploadMaxFilesize']<(10000000000)){echo ' (max. '.$_['uploadMaxHumanFilesize'].')';}?>"/>
+ <input type="submit" class="file_upload_filename" value="<?php echo $l->t('Upload'); ?>"/>
<input id="file_upload_start" class="file_upload_start" type="file" name='files[]'/>
- <a href="#" id="file_upload_button_wrapper" onclick="return false;"></a>
+ <a href="#" id="file_upload_button_wrapper" onclick="return false;" title="<?php echo 'max. '.$_['uploadMaxHumanFilesize'] ?>"></a>
</div>
<iframe name="file_upload_target_1" class='file_upload_target' src=""></iframe>
</form>
@@ -33,8 +32,8 @@
<!--<a href="" title="" class="share">Share</a>-->
</span>
</th>
- <th id='headerSize'><?php echo $l->t( 'Size MB' ); ?></th>
- <th id='headerDate'><span id="modified"><?php echo $l->t( 'Modified' ); ?></span><span class='selectedActions'><a href="" title="Delete" class="delete"><img class='svg' alt="<?php echo $l->t('Delete')?>" src="../core/img/actions/delete.svg" /></a></span></th>
+ <th id="headerSize"><?php echo $l->t( 'Size' ); ?></th>
+ <th id="headerDate"><span id="modified"><?php echo $l->t( 'Modified' ); ?></span><span class="selectedActions"><a href="" title="Delete" class="delete"><img class="svg" alt="<?php echo $l->t('Delete')?>" src="../core/img/actions/delete.svg" /></a></span></th>
</tr>
</thead>
<tbody id="fileList">
diff --git a/lib/base.php b/lib/base.php
index 2e735514347..dc3ed4129cd 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -148,12 +148,15 @@ OC_Group::setBackend( OC_Config::getValue( "groupbackend", "database" ));
// Add the stuff we need always
OC_Util::addScript( "jquery-1.6.2.min" );
OC_Util::addScript( "jquery-ui-1.8.14.custom.min" );
+OC_Util::addScript( "jquery-showpassword" );
+OC_Util::addScript( "jquery-tipsy" );
OC_Util::addScript( "js" );
OC_Util::addScript( "multiselect" );
OC_Util::addScript('search','result');
-OC_Util::addStyle( "jquery-ui-1.8.14.custom" );
OC_Util::addStyle( "styles" );
OC_Util::addStyle( "multiselect" );
+OC_Util::addStyle( "jquery-ui-1.8.14.custom" );
+OC_Util::addStyle( "jquery-tipsy" );
// Load Apps
// This includes plugins for users and filesystems as well