      1 // The Antville Project
      2 // http://code.google.com/p/antville
      3 //
      4 // Copyright 2007-2011 by Tobi Schäfer.
      5 //
      6 // Copyright 2001–2007 Robert Gaggl, Hannes Wallnöfer, Tobi Schäfer,
      7 // Matthias & Michael Platzer, Christoph Lincke.
      8 //
      9 // Licensed under the Apache License, Version 2.0 (the ``License'');
     10 // you may not use this file except in compliance with the License.
     11 // You may obtain a copy of the License at
     12 //
     13 //    http://www.apache.org/licenses/LICENSE-2.0
     14 //
     15 // Unless required by applicable law or agreed to in writing, software
     16 // distributed under the License is distributed on an ``AS IS'' BASIS,
     17 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     18 // See the License for the specific language governing permissions and
     19 // limitations under the License.
     20 //
     21 // $Revision$
     22 // $LastChangedBy$
     23 // $LastChangedDate$
     24 // $URL$
     25
     26 /**
     27  * @fileOverview Defines the TagHub prototype
     28  */
     29
     30 /**
     31  * @name TagHub
     32  * @constructor
     33  * @param {String} name
     34  * @param {Story|Image} tagged
     35  * @param {User} user
     36  * @property {Tag} tag
     37  * @property {Number} tag_id
     38  * @property {Story|Image} tagged
     39  * @property {Number} tagged_id
     40  * @property {String} tagged_type
     41  * @property {User} user
     42  * @extends HopObject
     43  */
     44 TagHub.prototype.constructor = function(name, tagged, user) {
     45    var site = tagged.site || res.handlers.site;
     46    var tag = site.getTags(tagged._prototype, Tags.ALL).get(name);
     47    if (!tag) {
     48       tag = new Tag(name, site, tagged._prototype);
     49       site.$tags.add(tag);
     50       //res.commit();
     51    }
     52    this.tag = tag;
     53    this.tagged = tagged;
     54    this.user = user;
     55    return this;
     56 }
     57
     58 /**
     59  *
     60  * @param {String} name
     61  * @returns {HopObject}
     62  */
     63 TagHub.prototype.getMacroHandler = function(name) {
     64    switch (name.toLowerCase()) {
     65       case "tagged":
     66       case "story":
     67       case "image":
     68       return this.tagged;
     69       break;
     70    }
     71 }
     72
     73 /**
     74  * @return {String}
     75  */
     76 TagHub.prototype.toString = function() {
     77    return "Tag " + this.tag.name + " of " + this.tagged.toString();
     78 }
     79