X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=phpfspot.git;a=blobdiff_plain;f=phpfspot.js;h=ebe124225f169a182530acda770bdccc46c22f72;hp=b5f6e98f33d0c8e34f628ede50720ce7eebf8624;hb=dcc26041d1dd86d47516e143fd5e475e588180cf;hpb=24a72f524227df4b33b663501422764cd2a48ee8 diff --git a/phpfspot.js b/phpfspot.js index b5f6e98..ebe1242 100644 --- a/phpfspot.js +++ b/phpfspot.js @@ -1,7 +1,8 @@ /*************************************************************************** * - * Copyright (c) by Andreas Unterkircher, unki@netshadow.at - * All rights reserved + * phpfspot, presents your F-Spot photo collection in Web browsers. + * + * Copyright (c) by Andreas Unterkircher * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,14 +21,14 @@ ***************************************************************************/ /** - * display image + * show photo * * this function will be called by client and fetches * the single-photo view via AJAX from the server. * Furthermore it will scrollup the browser to the top * position so the image become visibile immediatley. */ -function showImage(id, scrollup) +function showPhoto(id, scrollup) { /* is phpfspot skeleton really displayed? */ if(!document.getElementById('content')) @@ -41,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) { @@ -53,7 +54,7 @@ function showImage(id, scrollup) delete(origWidth); origWidth = undefined; delete(photo_details_pos); photo_details_pos = undefined; -} // showImage() +} // showPhoto() /** * scroll browser to the last shown photo @@ -100,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() @@ -135,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(); @@ -158,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() @@ -173,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() @@ -187,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) @@ -272,18 +277,26 @@ function startSearch() var objTemp = new Object(); objTemp['action'] = 'search'; - if(document.getElementsByName('searchfor_tag')[0].value != "") { + if(document.getElementsByName('searchfor_tag')[0] != undefined && + document.getElementsByName('searchfor_tag')[0].value != "") { objTemp['for_tag'] = document.getElementsByName('searchfor_tag')[0].value; } - if(document.getElementsByName('searchfor_name')[0].value != "") { + if(document.getElementsByName('searchfor_name')[0] != undefined && + document.getElementsByName('searchfor_name')[0].value != "") { objTemp['for_name'] = document.getElementsByName('searchfor_name')[0].value; } - if(document.getElementsByName('consider_date')[0].checked == true) { + if(document.getElementsByName('consider_date')[0] != undefined && + document.getElementsByName('consider_date')[0].checked == true) { objTemp['from'] = from; objTemp['to'] = to; } + if(document.getElementsByName('consider_rate')[0] != undefined && + document.getElementsByName('consider_rate')[0].checked == true) { + objTemp['rate_from'] = rate_search['from']; + objTemp['rate_to'] = rate_search['to']; + } - var retr = HTML_AJAX.post('rpc.php', objTemp); + var retr = HTML_AJAX.post(web_path + '/rpc.php', objTemp); if(retr == "ok") { refreshAvailableTags(); refreshSelectedTags(); @@ -324,11 +337,16 @@ function datesearch() * called for photo-index export. will return the * selected mode via AJAX from the server. */ -function setViewMode(mode) +function setViewMode(srv_webpath, mode) { + if(srv_webpath != undefined) + web_path = srv_webpath; + else + web_path = ''; + 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() @@ -337,13 +355,20 @@ function setViewMode(mode) */ function clearSearch() { - document.getElementsByName('searchfor_tag')[0].value = ''; - document.getElementsByName('searchfor_name')[0].value = ''; + if(document.getElementsByName('searchfor_tag')[0] != undefined) + document.getElementsByName('searchfor_tag')[0].value = ''; + if(document.getElementsByName('searchfor_name')[0] != undefined) + document.getElementsByName('searchfor_name')[0].value = ''; - if(document.getElementsByName('consider_date')[0].checked == true) { + if(document.getElementsByName('consider_date')[0] != undefined && + document.getElementsByName('consider_date')[0].checked == true) { document.getElementsByName('consider_date')[0].checked = false; datesearch(); - } + } + if(document.getElementsByName('consider_rate')[0] != undefined && + document.getElementsByName('consider_rate')[0].checked == true) { + document.getElementsByName('consider_rate')[0].checked = false; + } } // clearSearch() @@ -353,7 +378,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() /** @@ -363,11 +389,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(); @@ -381,7 +418,7 @@ function init_phpfspot(mode) } if(whattodo == 'show_photo') { if(photo = getPhotoToShow()) { - showImage(photo); + showPhoto(photo); refreshSelectedTags(); } } @@ -412,7 +449,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 == "") @@ -522,7 +559,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 { @@ -550,7 +587,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)); } /** @@ -571,7 +608,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(); @@ -646,18 +683,23 @@ function noop() {} /** * start slideshow */ -function startSlideShow() +function startSlideShow(srv_webpath) { + if(srv_webpath != undefined) + web_path = srv_webpath; + else + web_path = ''; + 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() @@ -667,7 +709,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() @@ -677,7 +719,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() @@ -690,12 +732,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() @@ -712,7 +754,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() @@ -725,12 +767,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); } @@ -771,7 +813,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(); @@ -782,6 +824,64 @@ function update_sort_order(obj) } // update_sort_order() +/** + * show rate stars + * + * this function will show the requested amount of + * rate-stars. + * + * @param string mode + * @param int level + */ +function show_rate(mode, level) +{ + var i; + + for(i = 1; i <= 5; i++) { + if(i <= level) { + document.getElementById('rate_' + mode + '_' + i).src = web_path + '/resources/star.png'; + } + else { + document.getElementById('rate_' + mode + '_' + i).src = web_path + '/resources/empty_rate.png'; + } + } + +} // show_rate() + +/** + * set rate stars + * + * + * this function will set the requested rate-stars-amount into a global + * variable (which will then later be used on form-submit) and will also + * update the display. + * + * @param string mode + * @param int level + */ +function set_rate(mode, level) +{ + rate_search[mode] = level; + show_rate(mode, level); + +} // set_rate() + +/** + * reset rate stars + * + * this function will reset the rate-star to their initial value. + * + * @param string mode + */ +function reset_rate(mode) +{ + if(rate_search[mode] == undefined) + rate_search[mode] = 0; + + show_rate(mode, rate_search[mode]); + +} // reset_rate() + /** * handle key events */ @@ -840,3 +940,5 @@ var origHeight; var origWidth; // position of the last shown photo in photo-index var photo_details_pos; +var web_path; +var rate_search = new Array();