From 945181799311aedb44d15be680a97c60619b13f0 Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Tue, 24 Mar 2009 18:30:33 -0400 Subject: [PATCH] Display the user's top 10 tags on the event edit form. Refreshes each time the edit form is displayed. --- kronolith/ajax.php | 24 +++++++++++++++++------- kronolith/js/src/kronolith.js | 16 +++++++++++++++- kronolith/lib/Tagger.php | 12 +++++++++++- kronolith/templates/index/index.inc | 9 +-------- 4 files changed, 44 insertions(+), 17 deletions(-) diff --git a/kronolith/ajax.php b/kronolith/ajax.php index 8053d2108..d6b16c0b9 100644 --- a/kronolith/ajax.php +++ b/kronolith/ajax.php @@ -89,7 +89,7 @@ ob_start(); try { $notify = true; $result = false; - + switch ($action) { case 'ListEvents': $start = new Horde_Date(Util::getFormData('start')); @@ -112,7 +112,7 @@ try { $result->events = $events; } break; - + case 'GetEvent': if (!($kronolith_driver = getDriver($cal = Util::getFormData('cal')))) { $result = true; @@ -136,7 +136,7 @@ try { $result = new stdClass; $result->event = $event->toJSON(true, $prefs->getValue('twentyFour') ? 'H:i' : 'h:i A'); break; - + case 'SaveEvent': $cal = Util::getFormData('cal'); if (!($kronolith_driver = getDriver($cal))) { @@ -175,7 +175,7 @@ try { $result->events = $events; } break; - + case 'UpdateEvent': if (!($kronolith_driver = getDriver($cal = Util::getFormData('cal')))) { break; @@ -215,7 +215,7 @@ try { $notification->push($result, 'horde.error'); } break; - + case 'DeleteEvent': if (!($kronolith_driver = getDriver($cal = Util::getFormData('cal')))) { $result = true; @@ -250,11 +250,11 @@ try { $result = new stdClass; $result->deleted = true; break; - + case 'SaveCalPref': $result = true; break; - + case 'ChunkContent': $chunk = basename(Util::getPost('chunk')); if (!empty($chunk)) { @@ -262,6 +262,16 @@ try { $result->chunk = Util::bufferOutput('include', KRONOLITH_TEMPLATES . '/chunks/' . $chunk . '.php'); } break; + + case 'ListTopTags': + $tagger = new Kronolith_Tagger(); + $result = new stdClass; + $result->tags = array(); + $tags = $tagger->getCloud(Auth::getAuth(), 10); + foreach ($tags as $tag) { + $result->tags[] = $tag['tag_name']; + } + break; } } catch (Exception $e) { $notification->push($e->getMessage(), 'horde.error'); diff --git a/kronolith/js/src/kronolith.js b/kronolith/js/src/kronolith.js index e6ba6f3c6..10241c186 100644 --- a/kronolith/js/src/kronolith.js +++ b/kronolith/js/src/kronolith.js @@ -959,8 +959,10 @@ KronolithCore = { if (id) { RedBox.loading(); + this.doAction('ListTopTags', {}, this._topTags.bind(this)); this.doAction('GetEvent', { 'cal': calendar, 'id': id }, this._editEvent.bind(this)); } else { + this.doAction('ListTopTags', {}, this._topTags.bind(this)); var d = new Date(); $('kronolithEventForm').enable(); $('kronolithEventForm').reset(); @@ -976,7 +978,19 @@ KronolithCore = { this.eventForm = RedBox.getWindowContents(); } }, - + + _topTags: function(r) + { + if (!r.response.tags) { + return; + } + $('eventTopTags').update(); + r.response.tags.each(function(tag) { + $('eventTopTags').insert(new Element('span').update(tag)); + }); + return; + }, + /** * Callback method for showing event forms. * diff --git a/kronolith/lib/Tagger.php b/kronolith/lib/Tagger.php index 7c254cb11..4a4456e0b 100644 --- a/kronolith/lib/Tagger.php +++ b/kronolith/lib/Tagger.php @@ -180,7 +180,6 @@ class Kronolith_Tagger $this->tag($localId, $add, $content_type); } - /** * @TODO * @param array $tags An array of tag ids. @@ -190,9 +189,20 @@ class Kronolith_Tagger //TODO } + /** + * List tags beginning with $token. Used for autocomplete code. + * + * @param $token + * @return unknown_type + */ public function listTags($token) { return self::$_tagger->getTags(array('q' => $token)); } + public function getCloud($user, $limit = 5) + { + return self::$_tagger->getTagCloud(array('userId' => $user, + 'limit' => $limit)); + } } diff --git a/kronolith/templates/index/index.inc b/kronolith/templates/index/index.inc index 423c56a7f..b7417c078 100644 --- a/kronolith/templates/index/index.inc +++ b/kronolith/templates/index/index.inc @@ -177,14 +177,7 @@ -
- portugal - política - religião - outra - informática - lálá -
+
" class="button ok" /> -- 2.11.0