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 Polls prototype 28 */ 29 30 markgettext("Polls"); 31 markgettext("polls"); 32 33 /** 34 * @name Polls 35 * @constructor 36 * @property {Poll[]} _children 37 * @property {Poll[]} open 38 * @extends HopObject 39 */ 40 41 /** 42 * 43 * @param {String} action 44 * @returns {Boolean} 45 */ 46 Polls.prototype.getPermission = function(action) { 47 if (!this._parent.getPermission("main")) { 48 return false; 49 } 50 switch (action) { 51 case ".": 52 case "main": 53 case "create": 54 case "running": 55 return Site.require(Site.OPEN) && session.user || 56 Membership.require(Membership.CONTRIBUTOR) || 57 User.require(User.PRIVILEGED); 58 case "all": 59 return Membership.require(Membership.MANAGER) || 60 User.require(User.PRIVILEGED); 61 } 62 return false; 63 } 64 65 Polls.prototype.main_action = function() { 66 var polls = User.getMembership().polls; 67 res.data.list = renderList(polls, "$Poll#listItem", 10, req.queryParams.page); 68 res.data.pager = renderPager(polls, this.href(req.action), 69 10, req.queryParams.page); 70 res.data.title = gettext("Member Polls"); 71 res.data.body = this.renderSkinAsString("$Polls#main"); 72 this._parent.renderSkin("Site#page"); 73 return; 74 } 75 76 Polls.prototype.create_action = function() { 77 var poll = new Poll; 78 if (req.postParams.save) { 79 try { 80 poll.update(req.postParams); 81 this.add(poll); 82 poll.notify(req.action); 83 res.message = gettext("The poll was created successfully."); 84 res.redirect(poll.href()); 85 } catch (err) { 86 res.message = err.toString(); 87 } 88 } else { 89 req.postParams.title_array = [,,]; 90 } 91 res.data.action = this.href(req.action); 92 res.data.title = gettext("Add Poll"); 93 res.data.body = poll.renderSkinAsString("$Poll#edit"); 94 this._parent.renderSkin("Site#page"); 95 return; 96 } 97 98 Polls.prototype.running_action = function() { 99 res.data.list = renderList(this.running, 100 "$Poll#listItem", 10, req.queryParams.page); 101 res.data.pager = renderPager(this.running, 102 this.href(req.action), 10, req.queryParams.page); 103 res.data.title = gettext("Running Polls"); 104 res.data.body = this.renderSkinAsString("$Polls#main"); 105 this._parent.renderSkin("Site#page"); 106 return; 107 } 108 109 Polls.prototype.all_action = function() { 110 res.data.list = renderList(this, "$Poll#listItem", 10, req.queryParams.page); 111 res.data.pager = renderPager(this, 112 this.href(), 10, req.queryParams.page); 113 res.data.title = gettext("All Polls"); 114 res.data.body = this.renderSkinAsString("$Polls#main"); 115 this._parent.renderSkin("Site#page"); 116 return; 117 } 118