diff --git a/view/theme/smoothly/js/jquery.ae.image.resize.js b/view/theme/smoothly/js/jquery.ae.image.resize.js new file mode 100644 index 000000000..bac09cd45 --- /dev/null +++ b/view/theme/smoothly/js/jquery.ae.image.resize.js @@ -0,0 +1,69 @@ +(function( $ ) { + + $.fn.aeImageResize = function( params ) { + + var aspectRatio = 0 + // Nasty I know but it's done only once, so not too bad I guess + // Alternate suggestions welcome :) + , isIE6 = $.browser.msie && (6 == ~~ $.browser.version) + ; + + // We cannot do much unless we have one of these + if ( !params.height && !params.width ) { + return this; + } + + // Calculate aspect ratio now, if possible + if ( params.height && params.width ) { + aspectRatio = params.width / params.height; + } + + // Attach handler to load + // Handler is executed just once per element + // Load event required for Webkit browsers + return this.one( "load", function() { + + // Remove all attributes and CSS rules + this.removeAttribute( "height" ); + this.removeAttribute( "width" ); + this.style.height = this.style.width = ""; + + var imgHeight = this.height + , imgWidth = this.width + , imgAspectRatio = imgWidth / imgHeight + , bxHeight = params.height + , bxWidth = params.width + , bxAspectRatio = aspectRatio; + + // Work the magic! + // If one parameter is missing, we just force calculate it + if ( !bxAspectRatio ) { + if ( bxHeight ) { + bxAspectRatio = imgAspectRatio + 1; + } else { + bxAspectRatio = imgAspectRatio - 1; + } + } + + // Only resize the images that need resizing + if ( (bxHeight && imgHeight > bxHeight) || (bxWidth && imgWidth > bxWidth) ) { + + if ( imgAspectRatio > bxAspectRatio ) { + bxHeight = ~~ ( imgHeight / imgWidth * bxWidth ); + } else { + bxWidth = ~~ ( imgWidth / imgHeight * bxHeight ); + } + + this.height = bxHeight; + this.width = bxWidth; + } + }) + .each(function() { + + // Trigger load event (for Gecko and MSIE) + if ( this.complete || isIE6 ) { + $( this ).trigger( "load" ); + } + }); + }; +})( jQuery ); \ No newline at end of file diff --git a/view/theme/smoothly/js/jquery.ae.image.resize.min.js b/view/theme/smoothly/js/jquery.ae.image.resize.min.js new file mode 100644 index 000000000..16c30b123 --- /dev/null +++ b/view/theme/smoothly/js/jquery.ae.image.resize.min.js @@ -0,0 +1 @@ +(function(d){d.fn.aeImageResize=function(a){var i=0,j=d.browser.msie&&6==~~d.browser.version;if(!a.height&&!a.width)return this;if(a.height&&a.width)i=a.width/a.height;return this.one("load",function(){this.removeAttribute("height");this.removeAttribute("width");this.style.height=this.style.width="";var e=this.height,f=this.width,g=f/e,b=a.height,c=a.width,h=i;h||(h=b?g+1:g-1);if(b&&e>b||c&&f>c){if(g>h)b=~~(e/f*c);else c=~~(f/e*b);this.height=b;this.width=c}}).each(function(){if(this.complete||j)d(this).trigger("load")})}})(jQuery); \ No newline at end of file diff --git a/view/theme/smoothly/theme.php b/view/theme/smoothly/theme.php index e28cc811f..95cc9bd73 100644 --- a/view/theme/smoothly/theme.php +++ b/view/theme/smoothly/theme.php @@ -2,18 +2,118 @@ /* * Name: Smoothly - * Version: Version 0.3 - * Author: Alex - * Maintainer: Alex alex@friendica.pixelbits.de> - * Description: Theme optimized for Tablets (iPad etc.) - * Screenshot: Screenshot + * Description: Theme opzimized for Tablets + * Version: 0.4 + * Author: Alex + * Maintainer: Alex + * Screenshot: Screenshot */ +$a->theme_info = array( + 'extends' => 'smoothly', +); +function smoothly_init(&$a) { $a->page['htmlhead'] .= <<< EOT EOT; +// get resize configuration + +$resize=false; +$site_resize = get_config('smoothly', 'resize' ); +if(local_user()) $resize = get_pconfig(local_user(), 'smoothly', 'resize' ); + +if ($resize===false) $resize=$site_resize; +if ($resize===false) $resize=0; + +if (intval($resize) > 0) { +//load jquery.ae.image.resize.js +$imageresizeJS = $a->get_baseurl($ssl_state)."/view/theme/smoothly/js/jquery.ae.image.resize.js"; +$a->page['htmlhead'] .= sprintf('', $imageresizeJS); +$a->page['htmlhead'] .= ' +';} +} +