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 if (req.postParams.save) { 78 try { 79 var poll = Poll.add(req.postParams, this._parent); 80 poll.notify(req.action); 81 res.message = gettext("The poll was created successfully."); 82 res.redirect(poll.href()); 83 } catch (err) { 84 res.message = err.toString(); 85 } 86 } else { 87 req.postParams.title_array = [null, null]; 88 } 89 res.data.action = this.href(req.action); 90 res.data.title = gettext("Add Poll"); 91 HopObject.confirmConstructor(Poll); 92 res.data.body = (new Poll).renderSkinAsString("$Poll#edit"); 93 this._parent.renderSkin("Site#page"); 94 return; 95 } 96 97 Polls.prototype.running_action = function() { 98 res.data.list = renderList(this.running, 99 "$Poll#listItem", 10, req.queryParams.page); 100 res.data.pager = renderPager(this.running, 101 this.href(req.action), 10, req.queryParams.page); 102 res.data.title = gettext("Running Polls"); 103 res.data.body = this.renderSkinAsString("$Polls#main"); 104 this._parent.renderSkin("Site#page"); 105 return; 106 } 107 108 Polls.prototype.all_action = function() { 109 res.data.list = renderList(this, "$Poll#listItem", 10, req.queryParams.page); 110 res.data.pager = renderPager(this, 111 this.href(), 10, req.queryParams.page); 112 res.data.title = gettext("All Polls"); 113 res.data.body = this.renderSkinAsString("$Polls#main"); 114 this._parent.renderSkin("Site#page"); 115 return; 116 } 117