admincp_founder.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: admincp_founder.php 33912 2013-08-30 06:00:06Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. cpheader();
  12. if(empty($admincp) || !is_object($admincp) || !$admincp->isfounder) {
  13. exit('Access Denied');
  14. }
  15. if($operation == 'perm') {
  16. $do = !in_array(getgpc('do'), array('group', 'member', 'gperm', 'notifyusers')) ? 'member' : getgpc('do');
  17. shownav('founder', 'menu_founder_perm');
  18. if($do == 'group') {
  19. $id = intval(getgpc('id'));
  20. if(!$id) {
  21. foreach(C::t('common_admincp_group')->range() as $group) {
  22. $groups[$group['cpgroupid']] = $group['cpgroupname'];
  23. }
  24. if(!submitcheck('submit')) {
  25. showsubmenu('menu_founder_perm', array(
  26. array('nav_founder_perm_member', 'founder&operation=perm&do=member', 0),
  27. array('nav_founder_perm_group', 'founder&operation=perm&do=group', 1),
  28. array('nav_founder_perm_notifyusers', 'founder&operation=perm&do=notifyusers', 0),
  29. ));
  30. showformheader('founder&operation=perm&do=group');
  31. showtableheader();
  32. showsubtitle(array('', 'founder_cpgroupname', ''));
  33. foreach($groups as $id => $group) {
  34. showtablerow('style="height:20px"', array('class="td25"', 'class="td24"'), array(
  35. "<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$id\">",
  36. "<input type=\"text\" class=\"txtnobd\" onblur=\"this.className='txtnobd'\" onfocus=\"this.className='txt'\" size=\"15\" name=\"name[$id]\" value=\"$group\">",
  37. '<a href="'.ADMINSCRIPT.'?action=founder&operation=perm&do=group&id='.$id.'">'.cplang('edit').'</a>'
  38. ));
  39. }
  40. showtablerow('style="height:20px"', array(), array(cplang('add_new'), '<input class="txt" type="text" name="newcpgroupname" value="" />', ''));
  41. showsubmit('submit', 'submit', 'del');
  42. showtablefooter();
  43. showformfooter();
  44. } else {
  45. if(!empty($_GET['newcpgroupname'])) {
  46. if(C::t('common_admincp_group')->fetch_by_cpgroupname($_GET['newcpgroupname'])) {
  47. cpmsg('founder_perm_group_name_duplicate', '', 'error', array('name' => $_GET['newcpgroupname']));
  48. }
  49. C::t('common_admincp_group')->insert(array('cpgroupname' => strip_tags($_GET['newcpgroupname'])));
  50. }
  51. if(!empty($_GET['delete'])) {
  52. C::t('common_admincp_perm')->delete_by_cpgroupid_perm($_GET['delete']);
  53. C::t('common_admincp_member')->update_cpgroupid_by_cpgroupid($_GET['delete'], array('cpgroupid' => 0));
  54. C::t('common_admincp_group')->delete($_GET['delete']);
  55. }
  56. if(!empty($_GET['name'])) {
  57. foreach($_GET['name'] as $id => $name) {
  58. if($groups[$id] != $name) {
  59. $cpgroupid = ($cpgroup = C::t('common_admincp_group')->fetch_by_cpgroupname($name)) ? $cpgroup['cpgroupid'] : 0;
  60. if($cpgroupid && $_GET['name'][$cpgroupid] == $groups[$cpgroupid]) {
  61. cpmsg('founder_perm_group_name_duplicate', '', 'error', array('name' => $name));
  62. }
  63. C::t('common_admincp_group')->update($id, array('cpgroupname' => $name));
  64. }
  65. }
  66. }
  67. cpmsg('founder_perm_group_update_succeed', 'action=founder&operation=perm&do=group', 'succeed');
  68. }
  69. } else {
  70. if(!submitcheck('submit')) {
  71. showpermstyle();
  72. $perms = array();
  73. foreach(C::t('common_admincp_perm')->fetch_all_by_cpgroupid($id) as $perm) {
  74. $perms[] = $perm['perm'];
  75. }
  76. $cpgroupname = ($cpgroup = C::t('common_admincp_group')->fetch($id)) ? $cpgroup['cpgroupname'] : '';
  77. $data = getactionarray();
  78. $grouplist = '';
  79. foreach(C::t('common_admincp_group')->range() as $ggroup) {
  80. $grouplist .= '<a href="###" onclick="location.href=\''.ADMINSCRIPT.'?action=founder&operation=perm&do=group&switch=yes&id='.$ggroup['cpgroupid'].'&scrolltop=\'+document.documentElement.scrollTop"'.($_GET['id'] == $ggroup['cpgroupid'] ? ' class="current"' : '').'>'.$ggroup['cpgroupname'].'</a>';
  81. }
  82. $grouplist = '<span id="cpgselect" class="right popupmenu_dropmenu" onmouseover="showMenu({\'ctrlid\':this.id,\'pos\':\'34\'});$(\'cpgselect_menu\').style.top=(parseInt($(\'cpgselect_menu\').style.top)-document.documentElement.scrollTop)+\'px\'">'.cplang('founder_group_switch').'<em>&nbsp;&nbsp;</em></span>'.
  83. '<div id="cpgselect_menu" class="popupmenu_popup" style="display:none">'.$grouplist.'</div>';
  84. showsubmenu('menu_founder_groupperm', array(array()), $grouplist, array('group' => $cpgroupname));
  85. showformheader('founder&operation=perm&do=group&id='.$id);
  86. showtableheader();
  87. foreach($data['cats'] as $topkey) {
  88. if(!$data['actions'][$topkey]) {
  89. continue;
  90. }
  91. $checkedall = true;
  92. $row = '<tr><td class="vtop" id="perms_'.$topkey.'">';
  93. foreach($data['actions'][$topkey] as $k => $item) {
  94. if(!$item) {
  95. continue;
  96. }
  97. $checked = @in_array($item[1], $perms);
  98. if(!$checked) {
  99. $checkedall = false;
  100. }
  101. $row .= $item[1] ? '<div class="item'.($checked ? ' checked' : '').'"><a class="right" title="'.cplang('config').'" href="'.ADMINSCRIPT.'?frames=yes&action=founder&operation=perm&do=gperm&gset='.$topkey.'_'.$k.'" target="_blank">&nbsp;</a><label class="txt"><input name="permnew[]" value="'.$item[1].'" class="checkbox" type="checkbox" '.($checked ? 'checked="checked" ' : '').' onclick="checkclk(this)" />'.cplang($item[0]).'</label></div>' : '';
  102. }
  103. $row .= '</td></tr>';
  104. if($topkey != 'setting') {
  105. showtitle('<label><input class="checkbox" type="checkbox" onclick="permcheckall(this, \'perms_'.$topkey.'\')" '.($checkedall ? 'checked="checked" ' : '').'/> '.cplang('header_'.$topkey).'</label>');
  106. } else {
  107. showtitle('founder_perm_setting');
  108. }
  109. echo $row;
  110. }
  111. showsubmit('submit');
  112. showtablefooter();
  113. showformfooter();
  114. if(!empty($_GET['switch'])) {
  115. echo '<script type="text/javascript">showMenu({\'ctrlid\':\'cpgselect\',\'pos\':\'34\'});</script>';
  116. }
  117. } else {
  118. C::t('common_admincp_perm')->delete_by_cpgroupid_perm($id);
  119. if($_GET['permnew']) {
  120. foreach($_GET['permnew'] as $perm) {
  121. C::t('common_admincp_perm')->insert(array('cpgroupid' => $id, 'perm' => $perm));
  122. }
  123. }
  124. cpmsg('founder_perm_groupperm_update_succeed', 'action=founder&operation=perm&do=group', 'succeed');
  125. }
  126. }
  127. } elseif($do == 'member') {
  128. $founders = $_G['config']['admincp']['founder'] !== '' ? explode(',', str_replace(' ', '', addslashes($_G['config']['admincp']['founder']))) : array();
  129. if($founders) {
  130. $founderexists = true;
  131. $fuid = $fuser = array();
  132. foreach($founders as $founder) {
  133. if(is_numeric($founder)) {
  134. $fuid[] = $founder;
  135. } else {
  136. $fuser[] = $founder;
  137. }
  138. }
  139. $founders = array();
  140. if($fuid) {
  141. $founders = $founders + C::t('common_member')->fetch_all($fuid, false, 0);
  142. }
  143. if($fuser) {
  144. $founders = $founders + C::t('common_member')->fetch_all_by_username($fuser);
  145. }
  146. } else {
  147. $founderexists = false;
  148. $founders = C::t('common_member')->fetch_all_by_adminid(1);
  149. }
  150. $id = empty($_GET['id']) ? 0 : $_GET['id'];
  151. if(!$id) {
  152. if(!submitcheck('submit')) {
  153. showsubmenu('menu_founder_perm', array(
  154. array('nav_founder_perm_member', 'founder&operation=perm&do=member', 1),
  155. array('nav_founder_perm_group', 'founder&operation=perm&do=group', 0),
  156. array('nav_founder_perm_notifyusers', 'founder&operation=perm&do=notifyusers', 0),
  157. ));
  158. $groupselect = '<select name="newcpgroupid"><option value="0">'.cplang('founder_master').'</option>';
  159. $groups = array();
  160. foreach(C::t('common_admincp_group')->range() as $group) {
  161. $groupselect .= '<option value="'.$group['cpgroupid'].'">'.$group['cpgroupname'].'</option>';
  162. $groups[$group['cpgroupid']] = $group['cpgroupname'];
  163. }
  164. $groupselect .= '</select>';
  165. $members = $adminmembers = array();
  166. $adminmembers = C::t('common_admincp_member')->range();
  167. foreach ($adminmembers as $adminmember) {
  168. $adminmembers[$adminmember['uid']] = $adminmember;
  169. }
  170. foreach($founders as $uid => $founder) {
  171. $members[$uid] = array('uid' => $uid, 'username' => $founder['username'], 'cpgroupname' => cplang('founder_admin'));
  172. }
  173. if($adminmembers) {
  174. foreach(C::t('common_member')->fetch_all(array_keys($adminmembers), false, 0) as $member) {
  175. if(isset($members[$member['uid']])) {
  176. C::t('common_admincp_member')->delete($member['uid']);
  177. continue;
  178. }
  179. $member['cpgroupname'] = !empty($adminmembers[$member['uid']]['cpgroupid']) ? $groups[$adminmembers[$member['uid']]['cpgroupid']] : cplang('founder_master');
  180. if(!$founderexists && in_array($member['uid'], array_keys($founders))) {
  181. $member['cpgroupname'] = cplang('founder_admin');
  182. }
  183. $members[$member['uid']] = $member;
  184. }
  185. }
  186. if(!$founderexists) {
  187. showtips(cplang('home_security_nofounder').cplang('home_security_founder'));
  188. } else {
  189. showtips('home_security_founder');
  190. }
  191. showformheader('founder&operation=perm&do=member');
  192. showtableheader();
  193. showsubtitle(array('', 'founder_username', 'founder_usergname', ''));
  194. foreach($members as $id => $member) {
  195. $isfounder = array_key_exists($id, $founders);
  196. showtablerow('style="height:20px"', array('class="td25"', 'class="td24"', 'class="td24"'), array(
  197. !$isfounder || isset($adminmembers[$member['uid']]['cpgroupid']) ? "<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$id]\">" : '',
  198. "<a href=\"home.php?mod=space&uid=$member[uid]\" target=\"_blank\">$member[username]</a>",
  199. $member['cpgroupname'],
  200. !$isfounder && $adminmembers[$member['uid']]['cpgroupid'] ? '<a href="'.ADMINSCRIPT.'?action=founder&operation=perm&do=member&id='.$id.'">'.cplang('edit').'</a>' : ''
  201. ));
  202. }
  203. showtablerow('style="height:20px"', array('class="td25"', 'class="td24"', 'class="td24"'), array(cplang('add_new'), '<input class="txt" type="text" name="newcpusername" value="" />', $groupselect, ''));
  204. showsubmit('submit', 'submit', 'del');
  205. showtablefooter();
  206. showformfooter();
  207. } else {
  208. if(!empty($_GET['newcpusername'])) {
  209. $newcpuid = C::t('common_member')->fetch_uid_by_username($_GET['newcpusername']);
  210. if(!$newcpuid) {
  211. cpmsg('founder_perm_member_noexists', '', 'error', array('name' => $_GET['newcpusername']));
  212. }
  213. if(C::t('common_admincp_member')->count_by_uid($newcpuid) || array_key_exists($newcpuid, $founders)) {
  214. cpmsg('founder_perm_member_duplicate', '', 'error', array('name' => $_GET['newcpusername']));
  215. }
  216. C::t('common_admincp_member')->insert(array('uid' => $newcpuid, 'cpgroupid' => $_GET['newcpgroupid']));
  217. }
  218. if(!empty($_GET['delete'])) {
  219. C::t('common_admincp_member')->delete($_GET['delete']);
  220. }
  221. updatecache('founder');
  222. cpmsg('founder_perm_member_update_succeed', 'action=founder&operation=perm&do=member', 'succeed');
  223. }
  224. } else {
  225. if(!submitcheck('submit')) {
  226. $member = C::t('common_admincp_member')->fetch($id);
  227. if(!$member) {
  228. cpmsg('founder_perm_member_noexists', '', 'error');
  229. }
  230. $user = getuserbyuid($id);
  231. $username = $user['username'];
  232. $cpgroupid = empty($_GET['cpgroupid']) ? $member['cpgroupid'] : $_GET['cpgroupid'];
  233. $member['customperm'] = empty($_GET['cpgroupid']) || $_GET['cpgroupid'] == $member['cpgroupid'] ? dunserialize($member['customperm']) : array();
  234. $perms = array();
  235. foreach(C::t('common_admincp_perm')->fetch_all_by_cpgroupid($cpgroupid) as $perm) {
  236. $perms[] = $perm['perm'];
  237. }
  238. $data = getactionarray();
  239. $groupselect = '<select name="cpgroupidnew" onchange="location.href=\''.ADMINSCRIPT.'?action=founder&operation=perm&do=member&id='.$id.'&cpgroupid=\' + this.value">';
  240. foreach(C::t('common_admincp_group')->range() as $group) {
  241. $groupselect .= '<option value="'.$group['cpgroupid'].'"'.($group['cpgroupid'] == $cpgroupid ? ' selected="selected"' : '').'>'.$group['cpgroupname'].'</option>';
  242. }
  243. $groupselect .= '</select>';
  244. showpermstyle();
  245. showsubmenu('menu_founder_memberperm', array(array()), '', array('username' => $username));
  246. showformheader('founder&operation=perm&do=member&id='.$id);
  247. showtableheader();
  248. showsetting('founder_usergname', '', '', $groupselect);
  249. showtablefooter();
  250. showtableheader();
  251. foreach($data['cats'] as $topkey) {
  252. if(!$data['actions'][$topkey]) {
  253. continue;
  254. }
  255. $checkedall = true;
  256. $row = '<tr><td class="vtop" id="perms_'.$topkey.'">';
  257. foreach($data['actions'][$topkey] as $item) {
  258. if(!$item) {
  259. continue;
  260. }
  261. $checked = @in_array($item[1], $perms);
  262. $customchecked = @in_array($item[1], $member['customperm']);
  263. $extra = $checked ? ($customchecked ? '' : 'checked="checked" ').' onclick="checkclk(this)"' : 'disabled="disabled" ';
  264. if(!$checked || $customchecked) {
  265. $checkedall = false;
  266. }
  267. $row .= '<div class="item'.($checked && !$customchecked ? ' checked' : '').'"><label class="txt"><input name="permnew[]" value="'.$item[1].'" class="checkbox" type="checkbox" '.$extra.'/>'.cplang($item[0]).'</label></div>';
  268. }
  269. $row .= '</td></tr>';
  270. if($topkey != 'setting') {
  271. showtitle('<input class="checkbox" type="checkbox" onclick="permcheckall(this, \'perms_'.$topkey.'\')" '.($checkedall ? 'checked="checked" ' : '').'/> '.cplang('header_'.$topkey).'</label>');
  272. } else {
  273. showtitle('founder_perm_setting');
  274. }
  275. echo $row;
  276. }
  277. showsubmit('submit');
  278. showtablefooter();
  279. showformfooter();
  280. } else {
  281. $_permnew = !empty($_GET['permnew']) ? $_GET['permnew'] : array();
  282. $cpgroupidnew = $_GET['cpgroupidnew'];
  283. $dbperms = C::t('common_admincp_perm')->fetch_all_by_cpgroupid($cpgroupidnew);
  284. $perms = array();
  285. foreach($dbperms as $dbperm) {
  286. $perms[] = $dbperm['perm'];
  287. }
  288. $customperm = serialize(array_diff($perms, $_permnew));
  289. C::t('common_admincp_member')->update($id, array('cpgroupid' => $cpgroupidnew, 'customperm' => $customperm));
  290. cpmsg('founder_perm_member_update_succeed', 'action=founder&operation=perm&do=member', 'succeed');
  291. }
  292. }
  293. } elseif($do == 'gperm' && !empty($_GET['gset'])) {
  294. $gset = $_GET['gset'];
  295. list($topkey, $k) = explode('_', $gset);
  296. $data = getactionarray();
  297. $gset = $data['actions'][$topkey][$k];
  298. if(!$gset) {
  299. cpmsg('undefined_action', '', 'error');
  300. }
  301. if(!submitcheck('submit')) {
  302. $allperms = C::t('common_admincp_perm')->fetch_all_by_perm($gset[1]);
  303. $groups = C::t('common_admincp_group')->range();
  304. showsubmenu('menu_founder_permgrouplist', array(array()), '', array('perm' => cplang($gset[0])));
  305. showformheader('founder&operation=perm&do=gperm&gset='.$_GET['gset']);
  306. showtableheader();
  307. showsubtitle(array('', 'founder_usergname'));
  308. foreach($groups as $id => $group) {
  309. showtablerow('style="height:20px"', array('class="td25"', ''), array(
  310. "<input class=\"checkbox\" type=\"checkbox\" name=\"permnew[]\" ".($allperms[$group['cpgroupid']]['perm'] ? 'checked="checked"' : '')." value=\"$id\">",
  311. $group['cpgroupname']
  312. ));
  313. }
  314. showsubmit('submit');
  315. showtablefooter();
  316. showformfooter();
  317. } else {
  318. foreach(C::t('common_admincp_group')->range() as $group) {
  319. if(in_array($group['cpgroupid'], $_GET['permnew'])) {
  320. C::t('common_admincp_perm')->insert(array('cpgroupid' => $group['cpgroupid'], 'perm' => $gset[1]), false, true);
  321. } else {
  322. C::t('common_admincp_perm')->delete_by_cpgroupid_perm($group['cpgroupid'], $gset[1]);
  323. }
  324. }
  325. cpmsg('founder_perm_gperm_update_succeed', 'action=founder&operation=perm', 'succeed');
  326. }
  327. } elseif($do == 'notifyusers') {
  328. $notifyusers = dunserialize($_G['setting']['notifyusers']);
  329. $notifytypes = explode(',', $_G['setting']['adminnotifytypes']);
  330. if(!submitcheck('submit')) {
  331. showpermstyle();
  332. showsubmenu('menu_founder_perm', array(
  333. array('nav_founder_perm_member', 'founder&operation=perm&do=member', 0),
  334. array('nav_founder_perm_group', 'founder&operation=perm&do=group', 0),
  335. array('nav_founder_perm_notifyusers', 'founder&operation=perm&do=notifyusers', 1),
  336. ));
  337. showtips('founder_notifyusers_tips');
  338. showformheader('founder&operation=perm&do=notifyusers');
  339. showtableheader();
  340. showsubtitle(array('', 'username', '', 'founder_notifyusers_types'));
  341. foreach($notifyusers as $uid => $user) {
  342. $types = '';
  343. foreach($notifytypes as $key => $typename) {
  344. $checked = $user['types'][$key] ? ' checked' : '';
  345. if(substr($typename, 0, 7) == 'verify_') {
  346. $i = substr($typename, -1, 1);
  347. if($_G['setting']['verify'][$i]['available']) {
  348. $tname = $_G['setting']['verify'][$i]['title'];
  349. } else {
  350. continue;
  351. }
  352. } else {
  353. $tname = cplang('founder_notidyusers_'.$typename);
  354. }
  355. $types .= "<div class=\"item$checked\"><label class=\"txt\"><input class=\"checkbox\" onclick=\"checkclk(this)\" type=\"checkbox\" name=\"notifytypes_{$uid}[{$typename}]\" value=\"1\"$checked>".$tname.'</label></div>';
  356. }
  357. showtablerow('style="height:20px"', array('class="td25"', 'class="td24"', 'class="td25"', 'class="vtop"'), array(
  358. "<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$uid\">",
  359. "<input type=\"hidden\" class=\"txtnobd\" name=\"name[$uid]\" value=\"$user[username]\">$user[username]",
  360. '<input name="chkall_'.$uid.'" id="chkall_'.$uid.'" type="checkbox" class="checkbox" onclick="checkAll(\'prefix\', this.form, \'notifytypes_'.$uid.'\', \'chkall_'.$uid.'\', 1)" />'.cplang('select_all'),
  361. $types
  362. ));
  363. }
  364. showtablerow('style="height:20px"', array('', 'colspan="3"'), array(cplang('add_new'), '<input class="txt" type="text" name="newusername" value="" />'));
  365. showsubmit('submit', 'submit', 'del');
  366. showtablefooter();
  367. showformfooter();
  368. } else {
  369. $newnotifyusers = array();
  370. if($_GET['name']) {
  371. foreach($_GET['name'] as $uid => $username) {
  372. if($_GET['delete'] && in_array($uid, $_GET['delete'])) {
  373. continue;
  374. }
  375. $types = '';
  376. foreach($notifytypes as $typename) {
  377. $types .= intval($_GET['notifytypes_'.$uid][$typename]);
  378. }
  379. $newnotifyusers[$uid] = array('username' => $username, 'types' => $types);
  380. }
  381. }
  382. if($_GET['newusername']) {
  383. $newusername = addslashes($_GET['newusername']);
  384. $newuid = C::t('common_member')->fetch_uid_by_username($newusername);
  385. if($newuid) {
  386. $newnotifyusers[$newuid] = array('username' => $newusername, 'types' => '');
  387. }
  388. }
  389. C::t('common_setting')->update('notifyusers', $newnotifyusers);
  390. updatecache('setting');
  391. cpmsg('founder_perm_notifyusers_succeed', 'action=founder&operation=perm&do=notifyusers', 'succeed');
  392. }
  393. }
  394. }
  395. function getactionarray() {
  396. $isfounder = false;
  397. require './source/admincp/admincp_menu.php';
  398. require './source/admincp/admincp_perm.php';
  399. require './source/admincp/menu/menu_cloud.php';
  400. unset($menu['cloud'][0]);
  401. unset($topmenu['index'], $menu['index']);
  402. $actioncat = $actionarray = array();
  403. $actioncat[] = 'setting';
  404. $actioncat = array_merge($actioncat, array_keys($topmenu));
  405. $actionarray['setting'][] = array('founder_perm_allowpost', '_allowpost');
  406. foreach($menu as $tkey => $items) {
  407. foreach($items as $item) {
  408. $actionarray[$tkey][] = $item;
  409. }
  410. }
  411. return array('actions' => $actionarray, 'cats' => $actioncat);
  412. }
  413. function showpermstyle() {
  414. echo <<<EOF
  415. <style>
  416. .item{ float: left; width: 180px; line-height: 25px; margin-left: 5px; border-right: 1px #deeffb dotted; }
  417. .vtop .right, .item .right{ padding: 0 10px; line-height: 22px; background: url('static/image/admincp/bg_repno.gif') no-repeat -286px -145px; font-weight: normal;margin-right:10px; }
  418. .vtop a:hover.right, .item a:hover.right { text-decoration:none; }
  419. </style>
  420. <script type="text/JavaScript">
  421. function permcheckall(obj, perms, t) {
  422. var t = !t ? 0 : t;
  423. var checkboxs = $(perms).getElementsByTagName('INPUT');
  424. for(var i = 0; i < checkboxs.length; i++) {
  425. var e = checkboxs[i];
  426. if(e.type == 'checkbox') {
  427. if(!t) {
  428. if(!e.disabled) {
  429. e.checked = obj.checked;
  430. }
  431. } else {
  432. if(obj != e) {
  433. e.style.visibility = obj.checked ? 'hidden' : 'visible';
  434. }
  435. }
  436. e.parentNode.parentNode.className = e.checked ? 'item checked' : 'item';
  437. }
  438. }
  439. }
  440. function checkclk(obj) {
  441. var obj = obj.parentNode.parentNode;
  442. obj.className = obj.className == 'item' ? 'item checked' : 'item';
  443. }
  444. </script>
  445. EOF;
  446. }