From: Andreas Unterkircher
@@ -2407,7 +2449,6 @@ class PHPFSPOT {
public function whatToDo()
{
if(isset($_SESSION['current_photo']) && $_SESSION['start_action'] == 'showp') {
- return "show_photo";
}
elseif(isset($_SESSION['selected_tags']) && !empty($_SESSION['selected_tags'])) {
return "showpi_tags";
@@ -2416,8 +2457,6 @@ class PHPFSPOT {
return "showpi";
}
- return "nothing special";
-
} // whatToDo()
/**
@@ -2513,7 +2552,11 @@ class PHPFSPOT {
else
$_SESSION['slideshow_img']++;
- return $this->get_phpfspot_url() ."phpfspot_img.php?idx=". $all_photos[$_SESSION['slideshow_img']] ."&width=". $this->cfg->photo_width;
+ if($this->is_user_friendly_url()) {
+ return $this->get_phpfspot_url() ."/photo/". $all_photos[$_SESSION['slideshow_img']] ."/". $this->cfg->photo_width;
+ }
+
+ return $this->get_phpfspot_url() ."/phpfspot_img.php?idx=". $all_photos[$_SESSION['slideshow_img']] ."&width=". $this->cfg->photo_width;
} // getNextSlideShowImage()
@@ -2533,7 +2576,11 @@ class PHPFSPOT {
else
$_SESSION['slideshow_img']--;
- return $this->get_phpfspot_url() ."phpfspot_img.php?idx=". $all_photos[$_SESSION['slideshow_img']] ."&width=". $this->cfg->photo_width;
+ if($this->is_user_friendly_url()) {
+ return $this->get_phpfspot_url() ."/photo/". $all_photos[$_SESSION['slideshow_img']] ."/". $this->cfg->photo_width;
+ }
+
+ return $this->get_phpfspot_url() ."/phpfspot_img.php?idx=". $all_photos[$_SESSION['slideshow_img']] ."&width=". $this->cfg->photo_width;
} // getPrevSlideShowImage()
@@ -2734,6 +2781,7 @@ class PHPFSPOT {
private function get_phpfspot_url()
{
return $this->get_web_protocol() ."://". $this->get_server_name() . $this->cfg->web_path;
+
} // get_phpfspot_url()
/**
@@ -2926,9 +2974,11 @@ class PHPFSPOT {
}
- /* check for pending slash on web_path */
- if(!preg_match("/\/$/", $this->cfg->web_path))
- $this->cfg->web_path.= "/";
+ /* remove trailing slash, if set */
+ if($this->cfg->web_path == "/")
+ $this->cfg->web_path = "";
+ elseif(preg_match('/\/$/', $this->cfg->web_path))
+ $this->cfg->web_path = preg_replace('/\/$/', '', $this->cfg->web_path);
return $this->runtime_error;
@@ -3045,6 +3095,67 @@ class PHPFSPOT {
} // get_tag_name()
+ /**
+ * parse user friendly url which got rewritten by the websever
+ * @param string $request_uri
+ * @return string
+ */
+ private function parse_user_friendly_url($request_uri)
+ {
+ if(preg_match('/\/photoview\/|\/photo\/|\/tag\//', $request_uri)) {
+
+ unset($_SESSION['start_action']);
+ unset($_SESSION['selected_tags']);
+
+ $options = explode('/', $request_uri);
+
+ switch($options[1]) {
+ case 'photoview':
+ if(is_numeric($options[2])) {
+ $_GET['mode'] = 'showp';
+ return $this->showPhoto($options[2]);
+ }
+ break;
+ case 'photo':
+ if(is_numeric($options[2])) {
+ require_once "phpfspot_img.php";
+ $img = new PHPFSPOT_IMG;
+ if(isset($options[3]) && is_numeric($options[3]))
+ $img->showImg($options[2], $options[3]);
+ else
+ $img->showImg($options[2]);
+ }
+ exit;
+ break;
+ case 'tag':
+ if(is_numeric($options[2])) {
+ $_GET['tags'] = $options[2];
+ $_SESSION['selected_tags'] = Array($options[2]);
+ return $this->showPhotoIndex();
+ }
+ break;
+ }
+ }
+
+ } // parse_user_friendly_url()
+
+ /**
+ * check if user-friendly-urls are enabled
+ *
+ * this function will return true, if the config option
+ * $user_friendly_url has been set. Otherwise false.
+ * @return boolean
+ */
+ private function is_user_friendly_url()
+ {
+ if(isset($this->cfg->user_friendly_url) && $this->cfg->user_friendly_url)
+ return true;
+
+ return false;
+
+ } // is_user_friendly_url()
+
+
} // class PHPFSPOT
?>
diff --git a/phpfspot.js b/phpfspot.js
index 6c0054d..ae202a0 100644
--- a/phpfspot.js
+++ b/phpfspot.js
@@ -42,7 +42,7 @@ function showImage(id, scrollup)
}
/* fetch single-photo view from server */
- HTML_AJAX.replace(content, encodeURI('rpc.php?action=showphoto&id=' + id));
+ HTML_AJAX.replace(content, encodeURI(web_path + '/rpc.php?action=showphoto&id=' + id));
/* scroll the window up to the top */
if(scrollup != undefined) {
@@ -101,7 +101,7 @@ function findPos(obj, direction) {
function showCredits()
{
var credits = document.getElementById("content");
- credits.innerHTML = HTML_AJAX.grab(encodeURI('rpc.php?action=showcredits'));
+ credits.innerHTML = HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=showcredits'));
} // showCredits()
@@ -136,7 +136,7 @@ function Tags(mode, id)
objTemp['mode'] = id.value;
}
- var retr = HTML_AJAX.post('rpc.php', objTemp);
+ var retr = HTML_AJAX.post(web_path + '/rpc.php', objTemp);
if(retr == "ok") {
refreshAvailableTags();
refreshSelectedTags();
@@ -159,8 +159,10 @@ function refreshAvailableTags()
{
// update available tags
var avail_tags = document.getElementById('available_tags');
- avail_tags.innerHTML = "Loading...";
- avail_tags.innerHTML = HTML_AJAX.grab(encodeURI('rpc.php?action=show_available_tags'));
+ if(avail_tags != undefined) {
+ avail_tags.innerHTML = "Loading...";
+ avail_tags.innerHTML = HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=show_available_tags'));
+ }
} // refreshAvailableTags()
@@ -174,8 +176,10 @@ function refreshSelectedTags()
{
// update selected tags
var selected_tags = document.getElementById("selected_tags");
- selected_tags.innerHTML = "Loading...";
- selected_tags.innerHTML = HTML_AJAX.grab(encodeURI('rpc.php?action=show_selected_tags'));
+ if(selected_tags != undefined) {
+ selected_tags.innerHTML = "Loading...";
+ selected_tags.innerHTML = HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=show_selected_tags'));
+ }
} // refreshSelectedTags()
@@ -188,7 +192,7 @@ function refreshSelectedTags()
*/
function showPhotoIndex(begin_with, last_photo)
{
- var url = "rpc.php?action=show_photo_index";
+ var url = web_path + "/rpc.php?action=show_photo_index";
if(begin_with != undefined)
url = url + '&begin_with=' + begin_with;
if(last_photo != undefined)
@@ -284,7 +288,7 @@ function startSearch()
objTemp['to'] = to;
}
- var retr = HTML_AJAX.post('rpc.php', objTemp);
+ var retr = HTML_AJAX.post(web_path + '/rpc.php', objTemp);
if(retr == "ok") {
refreshAvailableTags();
refreshSelectedTags();
@@ -329,7 +333,7 @@ function setViewMode(mode)
{
var exprt = document.getElementById('output');
exprt.innerHTML = "Loading...";
- exprt.innerHTML = HTML_AJAX.grab(encodeURI('rpc.php?action=get_export&mode=' + mode));
+ exprt.innerHTML = HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=get_export&mode=' + mode));
} // setViewMode()
@@ -354,7 +358,8 @@ function clearSearch()
*/
function AskServerWhatToDo()
{
- return HTML_AJAX.grab(encodeURI('rpc.php?action=what_to_do'));
+ return HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=what_to_do'));
+
} // AskServerWhatToDo()
/**
@@ -364,11 +369,22 @@ function AskServerWhatToDo()
* the first time. It will fetch the tag-lists and will then
* switch to the right view, which the browser got told from
* the server (maybe someone hit the refresh button...).
+ *
+ * as parameter the server can set the correct webpath.
+ * espacialley when using user-friendly url's, the browser
+ * does not know the correct URLs to address images, stylesheets,
+ * ... then.
*/
-function init_phpfspot(mode)
+function init_phpfspot(srv_webpath)
{
+ if(srv_webpath != undefined)
+ web_path = srv_webpath;
+ else
+ web_path = '';
+
/* always load list of available tags */
- refreshAvailableTags();
+ //this should not be more necessary since 4.5.08
+ //refreshAvailableTags();
/* ask the server what we are currently displaying */
whattodo = AskServerWhatToDo();
@@ -413,7 +429,7 @@ function setBackGrdColor(item, color)
*/
function getPhotoToShow()
{
- var photo_to_show = HTML_AJAX.grab(encodeURI('rpc.php?action=get_photo_to_show'));
+ var photo_to_show = HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=get_photo_to_show'));
// if no image needs to be shown, return false from here
if(photo_to_show == "")
@@ -523,7 +539,7 @@ function showCalendar(date_box, click_obj)
if(calendar.style.visibility == "" || calendar.style.visibility == 'hidden') {
calendar.style.visibility = 'visible';
calendar.innerHTML = "Loading...";
- calendar.innerHTML = HTML_AJAX.grab(encodeURI('rpc.php?action=get_calendar_matrix&year=' + year + '&month=' + month));
+ calendar.innerHTML = HTML_AJAX.grab(encodeURI(web_path +'/rpc.php?action=get_calendar_matrix&year=' + year + '&month=' + month));
calendar_shown = 1;
}
else {
@@ -551,7 +567,7 @@ function setMonth(year, month, day)
{
var calendar = document.getElementById('calendar');
calendar.innerHTML = "Loading...";
- calendar.innerHTML = HTML_AJAX.grab(encodeURI('rpc.php?action=get_calendar_matrix&year='+ year +'&month='+ month +'&day='+ day));
+ calendar.innerHTML = HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=get_calendar_matrix&year='+ year +'&month='+ month +'&day='+ day));
}
/**
@@ -572,7 +588,7 @@ function setCalendarDate(year, month, day)
*/
function resetAll()
{
- HTML_AJAX.grab(encodeURI('rpc.php?action=reset'));
+ HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=reset'));
clearSearch();
refreshAvailableTags();
refreshSelectedTags();
@@ -650,15 +666,15 @@ function noop() {}
function startSlideShow()
{
if(!sliding) {
- HTML_AJAX.grab(encodeURI('rpc.php?action=reset_slideshow'));
+ HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=reset_slideshow'));
nextSlide();
sliding = setInterval("nextSlide()", sliding_time*1000);
- document.getElementById('stop_ico').src = "resources/32_stop.png";
+ document.getElementById('stop_ico').src = web_path + "/resources/32_stop.png";
}
else {
clearInterval(sliding);
sliding = 0;
- document.getElementById('stop_ico').src = "resources/32_play.png";
+ document.getElementById('stop_ico').src = web_path + "/resources/32_play.png";
}
} // startSlideShow()
@@ -668,7 +684,7 @@ function startSlideShow()
*/
function nextSlide()
{
- var next_img = HTML_AJAX.grab(encodeURI('rpc.php?action=get_next_slideshow_img'));
+ var next_img = HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=get_next_slideshow_img'));
document.getElementById('slide_img').src = next_img;
} // nextSlide()
@@ -678,7 +694,7 @@ function nextSlide()
*/
function prevSlide()
{
- var prev_img = HTML_AJAX.grab(encodeURI('rpc.php?action=get_prev_slideshow_img'));
+ var prev_img = HTML_AJAX.grab(encodeURI(web_path + '/rpc.php?action=get_prev_slideshow_img'));
document.getElementById('slide_img').src = prev_img;
} // prevSlide()
@@ -691,12 +707,12 @@ function pauseSlideShow()
if(!sliding_paused) {
sliding_paused = 1;
clearInterval(sliding);
- document.getElementById('pause_ico').src = "resources/32_play.png";
+ document.getElementById('pause_ico').src = web_path + "/resources/32_play.png";
}
else {
sliding_paused = 0;
sliding = setInterval("nextSlide()", sliding_time*1000);
- document.getElementById('pause_ico').src = "resources/32_pause.png";
+ document.getElementById('pause_ico').src = web_path + "/resources/32_pause.png";
}
} // pauseSlideShow()
@@ -713,7 +729,7 @@ function startAutoBrowse()
else {
clearInterval(autobrowse);
autobrowse = 0;
- document.getElementById('autobrowse_ico').src = "resources/32_play.png";
+ document.getElementById('autobrowse_ico').src = web_path + "/resources/32_play.png";
}
} // startAutoBrowser()
@@ -726,12 +742,12 @@ function autoBrowse()
if(document.getElementById('next_link')) {
var next_link = document.getElementById('next_link').href;
window.location.href = next_link;
- document.getElementById('autobrowse_ico').src = "resources/32_pause.png";
+ document.getElementById('autobrowse_ico').src = web_path + "/resources/32_pause.png";
}
/* we have reached the last photo */
else {
if(ab_ico = document.getElementById('autobrowse_ico'))
- ab_ico.src = "resources/32_play.png";
+ ab_ico.src = web_path + "/resources/32_play.png";
clearInterval(autobrowse);
}
@@ -772,7 +788,7 @@ function update_sort_order(obj)
var objTemp = new Object();
objTemp['value'] = obj.options[obj.selectedIndex].value;
- var retr = HTML_AJAX.post('rpc.php?action=update_sort_order', objTemp);
+ var retr = HTML_AJAX.post(web_path + '/rpc.php?action=update_sort_order', objTemp);
if(retr == "ok") {
showPhotoIndex();
@@ -841,3 +857,4 @@ var origHeight;
var origWidth;
// position of the last shown photo in photo-index
var photo_details_pos;
+var web_path;
diff --git a/phpfspot_cfg.php.dist b/phpfspot_cfg.php.dist
index 4eb5894..3793c54 100644
--- a/phpfspot_cfg.php.dist
+++ b/phpfspot_cfg.php.dist
@@ -116,6 +116,9 @@ class PHPFSPOT_CFG {
/* path to dcraw to decode Nikon's NEF format */
// var $dcraw_bin = "/usr/bin/dcraw";
+ /* user friendly URLs */
+ var $user_friendly_url = false;
+
public function __construct()
{
diff --git a/resources/16_play.png b/resources/16_play.png
new file mode 100644
index 0000000..ca1d222
Binary files /dev/null and b/resources/16_play.png differ
diff --git a/resources/export.png b/resources/export.png
index 130d761..b2391c3 100644
Binary files a/resources/export.png and b/resources/export.png differ
diff --git a/resources/link.png b/resources/link.png
index 4a2a843..f6afa17 100644
Binary files a/resources/link.png and b/resources/link.png differ
diff --git a/resources/original.png b/resources/original.png
index 67e14b8..c5772b9 100644
Binary files a/resources/original.png and b/resources/original.png differ
diff --git a/resources/rss.png b/resources/rss.png
index 4a74d4b..9bc86f7 100644
Binary files a/resources/rss.png and b/resources/rss.png differ
diff --git a/resources/slideshow.png b/resources/slideshow.png
index 4a9c6d5..8e11a1f 100644
Binary files a/resources/slideshow.png and b/resources/slideshow.png differ
diff --git a/resources/zoom-100.png b/resources/zoom-100.png
index aad8b32..9ed4da6 100644
Binary files a/resources/zoom-100.png and b/resources/zoom-100.png differ
diff --git a/resources/zoom-in.png b/resources/zoom-in.png
index b63f0e5..ea7e42f 100644
Binary files a/resources/zoom-in.png and b/resources/zoom-in.png differ
diff --git a/resources/zoom-out.png b/resources/zoom-out.png
index 31034a0..2802bb2 100644
Binary files a/resources/zoom-out.png and b/resources/zoom-out.png differ
diff --git a/rpc.php b/rpc.php
index bdb6206..f4a93ce 100644
--- a/rpc.php
+++ b/rpc.php
@@ -65,7 +65,7 @@ class PHPFSPOT_RPC {
switch($action) {
case 'showphoto':
if(isset($_GET['id']) && is_numeric($_GET['id'])) {
- $phpfspot->showPhoto($_GET['id']);
+ print $phpfspot->showPhoto($_GET['id']);
}
break;
@@ -117,7 +117,7 @@ class PHPFSPOT_RPC {
if(isset($_GET['last_photo']) && is_numeric($_GET['last_photo']))
$_SESSION['last_photo'] = $_GET['last_photo'];
- $phpfspot->showPhotoIndex();
+ print $phpfspot->showPhotoIndex();
break;
case 'showcredits':
diff --git a/themes/default/stylesheet.css b/themes/default/stylesheet.css
index 7771736..d67f3ac 100644
--- a/themes/default/stylesheet.css
+++ b/themes/default/stylesheet.css
@@ -225,6 +225,15 @@ table.calendar tr td {
vertical-align: middle;
}
+#whiteline {
+ height: 1px;
+ background-color: #ffffff;
+}
+
+#index {
+ margin-top: 5px;
+}
+
input.submit,input.checkbox {
background-color: transparent;
border: 0px;
diff --git a/themes/default/templates/export.tpl b/themes/default/templates/export.tpl
index 3647863..7f6f2de 100644
--- a/themes/default/templates/export.tpl
+++ b/themes/default/templates/export.tpl
@@ -7,7 +7,7 @@
-
+
diff --git a/themes/default/templates/header.tpl b/themes/default/templates/header.tpl index e946a5b..1cd9cb4 100644 --- a/themes/default/templates/header.tpl +++ b/themes/default/templates/header.tpl @@ -3,19 +3,19 @@
- - - - - + + + + + { if $use_lightbox } - - - - + + + + { /if } { if $use_autocomplete } - - + + { /if } diff --git a/themes/default/templates/index.tpl b/themes/default/templates/index.tpl index 0bd7a7b..46effe2 100644 --- a/themes/default/templates/index.tpl +++ b/themes/default/templates/index.tpl @@ -1,10 +1,10 @@ {include file="header.tpl"} -