issue101, zooming
authorAndreas Unterkircher <unki@netshadow.at>
Sat, 19 Jan 2008 17:29:43 +0000 (18:29 +0100)
committerAndreas Unterkircher <unki@netshadow.at>
Sat, 19 Jan 2008 17:29:43 +0000 (18:29 +0100)
Signed-off-by: Andreas Unterkircher <unki@netshadow.at>
phpfspot.js
resources/zoom-100.png [new file with mode: 0644]
resources/zoom-in.png [new file with mode: 0644]
resources/zoom-out.png [new file with mode: 0644]
themes/default/stylesheet.css
themes/default/templates/single_photo.tpl

index 74ad4b9958fa02c5f702f1ddeba73b7e35b3ac4b..d8290ad7d1047f09b9dd1e18a43765fb3a36a4af 100644 (file)
@@ -13,6 +13,11 @@ function showImage(id, scrollup)
    if(scrollup != undefined) {
       window.scrollTo(0,0);
    }
+
+   /* delete some global vars */
+   delete(origHeight);
+   delete(origWidth);
+   delete(photo_details_pos);
 }
 
 function moveToThumb(thumb_id)
@@ -249,6 +254,58 @@ function getPhotoToShow()
    return photo_to_show;
 }
 
+function zoom(mod)
+{
+   if(mod == undefined)
+      return;
+
+   if(photo = document.getElementById('photo')) {
+
+      if(origWidth == undefined)
+         origWidth = photo.width;
+      if(origHeight == undefined)
+         origHeight = photo.height;
+
+      if(mod != 0) {
+         new_w = photo.width * (1 + mod/100);
+         new_h = photo.height * (1 + mod/100);
+         photo.width = new_w;
+         photo.height = new_h;
+
+         if(photo_details_pos == undefined) {
+            photo_details_pos = document.getElementById('photo_details').offsetLeft;
+         }
+
+         if((photo.offsetLeft + new_w) >= photo_details_pos-20) {
+            hidePhotoDetails('true');
+         }
+         else {
+            hidePhotoDetails('false');
+         }
+      }
+      else {
+         photo.width = origWidth;
+         photo.height = origHeight;
+         hidePhotoDetails('false');
+      }
+   }
+
+} // zoom()
+
+function hidePhotoDetails(mode)
+{
+   if(photo_details = document.getElementById('photo_details')) {
+      if(mode == 'true') {
+         photo_details.style.visibility = 'hidden';
+         photo_details.style.display = 'none';
+      }
+      else {
+         photo_details.style.visibility = 'visible';
+         photo_details.style.display = 'inline';
+      }
+   }
+} // hidePhotoDetails()
+
 function showCalendar(date_box, click_obj)
 {
    var calendar = document.getElementById('calendar');
@@ -509,3 +566,6 @@ var autobrowse = 0;
 var sliding = 0;
 var sliding_paused = 0;
 var sliding_time = 3;
+var origHeight;
+var origWidth;
+var photo_details_pos;
diff --git a/resources/zoom-100.png b/resources/zoom-100.png
new file mode 100644 (file)
index 0000000..aad8b32
Binary files /dev/null and b/resources/zoom-100.png differ
diff --git a/resources/zoom-in.png b/resources/zoom-in.png
new file mode 100644 (file)
index 0000000..b63f0e5
Binary files /dev/null and b/resources/zoom-in.png differ
diff --git a/resources/zoom-out.png b/resources/zoom-out.png
new file mode 100644 (file)
index 0000000..31034a0
Binary files /dev/null and b/resources/zoom-out.png differ
index 7eede84321716166e6c2de04949b53ce1b4fae2f..ebe989261722199f531041d801ada9c5a46df3b7 100644 (file)
@@ -158,6 +158,9 @@ div.thumb a.thumblink:hover {
    border-radius:          1em;
    border:                 dashed 1px #888888;
    z-index:                100;
+   float:                  right;
+   margin-top:             20px;
+   margin-right:           20px;
 }
 
 #available_tags,#selected_tags {
index 62a2bf77f2ac9c17ff5976dfdfe661e858777db9..b9693c65c9b8ca5e36527676717d69d1b35c5b32 100644 (file)
@@ -15,6 +15,9 @@
   {/if}
  </div>
  <div style="text-align: right;">
+  <a href="javascript:zoom(-10);" title="zoom_out" onclick="click(this);"><img src="resources/zoom-out.png" /></a>
+  <a href="javascript:zoom(0);" title="zoom_in" onclick="click(this);"><img src="resources/zoom-100.png" /></a>
+  <a href="javascript:zoom(10);" title="zoom_in" onclick="click(this);"><img src="resources/zoom-in.png" /></a>
   <a href="javascript:startAutoBrowse();" title="auto browsing"><img id="autobrowse_ico" src="resources/32_play.png" /></a>
   {if $extern_link }
    <a href="{$extern_link}" title="Use this link to return to the current view"><img src="resources/link.png" /></a>
    { /if}
  </div>
 
+ <!-- the photo itself -->
+
  <div style="text-align: left; margin-top: 20px; margin-left: 20px;">
  { if $next_url == "" }
   <a href="javascript:showPhotoIndex();" onclick="click(this);" name="photo">
  { else }
   <a href="{$next_url}" onclick="click(this);" title="click for the next photo" name="photo">
  { /if }
-   <img src="{$image_url}" width="{$width}" height="{$height}" alt="{$image_filename}" />
+   <img src="{$image_url}" width="{$width}" height="{$height}" alt="{$image_filename}" id="photo" />
   </a>
  </div>
 
+ <!-- navigation arrows -->
+
  <div style="margin-left: 20px;">
   { if $previous_url == "" }
    <img src="resources/arrow_left_gray.png" alt="first photo reached" />