Skip to content

Commit

Permalink
Fixed issue #6472 : Rank question overlaps if hidden by condition
Browse files Browse the repository at this point in the history
Dev: add jquery.actual.js plugin to get "height if show", include directory for LICENCE.txt
Dev: plugin can be removed with jquery 1.7.2 / jquery ui 1.8.19 (or ui 1.8.22)
  • Loading branch information
Shnoulle committed Aug 13, 2012
1 parent 23923fc commit 4327ce3
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 2 deletions.
1 change: 1 addition & 0 deletions application/helpers/qanda_helper.php
Expand Up @@ -2170,6 +2170,7 @@ function do_ranking($ia)
$answer.="<div id=\"htmlblock-{$ia['0']}-{$ansrow['code']}\">{$ansrow['answer']}</div>";
}
$answer .="</div>";
header_includes("jquery/jquery.actual/jquery.actual.min.js"); // For jquery 1.5, can be removed with jquery 1.7, then had to rework on ranking.js
header_includes("ranking.js");
header_includes("ranking.css","css");

Expand Down
20 changes: 20 additions & 0 deletions scripts/jquery/jquery.actual/LICENSE.txt
@@ -0,0 +1,20 @@
Copyright 2011, Ben Lin (http://dreamerslab.com/)

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
103 changes: 103 additions & 0 deletions scripts/jquery/jquery.actual/jquery.actual.js
@@ -0,0 +1,103 @@
/*! Copyright 2012, Ben Lin (http://dreamerslab.com/)
* Licensed under the MIT License (LICENSE.txt).
*
* Version: 1.0.8
*
* Requires: jQuery 1.2.3 ~ 1.7.2
*/
;( function ( $ ){
$.fn.extend({
actual : function ( method, options ){
// check if the jQuery method exist
if( !this[ method ]){
throw '$.actual => The jQuery method "' + method + '" you called does not exist';
}

var defaults = {
absolute : false,
clone : false,
includeMargin : undefined
};

var configs = $.extend( defaults, options );

var $target = this;
var fix, restore;

if( configs.clone === true ){
fix = function (){
var css = {
position : 'absolute',
top : -1000
};

// this is useful with css3pie
$target = $target.
filter( ':first' ).
clone().
css( css ).
appendTo( 'body' );
};

restore = function (){
// remove DOM element after getting the width
$target.remove();
};
}else{
var tmp = [];
var $hidden, css;

fix = function (){
// get all hidden parents
$hidden = $target.
parents().
andSelf().
filter( ':hidden' );

css = {
visibility : 'hidden',
display : 'block'
};

if( configs.absolute === true ) css.position = 'absolute';

// save the origin style props
// set the hidden el css to be got the actual value later
$hidden.each( function (){
var $this = $( this );

// Save original style. If no style was set, attr() returns undefined
tmp.push( $this.attr( 'style' ));
$this.css( css );
});
};

restore = function (){
// restore origin style values
$hidden.each( function ( i ){
var $this = $( this );
var _tmp = tmp[ i ];

if( _tmp === undefined ){
$this.removeAttr( 'style' );
}else{
$this.attr( 'style', _tmp );
}
});
};
}

fix();
// get the actual value with user specific methed
// it can be 'width', 'height', 'outerWidth', 'innerWidth'... etc
// configs.includeMargin only works for 'outerWidth' and 'outerHeight'
var actual = /(outer)/g.test( method ) ?
$target[ method ]( configs.includeMargin ) :
$target[ method ]();

restore();
// IMPORTANT, this plugin only return the value of the first element
return actual;
}
});
})( jQuery );
8 changes: 8 additions & 0 deletions scripts/jquery/jquery.actual/jquery.actual.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions scripts/ranking.js
Expand Up @@ -137,7 +137,7 @@ function fixChoiceHeight(qID){
maxHeight=0;
$('.connectedSortable'+qID+' li').each(function(){
if ($(this).height()>maxHeight){
maxHeight=$(this).height();
maxHeight=$(this).actual('height');
}
});
$('.connectedSortable'+qID+' li').height(maxHeight);
Expand All @@ -146,7 +146,7 @@ function fixChoiceHeight(qID){
function fixListHeight(qID){
totalHeight=0;
$('.connectedSortable'+qID+' li').each(function(){
totalHeight=totalHeight+$(this).outerHeight(true);
totalHeight=totalHeight+$(this).actual('outerHeight',{includeMargin:true});;
});
$('.connectedSortable'+qID).height(totalHeight);
}
Expand Down

0 comments on commit 4327ce3

Please sign in to comment.