1 /* if (child && child.size() > 0) {
  2    return;
  3    
  4    renderList(child, "mgrlistitem", 10, req.data.page);
  5    res.data.body = this._parent.renderSkinAsString("main");
  6    path.site.renderSkin("Site#page");
  7    return {main_action: new Function};
  8    
  9    var self = this;
 10    res.data.title = gettext("Tags of site {0}", self._parent.title);
 11    res.data.list = renderList(child, function(item) {
 12       item.parent.renderSkin("preview");
 13    }, 10, req.data.page);
 14    res.data.pagenavigation = renderPager(child, 
 15          child.href(req.action), 20, req.data.page);
 16    res.data.body = self.renderSkinAsString("main");
 17    path.site.renderSkin("Site#page");
 18    return {main_action: new Function};
 19 
 20    var manager = new Manager(this, child);
 21    manager.getItemHref = function() {
 22       return this.parent.href();
 23    };
 24    manager.setDefaultHandler("Date", -1);
 25    manager.addHandler("Story", function() {
 26       if (this.parent.title) {
 27          return this.parent.title.toLowerCase();
 28       } else {
 29          return "Story " + this.parent._id;
 30       }
 31    })
 32    manager.addHandler("Author", function() {
 33       return this.user.name.toLowerCase();
 34    });
 35    manager.addHandler("Date", function() {
 36       return this.parent.createtime.format("yyyy-MM-dd HH:mm");
 37    });
 38    return manager;
 39 }
 40 return child; */ 
 41 
 42 Manager.prototype.main_action = function() {
 43    res.data.title = "Manage ...";
 44    res.data.body = this.renderSkinAsString("Manager");
 45    res.handlers.site.renderSkin("Site#page");
 46    return;
 47    
 48    var collection = this.getCollection();
 49    if (collection) {
 50       var max = this.getPageSize();
 51       res.data.list = renderList(collection, "Manager#item", max, 
 52             req.data.page);
 53       res.data.pager = renderPager(collection, 
 54             collection.href(), max, req.data.page);
 55    }
 56    res.data.body = this.renderSkinAsString("Manager");
 57    res.handlers.site.renderSkin("Site#page");
 58    return;
 59 }
 60 
 61 Manager.prototype.getChildElement = function(id) {
 62    return this.getCollection().get(id);
 63 }
 64 
 65 Manager.prototype.alphabet_macro = function() {
 66    var collection;
 67    if (collection = this.$get("alphabeticalCollection")) {
 68       collection.forEach(function() {
 69          if (path[path.length-1] === this) {
 70             res.write(this.groupname);
 71          } else {
 72             Html.link({href: this.href()}, this.groupname);
 73          }
 74       });
 75    }
 76    return;
 77 }
 78 
 79 Manager.prototype.pager_macro = function() {
 80    var collection;
 81    if (collection = this.$get("alphabeticalCollection")) {
 82       collection.get(this.groupname).forEach(function() {
 83          res.writeln(this)
 84       });
 85    }
 86    return;
 87 }
 88 
 89 Manager.prototype.$get = function(key) {
 90    var handler = this.getHandler();
 91    if (handler && handler.manage) {
 92       return handler.manage(key);
 93    }
 94    return null;
 95 }
 96 
 97 Manager.prototype.href = function(action) {
 98    return path.href() + this._id + "/" +
 99          (action ? action : "");
100 }
101 
102 Manager.prototype.getHandler = function() {
103    var handler = this._parent;
104    return this.isGrouped() ? handler._parent : handler;
105 }
106 
107 Manager.prototype.getCollection = function() {
108    return this._parent.manage("defaultCollection");
109    var collection;
110    if (this.isGrouped()) {
111       return this;
112    } else if (collection = this._parent.manage("alphabeticalCollection")) {
113       return collection;
114    }
115 }
116 
117 Manager.prototype.getPageSize = function() {
118    var size = 10;
119    var key =  this.isGrouped() ? "groupPageSize" : "pageSize";
120    var handler = this.getHandler();
121    if (handler.manage) {
122       size = handler.manage(key);
123    }
124    return size;
125 }
126 
127 Manager.prototype.isGrouped = function() {
128    return !!this.groupname;
129 }
130 
131 Manager.manage = function() {
132    Manager.prototype.renderSkin.call(this, "Manager#item");
133    return;
134 }
135