Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[插件] 投票权限主题设置

[复制链接]
lu5266 发表于 2006-11-30 10:43:41 | 显示全部楼层 |阅读模式
名称: 投票权限主题设置
适用: Discuz! 5.0.0
作者: lu5266
演示: http://www.discuzs.net/
版权: lu5266


说明:
分开不一样的主题不一样的投票权限,即某些特定的投票可以允许更多特定的人投票

文件列表:
./templates/default/post_newthread.htm
./templates/default/post_editpost.htm
./include/editpost.inc.php
./include/newthread.inc.php
./include/special.inc.php
./misc.php


修改方法:


1: ./templates/default/post_newthread.htm (对应的风格假如也存在该文件那也要同样修改)

post_newthread.htm

  1. <input type="text" name="maxchoices" value="$maxpolloptions" size="5"><br></span>
复制代码



在下面加上:
  1.         <input class="checkbox" type="checkbox" name="allowpollchk" value="1" onclick="if(this.checked){$('allowpollscontrol').style.display='';$('chkallspan').style.display='';}else{$('allowpollscontrol').style.display='none';$('chkallspan').style.display='none';}" title="设置允许参与投票的用户组(对管理员无效){LF}如果全不选,就按照系统默认的设置{LF}如不是特别需要,请留空">参与用户组&nbsp;&nbsp;
  2.                 <span id="chkallspan" style="display: none">全选<input class="checkbox" type="checkbox" name="allowpollchkall" value="1" onclick="checkall(this.form, 'allowpolls', 'allowpollchkall');"></span><br><span id="allowpollscontrol" style="display: none">$allowpolls</span>
复制代码


2: ./templates/default/post_editpost.htm  

找:

  1. <input type="text" name="maxchoices" value="$poll[maxchoices]" size="5"><br>
  2.         </span></td><td class="altbg2">
复制代码


替换为:

  1. <input type="text" name="maxchoices" value="$poll[maxchoices]" size="5"><br></span>

  2.         <input class="checkbox" type="checkbox" name="allowpollchk" value="1" onclick="if(this.checked){$('allowpollscontrol').style.display='';$('chkallspan').style.display='';}else{$('allowpollscontrol').style.display='none';$('chkallspan').style.display='none';}" title="设置允许参与投票的用户组(对管理员无效){LF}如果全不选,就按照系统默认的设置{LF}如不是特别需要,请留空">参与用户组&nbsp;&nbsp;
  3.                 <span id="chkallspan" style="display: none">全选<input class="checkbox" type="checkbox" name="allowpollchkall" value="1" onclick="checkall(this.form, 'allowpolls', 'allowpollchkall');"></span><br><span id="allowpollscontrol" style="display: none">$allowpolls</span>

  4.         </td><td class="altbg2">
复制代码


3:./include/editpost.inc.php

找:
  1. $poll['polloption'][] = stripslashes($temppoll['polloption']);
  2.                         }
复制代码


下面加上:

  1. $i = 0;
  2.                         $allowpollgroups= explode(',', $db->result($db->query("SELECT allowpolls FROM {$tablepre}polls WHERE tid='$tid'"), 0));                               
  3.                         $allowpolls = '<div id="poplayer" style="padding:2px;background:#FFFFFF;border:#7FB9F8 1px solid;position:absolute;display:inline;margin-top:2px;"><table cellpadding="4" cellspacing="0" border="0" unselectable="on"><tr>';
  4.                         $query = $db->query("SELECT groupid,grouptitle FROM {$tablepre}usergroups WHERE  type='special' || type='member' || (type='system' && radminid> 0) ORDER BY groupid");
  5.                         while($group = $db->fetch_array($query)){       
  6.                                 $ischecked = in_array($group[groupid], $allowpollgroups) ? 'checked' : '';
  7.                                 $allowpolls .= "<td> $group[grouptitle]<input  type="checkbox" name="allowpolls[]" class="checkbox"  value="$group[groupid]" $ischecked></td>";
  8.                                 $allowpolls .= (++$i)%3 == 0 ? '</tr><tr>' : '';
  9.                         }
  10.                         $allowpolls .= '</tr></table></div>';
  11.                         //每行显示3个, 请根据需要修改
复制代码


再找:

  1. $db->query("UPDATE {$tablepre}polls SET multiple='$pollarray[multiple]', visible='$pollarray[visible]', maxchoices='$pollarray[maxchoices]', expiration='$pollarray[expiration]' WHERE tid='$tid'", 'UNBUFFERED');
复制代码


替换为:

  1.                                         $extsql = empty($allowpolls) ? ', allowpolls=\'\'' : ', allowpolls=\''.implode(',', $allowpolls).'\'';
  2.                                         $db->query("UPDATE {$tablepre}polls SET multiple='$pollarray[multiple]', visible='$pollarray[visible]', maxchoices='$pollarray[maxchoices]', expiration='$pollarray[expiration]' $extsql WHERE tid='$tid'", 'UNBUFFERED');
复制代码


4:./include/newthread.inc.php

找:

  1. include template('post_newthread');
复制代码


上面加上:

  1.         if($special == 1) {
  2.                 $i = 0;
  3.                 $allowpolls = '<div id="poplayer" style="padding:2px;background:#FFFFFF;border:#7FB9F8 1px solid;position:absolute;display:inline;margin-top:2px;"><table cellpadding="4" cellspacing="0" border="0" unselectable="on"><tr>';
  4.                 $query = $db->query("SELECT groupid,grouptitle FROM {$tablepre}usergroups WHERE  type='special' || type='member' || (type='system' && radminid> 0) ORDER BY groupid");
  5.                 while($group = $db->fetch_array($query)){                       
  6.                         $allowpolls .= "<td> $group[grouptitle]<input  type="checkbox" name="allowpolls[]" class="checkbox"  value="$group[groupid]"></td>";
  7.                         $allowpolls .= (++$i)%3 == 0 ? '</tr><tr>' : '';
  8.                 }
  9.                 $allowpolls .= '</tr></table></div>';
  10.         }//每行显示3个, 请根据需要修改
复制代码



再找


  1. $db->query("INSERT INTO {$tablepre}polls (tid, multiple, visible, maxchoices, expiration)
  2.                         VALUES ('$tid', '$pollarray[multiple]', '$pollarray[visible]', '$pollarray[maxchoices]', '$pollarray[expiration]')");
复制代码


替换为:

  1.                 $allowpolls = !empty($allowpolls) ? implode(',', $allowpolls) : '';
  2.                 $db->query("INSERT INTO {$tablepre}polls (tid, multiple, visible, maxchoices, expiration, allowpolls)
  3.                         VALUES ('$tid', '$pollarray[multiple]', '$pollarray[visible]', '$pollarray[maxchoices]', '$pollarray[expiration]', '$allowpolls')");
复制代码


5:./include/special.inc.php

找:

  1. $query = $db->query("SELECT multiple, visible, maxchoices, expiration FROM {$tablepre}polls WHERE tid='$tid'");
复制代码


替换为:

  1. $query = $db->query("SELECT multiple, visible, maxchoices, expiration, allowpolls FROM {$tablepre}polls WHERE tid='$tid'");
复制代码


再找:

  1. $expiration = $options['expiration'];
复制代码


下面加上:

  1. $allowvote = empty($options['allowpolls']) ? $allowvote : $discuz_uid == $thread['authorid'] || $adminid == 1 || in_array($groupid, explode(',', $options['allowpolls']));
复制代码


6:./misc.php

找:

  1. if($action == 'votepoll' && submitcheck('pollsubmit')) {
复制代码



下面加上:

  1.         $allowpolls = $db->result($db->query("SELECT allowpolls FROM {$tablepre}polls WHERE tid='$tid'"), 0);
  2.         $allowvote = empty($allowpolls) ? $allowvote : $discuz_uid == $thread['authorid'] || $adminid == 1 || in_array($groupid, explode(',', $allowpolls));
复制代码



7: 升级数据库

  1. ALTER TABLE `cdb_polls` ADD `allowpolls` VARCHAR( 255 ) NOT NULL ;
复制代码


完成了

说明:假如发投票没有设置哪个组可以投票的话,那么将按照系统本身设置的用户组设置哪个组可以投票
假如发投票那里设置了的话,就按照发投票设置,初管理员之外其他都受影响(受限的系统组是直接不可以投,如禁止发言).       

[ 本帖最后由 lu5266 于 2006-11-30 11:45 编辑 ]
 楼主| lu5266 发表于 2006-11-30 10:43:57 | 显示全部楼层
我的位置~~~~~
回复

使用道具 举报

zjttfs 发表于 2006-11-30 11:15:09 | 显示全部楼层
AD
......................
回复

使用道具 举报

karl907 发表于 2006-11-30 11:21:52 | 显示全部楼层
沙发没鸟!!!!
回复

使用道具 举报

花石子 发表于 2006-11-30 11:24:17 | 显示全部楼层


AD演示 下


http://www.yiid.com
回复

使用道具 举报

___Cutthroat___ 发表于 2006-11-30 11:28:54 | 显示全部楼层


  1. $allowpolls = $options['allowpolls'];
复制代码

special.inc.php 此段找不到喔 !
回复

使用道具 举报

freddy 发表于 2006-11-30 11:45:18 | 显示全部楼层
顶一下!
回复

使用道具 举报

 楼主| lu5266 发表于 2006-11-30 11:45:55 | 显示全部楼层

回复 #6 ___Cutthroat___ 的帖子

谢谢

我的大意

已经修改好
回复

使用道具 举报

 楼主| lu5266 发表于 2006-11-30 11:49:04 | 显示全部楼层

回复 #7 freddy 的帖子

再顶~~~~~
回复

使用道具 举报

 楼主| lu5266 发表于 2006-11-30 11:49:21 | 显示全部楼层

回复 #4 karl907 的帖子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-6-27 10:10 , Processed in 0.122167 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表