summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpfspot.class.php63
-rw-r--r--phpfspot.js33
-rw-r--r--rpc.php26
-rw-r--r--templates/index.tpl2
-rw-r--r--templates/tags.tpl8
5 files changed, 126 insertions, 6 deletions
diff --git a/phpfspot.class.php b/phpfspot.class.php
index 1a344f4..379ad98 100644
--- a/phpfspot.class.php
+++ b/phpfspot.class.php
@@ -10,8 +10,9 @@ class PHPFSPOT {
var $db;
var $tmpl;
var $tags;
- var $avail_photos;
+ var $avail_tags;
var $photos;
+ var $avail_photos;
var $current_photo;
var $current_tags;
@@ -47,6 +48,9 @@ class PHPFSPOT {
private function get_tags()
{
+ $this->avail_tags = Array();
+ $count = 0;
+
$result = $this->db->db_query("
SELECT id,name
FROM tags
@@ -59,8 +63,12 @@ class PHPFSPOT {
$tag_name = $row['name'];
$this->tags[$tag_id] = $tag_name;
+ $this->avail_tags[$count] = $tag_id;
+
+ $count++;
}
+
} // get_tags()
private function get_photos()
@@ -125,6 +133,59 @@ class PHPFSPOT {
} // prepare_single_photo()
+ public function getAvailableTags()
+ {
+ foreach($this->avail_tags as $tag)
+ {
+ if(isset($_SESSION['selected_tags']) && in_array($tag, $_SESSION['selected_tags']))
+ continue;
+
+ // return all available (= not selected) tags
+ print "<a href=\"javascript:Tags('add', ". $tag .");\">". $this->tags[$tag] ."</a>&nbsp;";
+
+ }
+
+ } // getAvailableTags()
+
+ public function getSelectedTags()
+ {
+ foreach($this->avail_tags as $tag)
+ {
+ // return all selected tags
+ if(isset($_SESSION['selected_tags']) && in_array($tag, $_SESSION['selected_tags'])) {
+ print "<a href=\"javascript:Tags('del', ". $tag .");\">". $this->tags[$tag] ."</a>&nbsp;";
+ }
+
+ }
+
+ print "<a href=\"javascript:Tags('reset', 0);\">Reset Tags</a>";
+
+ } // getSelectedTags()
+
+ public function addTag($tag)
+ {
+ if(!isset($_SESSION['selected_tags']))
+ $_SESSION['selected_tags'] = Array();
+
+ array_push($_SESSION['selected_tags'], $tag);
+
+ } // addTag()
+
+ public function delTag($tag)
+ {
+ if(isset($_SESSION['selected_tags'])) {
+ $key = array_search($tag, $_SESSION['selected_tags']);
+ unset($_SESSION['selected_tags'][$key]);
+ }
+
+ } // delTag()
+
+ public function resetTags()
+ {
+ unset($_SESSION['selected_tags']);
+
+ } // resetTags()
+
}
?>
diff --git a/phpfspot.js b/phpfspot.js
index ed19372..4f8fd52 100644
--- a/phpfspot.js
+++ b/phpfspot.js
@@ -3,3 +3,36 @@ function showImage(id)
content = document.getElementById("content");
content.innerHTML = HTML_AJAX.grab('rpc.php?action=showphoto&id=' + id);
}
+
+function Tags(mode, id)
+{
+ if(mode == "add") {
+ // add the tag to users session
+ HTML_AJAX.grab('rpc.php?action=addtag&id=' + id);
+ }
+ else if(mode == "del") {
+ // del the tag from users session
+ HTML_AJAX.grab('rpc.php?action=deltag&id=' + id);
+ }
+ else if(mode == "reset") {
+ HTML_AJAX.grab('rpc.php?action=resettags');
+ }
+
+ refreshAvailableTags();
+ refreshSelectedTags();
+
+}
+
+function refreshAvailableTags()
+{
+ // update available tags
+ content = document.getElementById("available_tags");
+ content.innerHTML = HTML_AJAX.grab('rpc.php?action=show_available_tags');
+}
+
+function refreshSelectedTags()
+{
+ // update selected tags
+ content = document.getElementById("selected_tags");
+ content.innerHTML = HTML_AJAX.grab('rpc.php?action=show_selected_tags');
+}
diff --git a/rpc.php b/rpc.php
index 2bb9628..d8d0743 100644
--- a/rpc.php
+++ b/rpc.php
@@ -49,6 +49,32 @@ class PHPFSPOT_RPC {
$fspot->tmpl->show("body.tpl");
break;
+
+ case 'show_available_tags':
+
+ $fspot->getAvailableTags();
+ break;
+
+ case 'show_selected_tags':
+
+ $fspot->getSelectedTags();
+ break;
+
+ case 'addtag':
+
+ $fspot->addTag($_GET['id']);
+ break;
+
+ case 'deltag':
+
+ $fspot->delTag($_GET['id']);
+ break;
+
+ case 'resettags':
+
+ $fspot->resetTags();
+ break;
+
}
} // process_ajax_request();
diff --git a/templates/index.tpl b/templates/index.tpl
index dfbaf68..e38a823 100644
--- a/templates/index.tpl
+++ b/templates/index.tpl
@@ -1,5 +1,5 @@
{include file="header.tpl"}
- <body>
+ <body onload="refreshAvailableTags(); refreshSelectedTags();">
<div id="logo">noch keins da</div>
<div id="tags">
{include file="tags.tpl"}
diff --git a/templates/tags.tpl b/templates/tags.tpl
index 52751e2..d46ac21 100644
--- a/templates/tags.tpl
+++ b/templates/tags.tpl
@@ -1,6 +1,6 @@
-<div id='tag'>
The following tags are available:<br />
-{foreach from=$tags item=tag }
- <a href="?{$tag}">{$tag}</a>
-{/foreach}
+<div id='available_tags'>
+</div>
+ The following tags have been selected: <br />
+<div id='selected_tags'>
</div>