diff options
Diffstat (limited to 'themes/default')
| -rw-r--r-- | themes/default/js/fullsize.js | 134 | ||||
| -rw-r--r-- | themes/default/views/photo.html.php | 18 | 
2 files changed, 75 insertions, 77 deletions
| diff --git a/themes/default/js/fullsize.js b/themes/default/js/fullsize.js index f95dc428..b2895c23 100644 --- a/themes/default/js/fullsize.js +++ b/themes/default/js/fullsize.js @@ -1,78 +1,76 @@  /**   * @todo Move inline CSS out to external style sheet (theme style sheet)   */ -$(document).ready(function() { -  $(".gFullSizeLink").click(function() { -    var width = $(document).width(); -    var height = $(document).height(); +var show_full_size = function(image_url, image_width, image_height) { +  /* +   * Calculate the size of the image panel based on the size of the image and the size of the +   * window.  Scale the image so the entire panel fits in the view port. +   */ +  function _auto_fit(imageWidth, imageHeight) { +    // ui-dialog gives a padding of 2 pixels +    var windowWidth = $(window).width() - 10; +    var windowHeight = $(window).height() - 10; -    $("body").append('<div id="gFullsizeOverlay" class="ui-dialog-overlay" ' + -      'style="border: none; margin: 0; padding: 0; background-color: #000; ' + -      'position: absolute; top: 0px; left: 0px; ' + -      'width: ' + width + 'px; height: ' + height + 'px; opacity: 0.7; filter: alpha(opacity=70);' + -      '-moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; ' + -      '-moz-background-inline-policy: -moz-initial; z-index: 1001;"> </div>'); +    /* If the width is greater then scale the image width first */ +    if (imageWidth > windowWidth) { +      var ratio = windowWidth / imageWidth; +      imageWidth *= ratio; +      imageHeight *= ratio; +    } +    /* after scaling the width, check that the height fits */ +    if (imageHeight > windowHeight) { +      var ratio = windowHeight / imageHeight; +      imageWidth *= ratio; +      imageHeight *= ratio; +    } -    var image_size = _auto_fit(fullsize_detail.width, fullsize_detail.height); +    // handle the case where the calculation is almost zero (2.14e-14) +    return { +      top: ((windowHeight - imageHeight) / 2).toFixed(2), +      left: ((windowWidth - imageWidth) / 2).toFixed(2), +      width: imageWidth.toFixed(2), +      height: imageHeight.toFixed(2) +    }; +  } -    $("body").append('<div id="gFullsize" class="ui-dialog ui-widget" ' + -      'style="overflow: hidden; display: block; ' + -      'position: absolute; z-index: 1002; outline-color: -moz-use-text-color; ' + -      'outline-style: none; outline-width: 0px; ' + -      'height: ' + image_size.height + 'px; ' + -      'width: ' + image_size.width + 'px; ' + -      'top: ' + image_size.top + 'px; left: ' + image_size.left + 'px;">' + -      '<img id="gFullSizeImage" src="' + fullsize_detail.url + '"' + -      'height="' + image_size.height + '" width="' + image_size.width + '"/></div>'); +  var width = $(document).width(); +  var height = $(document).height(); -    $("#gFullsize").append('<span id="gFullsizeClose" class="fg-button ui-icon ui-state-default ' + -      'ui-icon-closethick ui-corner-all" style="z-index: 1003; position: absolute; ' + -      'right: 1em; top: 1em;"></span>'); -    $("#gFullsizeClose").click(function() { -      $("#gFullsizeOverlay*").remove(); -      $("#gFullsize").remove(); -    }); -    $(window).resize(function() { -      $("#gFullsizeOverlay").width($(document).width()); -      $("#gFullsizeOverlay").height($(document).height()); -      image_size = _auto_fit(fullsize_detail.width, fullsize_detail.height); -      $("#gFullsize").height(image_size.height); -      $("#gFullsize").width(image_size.width); -      $("#gFullsize").css("top", image_size.top); -      $("#gFullsize").css("left", image_size.left); -      $("#gFullSizeImage").height(image_size.height); -      $("#gFullSizeImage").width(image_size.width); -    }); -  }); -}); +  $("body").append('<div id="gFullsizeOverlay" class="ui-dialog-overlay" ' + +		   'style="border: none; margin: 0; padding: 0; background-color: #000; ' + +		   'position: absolute; top: 0px; left: 0px; ' + +		   'width: ' + width + 'px; height: ' + height + 'px; opacity: 0.7; filter: alpha(opacity=70);' + +		   '-moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; ' + +		   '-moz-background-inline-policy: -moz-initial; z-index: 1001;"> </div>'); -/* - * Calculate the size of the image panel based on the size of the image and the size of the - * window.  Scale the image so the entire panel fits in the view port. - */ -function _auto_fit(imageWidth, imageHeight) { -  // ui-dialog gives a padding of 2 pixels -  var windowWidth = $(window).width() - 10; -  var windowHeight = $(window).height() - 10; +  var image_size = _auto_fit(image_width, image_height); -  /* If the width is greater then scale the image width first */ -  if (imageWidth > windowWidth) { -    var ratio = windowWidth / imageWidth; -    imageWidth *= ratio; -    imageHeight *= ratio; -  } -  /* after scaling the width, check that the height fits */ -  if (imageHeight > windowHeight) { -    var ratio = windowHeight / imageHeight; -    imageWidth *= ratio; -    imageHeight *= ratio; -  } +  $("body").append('<div id="gFullsize" class="ui-dialog ui-widget" ' + +		   'style="overflow: hidden; display: block; ' + +		   'position: absolute; z-index: 1002; outline-color: -moz-use-text-color; ' + +		   'outline-style: none; outline-width: 0px; ' + +		   'height: ' + image_size.height + 'px; ' + +		   'width: ' + image_size.width + 'px; ' + +		   'top: ' + image_size.top + 'px; left: ' + image_size.left + 'px;">' + +		   '<img id="gFullSizeImage" src="' + image_url + '"' + +		   'height="' + image_size.height + '" width="' + image_size.width + '"/></div>'); -  // handle the case where the calculation is almost zero (2.14e-14) -  return { -    top: ((windowHeight - imageHeight) / 2).toFixed(2), -    left: ((windowWidth - imageWidth) / 2).toFixed(2), -    width: imageWidth.toFixed(2), -    height: imageHeight.toFixed(2) -    }; -} +  $("#gFullsize").append('<span id="gFullsizeClose" class="fg-button ui-icon ui-state-default ' + +			 'ui-icon-closethick ui-corner-all" style="z-index: 1003; position: absolute; ' + +			 'right: 1em; top: 1em;"></span>'); +  $("#gFullsizeClose").click(function() { +			       $("#gFullsizeOverlay*").remove(); +			       $("#gFullsize").remove(); +			     }); +  $(window).resize(function() { +		     $("#gFullsizeOverlay").width($(document).width()); +		     $("#gFullsizeOverlay").height($(document).height()); +		     image_size = _auto_fit(image_width, image_height); +		     $("#gFullsize").height(image_size.height); +		     $("#gFullsize").width(image_size.width); +		     $("#gFullsize").css("top", image_size.top); +		     $("#gFullsize").css("left", image_size.left); +		     $("#gFullSizeImage").height(image_size.height); +		     $("#gFullSizeImage").width(image_size.width); +		   }); +}; diff --git a/themes/default/views/photo.html.php b/themes/default/views/photo.html.php index 0fbaa3e0..ddea75bc 100644 --- a/themes/default/views/photo.html.php +++ b/themes/default/views/photo.html.php @@ -1,15 +1,15 @@  <?php defined("SYSPATH") or die("No direct script access.") ?>  <? if (access::can("view_full", $theme->item())): ?> -<script type="text/javascript"> -  var fullsize_detail = { -    close: "<?= url::file("modules/gallery/images/ico-close.png") ?>", -    url: "<?= $theme->item()->file_url() ?>", -    width: "<?= $theme->item()->width ?>", -    height: "<?= $theme->item()->height ?>" -  }; -</script>  <script src="<?= url::file("themes/default/js/fullsize.js") ?>" type="text/javascript"></script> +<script> +  $(document).ready(function() { +    $(".gFullSizeLink").click(function() { +      show_full_size("<?= $theme->item()->file_url() ?>", "<?= $theme->item()->width ?>", "<?= $theme->item()->height ?>"); +      return false; +    }); +  }); +</script>  <? endif ?>  <div id="gItem"> @@ -40,7 +40,7 @@    <div id="gPhoto">      <?= $theme->resize_top($item) ?>      <? if (access::can("view_full", $item)): ?> -    <a href="#" class="gFullSizeLink" title="<?= t("View full size") ?>"> +    <a href="<?= $item->file_url() ?>" class="gFullSizeLink" title="<?= t("View full size") ?>">        <? endif ?>        <?= $item->resize_img(array("id" => "gPhotoId-{$item->id}", "class" => "gResize")) ?>        <? if (access::can("view_full", $item)): ?> | 
