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