From c48fe9f8904f3e82b484bba7b62c79a58a9dc5b4 Mon Sep 17 00:00:00 2001 From: Andreas Unterkircher Date: Mon, 11 Jun 2007 19:36:03 +0000 Subject: [PATCH] first tag search functionality git-svn-id: file:///var/lib/svn/phpfspot/trunk@79 fa6a889d-dae6-447d-9e79-4ba9a3039384 --- phpfspot.class.php | 39 ++++++++++++++++++++++++++++++++++++++- phpfspot.js | 14 ++++++++++++-- rpc.php | 5 +++++ stylesheet.css | 2 +- templates/tags.tpl | 14 ++++++++++++++ 5 files changed, 70 insertions(+), 4 deletions(-) diff --git a/phpfspot.class.php b/phpfspot.class.php index 7bccc9e..b635b30 100644 --- a/phpfspot.class.php +++ b/phpfspot.class.php @@ -32,6 +32,9 @@ class PHPFSPOT { if(!isset($_SESSION['tag_condition'])) $_SESSION['tag_condition'] = 'or'; + if(!isset($_SESSION['searchfor'])) + $_SESSION['searchfor'] = ''; + } // __construct() public function __destruct() @@ -41,6 +44,7 @@ class PHPFSPOT { public function show() { + $this->tmpl->assign('searchfor', $_SESSION['searchfor']); $this->tmpl->assign('page_title', $this->cfg->page_title); $this->tmpl->assign('current_condition', $_SESSION['tag_condition']); $this->tmpl->show("index.tpl"); @@ -261,7 +265,11 @@ class PHPFSPOT { public function showPhotoIndex() { - $photos = $this->getAllTagPhotos(); + if($_SESSION['searchfor'] == '') + $photos = $this->getAllTagPhotos(); + else + $photos = $this->getSearchResult($_SESSION['searchfor']); + $count = count($photos); $rows = 0; @@ -480,6 +488,35 @@ class PHPFSPOT { } // setTagCondition() + public function startSearch($searchfor) + { + $_SESSION['searchfor'] = $searchfor; + + } // showSearchResult() + + public function getSearchResult($for) + { + $tagged_photos = Array(); + + $result = $this->db->db_query(" + SELECT DISTINCT photo_id + FROM photo_tags pt + INNER JOIN photos p + ON p.id=pt.photo_id + INNER JOIN tags t + ON pt.tag_id=t.id + WHERE t.name LIKE '%". $for ."%' + ORDER BY p.time ASC + "); + + while($row = $this->db->db_fetch_object($result)) { + array_push($tagged_photos, $row['photo_id']); + } + + return $tagged_photos; + + } // getSearchResult() + } ?> diff --git a/phpfspot.js b/phpfspot.js index 4951fe1..b2aebd7 100644 --- a/phpfspot.js +++ b/phpfspot.js @@ -92,8 +92,18 @@ function setCheckedValue(condition, value) { } } -function startsearch() +function startSearch(searchfor) { - searchfor = document.getElementsByName('searchfor')[0].value; HTML_AJAX.grab(encodeURI('rpc.php?action=search&for=' + searchfor)); + +/ Tags('reset', 0); + + refreshAvailableTags(); + refreshSelectedTags(); + showPhotoIndex(); +} + +function clearSearch() +{ + document.getElementsByName('searchfor')[0].value = ''; } diff --git a/rpc.php b/rpc.php index ef1be6a..0bdccc9 100644 --- a/rpc.php +++ b/rpc.php @@ -93,6 +93,11 @@ class PHPFSPOT_RPC { $fspot->showCredits(); break; + case 'search': + + $fspot->startSearch($_GET['for']); + break; + } } // process_ajax_request(); diff --git a/stylesheet.css b/stylesheet.css index e4f5523..b4c69c5 100644 --- a/stylesheet.css +++ b/stylesheet.css @@ -29,7 +29,7 @@ td.tags { border-right: solid 1px #000000; } -td.available_tags,td.selected_tags { +td.available_tags,td.selected_tags,td.searchfor { border-bottom: solid 1px #000000; padding-top: 10px; padding-bottom: 10px; diff --git a/templates/tags.tpl b/templates/tags.tpl index 99c8b90..4801743 100644 --- a/templates/tags.tpl +++ b/templates/tags.tpl @@ -1,4 +1,18 @@ + + + + + +
+ + Tag-Search: +
+
+ + +
+
Available Tags: -- 2.25.1