diff options
author | Andreas Unterkircher <unki@netshadow.at> | 2007-06-11 19:36:03 +0000 |
---|---|---|
committer | Andreas Unterkircher <unki@netshadow.at> | 2007-06-11 19:36:03 +0000 |
commit | c48fe9f8904f3e82b484bba7b62c79a58a9dc5b4 (patch) | |
tree | 7fc363f75418eede0abb494f48f36e695d39499a | |
parent | b33eaa082ac21a6f657058814b491326c24f9533 (diff) |
first tag search functionality
git-svn-id: file:///var/lib/svn/phpfspot/trunk@79 fa6a889d-dae6-447d-9e79-4ba9a3039384
-rw-r--r-- | phpfspot.class.php | 39 | ||||
-rw-r--r-- | phpfspot.js | 14 | ||||
-rw-r--r-- | rpc.php | 5 | ||||
-rw-r--r-- | stylesheet.css | 2 | ||||
-rw-r--r-- | 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 = ''; } @@ -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,6 +1,20 @@ <table> <tr> <td style="vertical-align: middle; text-decoration: underline;"> + <input type="image" src="resources/loupe.png" alt="Tag-Search" /> + Tag-Search: + </td> + </tr> + <tr> + <td class="searchfor"> + <form onsubmit="startSearch(document.getElementsByName('searchfor')[0].value); return false;"> + <input type="text" name="searchfor" value="{$searchfor}" size="15" /> + <input type="image" src="resources/doit.png" alt="Tag-Search" /> + </form> + </td> + </tr> + <tr> + <td style="vertical-align: middle; text-decoration: underline;"> <img src="resources/available_tags.png" \>Available Tags: </td> </tr> |