admincp_diytemplate.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  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_diytemplate.php 29236 2012-03-30 05:34:47Z chenmengshu $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. cpheader();
  12. $operation = in_array($operation, array('edit', 'perm')) ? $operation : 'list';
  13. shownav('portal', 'diytemplate');
  14. if($operation == 'list') {
  15. $searchctrl = '<span style="float: right; padding-right: 40px;">'
  16. .'<a href="javascript:;" onclick="$(\'tb_search\').style.display=\'\';$(\'a_search_show\').style.display=\'none\';$(\'a_search_hide\').style.display=\'\';" id="a_search_show" style="display:none">'.cplang('show_search').'</a>'
  17. .'<a href="javascript:;" onclick="$(\'tb_search\').style.display=\'none\';$(\'a_search_show\').style.display=\'\';$(\'a_search_hide\').style.display=\'none\';" id="a_search_hide">'.cplang('hide_search').'</a>'
  18. .'</span>';
  19. showsubmenu('diytemplate', array(
  20. array('list', 'diytemplate', 1),
  21. ), $searchctrl);
  22. $intkeys = array('uid', 'closed');
  23. $strkeys = array();
  24. $randkeys = array();
  25. $likekeys = array('targettplname', 'primaltplname', 'username', 'name');
  26. $results = getwheres($intkeys, $strkeys, $randkeys, $likekeys);
  27. foreach($likekeys as $k) {
  28. $_GET[$k] = dhtmlspecialchars($_GET[$k]);
  29. }
  30. $wherearr = $results['wherearr'];
  31. $mpurl = ADMINSCRIPT.'?action=diytemplate';
  32. $mpurl .= '&'.implode('&', $results['urls']);
  33. $wherearr[] = " primaltplname NOT LIKE 'portal/list%' ";
  34. $wherearr[] = " primaltplname NOT LIKE 'portal/portal_topic_content%' ";
  35. if($_GET['permname']) {
  36. $tpls = '';
  37. $member = C::t('common_member')->fetch_by_username($_GET['permname']);
  38. if($member && $member['adminid'] != 1) {
  39. $tpls = array_keys(C::t('common_template_permission')->fetch_all_by_uid($member['uid']));
  40. if(($tpls = dimplode($tpls))) {
  41. $wherearr[] = 'targettplname IN ('.$tpls.')';
  42. } else {
  43. cpmsg_error($_GET['permname'].cplang('diytemplate_the_username_has_not_template'));
  44. }
  45. }
  46. $mpurl .= '&permname='.$_GET['permname'];
  47. }
  48. $wheresql = empty($wherearr)?'':implode(' AND ', $wherearr);
  49. $orders = getorders(array('dateline','targettplname'), 'dateline');
  50. $ordersql = $orders['sql'];
  51. if($orders['urls']) $mpurl .= '&'.implode('&', $orders['urls']);
  52. $orderby = array($_GET['orderby']=>' selected');
  53. $ordersc = array($_GET['ordersc']=>' selected');
  54. $perpage = empty($_GET['perpage'])?0:intval($_GET['perpage']);
  55. if(!in_array($perpage, array(10,20,50,100))) $perpage = 20;
  56. $perpages = array($perpage=>' selected');
  57. $searchlang = array();
  58. $keys = array('search', 'likesupport', 'resultsort', 'defaultsort', 'orderdesc', 'orderasc', 'perpage_10', 'perpage_20', 'perpage_50', 'perpage_100',
  59. 'diytemplate_name', 'diytemplate_dateline', 'diytemplate_targettplname', 'diytemplate_primaltplname', 'diytemplate_uid', 'diytemplate_username',
  60. 'nolimit', 'no', 'yes', 'diytemplate_permname', 'diytemplate_permname_tips');
  61. foreach ($keys as $key) {
  62. $searchlang[$key] = cplang($key);
  63. }
  64. $adminscript = ADMINSCRIPT;
  65. echo <<<SEARCH
  66. <form method="get" autocomplete="off" action="$adminscript" id="tb_search">
  67. <div style="margin-top:8px;">
  68. <table cellspacing="3" cellpadding="3">
  69. <tr>
  70. <th>$searchlang[diytemplate_name]*</th><td><input type="text" class="txt" name="name" value="$_GET[name]"></td>
  71. <th>$searchlang[diytemplate_targettplname]*</th><td><input type="text" class="txt" name="targettplname" value="$_GET[targettplname]"></td>
  72. <th>$searchlang[diytemplate_primaltplname]*</th><td><input type="text" class="txt" name="primaltplname" value="$_GET[primaltplname]"> *$searchlang[likesupport]</td>
  73. </tr>
  74. <tr>
  75. <th>$searchlang[diytemplate_uid]</th><td><input type="text" class="txt" name="uid" value="$_GET[uid]"></td>
  76. <th>$searchlang[diytemplate_username]*</th><td><input type="text" class="txt" name="username" value="$_GET[username]" colspan=2></td>
  77. </tr>
  78. <tr>
  79. <th>$searchlang[resultsort]</th>
  80. <td colspan="3">
  81. <select name="orderby">
  82. <option value="">$searchlang[defaultsort]</option>
  83. <option value="dateline"$orderby[dateline]>$searchlang[diytemplate_dateline]</option>
  84. <option value="targettplname"$orderby[targettplname]>$searchlang[diytemplate_targettplname]</option>
  85. </select>
  86. <select name="ordersc">
  87. <option value="desc"$ordersc[desc]>$searchlang[orderdesc]</option>
  88. <option value="asc"$ordersc[asc]>$searchlang[orderasc]</option>
  89. </select>
  90. <select name="perpage">
  91. <option value="10"$perpages[10]>$searchlang[perpage_10]</option>
  92. <option value="20"$perpages[20]>$searchlang[perpage_20]</option>
  93. <option value="50"$perpages[50]>$searchlang[perpage_50]</option>
  94. <option value="100"$perpages[100]>$searchlang[perpage_100]</option>
  95. </select>
  96. <input type="hidden" name="action" value="diytemplate">
  97. </td>
  98. <th>$searchlang[diytemplate_permname]</th>
  99. <td><input type="text" class="txt" name="permname" value="$_GET[permname]"> $searchlang[diytemplate_permname_tips]
  100. <input type="submit" name="searchsubmit" value="$searchlang[search]" class="btn"></td>
  101. </tr>
  102. </table>
  103. </div>
  104. </form>
  105. SEARCH;
  106. $start = ($page-1)*$perpage;
  107. $mpurl .= '&perpage='.$perpage;
  108. $perpages = array($perpage => ' selected');
  109. showformheader('diytemplate');
  110. showtableheader('diytemplate_list');
  111. showsubtitle(array('diytemplate_name', 'diytemplate_targettplname', 'diytemplate_primaltplname', 'username', 'diytemplate_dateline', 'operation'));
  112. $multipage = '';
  113. if(($count = C::t('common_diy_data')->count_by_where($wheresql))) {
  114. loadcache('diytemplatename');
  115. require_once libfile('function/block');
  116. foreach(C::t(common_diy_data)->fetch_all_by_where($wheresql, $ordersql, $start, $perpage) as $value) {
  117. $value['name'] = $_G['cache']['diytemplatename'][$value['targettplname']];
  118. $value['dateline'] = $value['dateline'] ? dgmdate($value['dateline']) : '';
  119. $diyurl = block_getdiyurl($value['targettplname']);
  120. $diytitle = cplang($diyurl['flag'] ? 'diytemplate_share' : 'diytemplate_alone');
  121. showtablerow('', array('class=""', 'class=""', 'class="td28"'), array(
  122. "<a href=\"$diyurl[url]\" title=\"$diytitle\" target=\"_blank\">$value[name]</a>",
  123. '<span title="'.cplang('diytemplate_path').'./data/diy/'.$value['targettplname'].'.htm">'.$value['targettplname'].'</span>',
  124. '<span title="'.cplang('diytemplate_path').$_G['style']['tpldir'].'/'.$value['primaltplname'].'.htm">'.$value['primaltplname'].'</span>',
  125. "<a href=\"home.php?mod=space&uid=$value[uid]&do=profile\" target=\"_blank\">$value[username]</a>",
  126. $value[dateline],
  127. '<a href="'.ADMINSCRIPT.'?action=diytemplate&operation=edit&targettplname='.$value['targettplname'].'&tpldirectory='.$value['tpldirectory'].'">'.cplang('edit').'</a> '.
  128. '<a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname='.$value['targettplname'].'&tpldirectory='.$value['tpldirectory'].'">'.cplang('diytemplate_perm').'</a>',
  129. ));
  130. }
  131. $multipage = multi($count, $perpage, $page, $mpurl);
  132. }
  133. showsubmit('', '', '', '', $multipage);
  134. showtablefooter();
  135. showformfooter();
  136. } elseif($operation == 'edit') {
  137. loadcache('diytemplatename');
  138. $targettplname = $_GET['targettplname'];
  139. $tpldirectory = $_GET['tpldirectory'];
  140. $diydata = C::t('common_diy_data')->fetch($targettplname, $tpldirectory);
  141. if(empty($diydata)) { cpmsg_error('diytemplate_targettplname_error', dreferer());}
  142. if(!submitcheck('editsubmit')) {
  143. if(empty($diydata['name'])) $diydata['name'] = $_G['cache']['diytemplatename'][$diydata['targettplname']];
  144. shownav('portal', 'diytemplate', $diydata['name']);
  145. showsubmenu(cplang('diytemplate_edit').' - '.$diydata['name'], array(
  146. array('list', 'diytemplate', 0),
  147. array('edit', 'diytemplate&operation=edit&targettplname='.$_GET['targettplname']."&tpldirectory=$tpldirectory", 1)
  148. ));
  149. showformheader("diytemplate&operation=edit&targettplname=$targettplname&tpldirectory=$tpldirectory");
  150. showtableheader();
  151. showtitle('edit');
  152. showsetting('diytemplate_name', 'name', $diydata['name'],'text');
  153. showsetting('diytemplate_targettplname', '', '',cplang('diytemplate_path').'./data/diy/'.$diydata['targettplname'].'.htm');
  154. showsetting('diytemplate_primaltplname', '', '',cplang('diytemplate_path').$_G['style']['tpldir'].'/'.$diydata['primaltplname'].'.htm');
  155. showsetting('diytemplate_username', '', '',$diydata['username']);
  156. showsetting('diytemplate_dateline', '', '',$diydata['dateline'] ? dgmdate($diydata['dateline']) : '');
  157. showsubmit('editsubmit');
  158. showtablefooter();
  159. showformfooter();
  160. } else {
  161. $editdiydata = array('name'=>$_GET['name']);
  162. C::t('common_diy_data')->update($targettplname, $tpldirectory, $editdiydata);
  163. include_once libfile('function/cache');
  164. updatecache('diytemplatename');
  165. cpmsg('diytemplate_edit_succeed', 'action=diytemplate', 'succeed');
  166. }
  167. } elseif($operation=='perm') {
  168. loadcache('diytemplatename');
  169. $targettplname = $_GET['targettplname'];
  170. $tpldirectory = $_GET['tpldirectory'];
  171. $diydata = C::t('common_diy_data')->fetch($targettplname, $tpldirectory);
  172. if(empty($diydata)) { cpmsg_error('diytemplate_targettplname_error', dreferer());}
  173. if(!submitcheck('permsubmit')) {
  174. shownav('portal', 'diytemplate', 'diytemplate_perm');
  175. showsubmenu(cplang('diytemplate_perm_edit').' - '.($diydata['name'] ? cplang($diydata['name']) : $_G['cache']['diytemplatename'][$diydata['targettplname']]));
  176. showtips('diytemplate_perm_tips');
  177. showformheader("diytemplate&operation=perm&targettplname=$targettplname&tpldirectory=$tpldirectory");
  178. showtableheader('', 'fixpadding');
  179. showsubtitle(array('', 'username',
  180. '<input class="checkbox" type="checkbox" name="chkallmanage" onclick="checkAll(\'prefix\', this.form, \'allowmanage\', \'chkallmanage\')" id="chkallmanage" /><label for="chkallmanage">'.cplang('block_perm_manage').'</label>',
  181. '<input class="checkbox" type="checkbox" name="chkallrecommend" onclick="checkAll(\'prefix\', this.form, \'allowrecommend\', \'chkallrecommend\')" id="chkallrecommend" /><label for="chkallrecommend">'.cplang('block_perm_recommend').'</label>',
  182. '<input class="checkbox" type="checkbox" name="chkallneedverify" onclick="checkAll(\'prefix\', this.form, \'needverify\', \'chkallneedverify\')" id="chkallneedverify" /><label for="chkallneedverify">'.cplang('block_perm_needverify').'</label>',
  183. 'block_perm_inherited'
  184. ));
  185. $allpermission = C::t('common_template_permission')->fetch_all_by_targettplname($targettplname);
  186. $allusername = C::t('common_member')->fetch_all_username_by_uid(array_keys($allpermission));
  187. $line = '&minus;';
  188. foreach($allpermission as $uid => $value) {
  189. if(!empty($value['inheritedtplname'])) {
  190. showtablerow('', array('class="td25"'), array(
  191. "",
  192. "$allusername[$uid]",
  193. $value['allowmanage'] ? '&radic;' : $line,
  194. $value['allowrecommend'] ? '&radic;' : $line,
  195. $value['needverify'] ? '&radic;' : $line,
  196. '<a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname='.$value['inheritedtplname'].'">'.$_G['cache']['diytemplatename'][$value['inheritedtplname']].'</a>',
  197. ));
  198. } else {
  199. showtablerow('', array('class="td25"'), array(
  200. "<input type=\"checkbox\" class=\"checkbox\" name=\"delete[$value[uid]]\" value=\"$value[uid]\" />
  201. <input type=\"hidden\" name=\"perm[$value[uid]][allowmanage]\" value=\"$value[allowmanage]\" />
  202. <input type=\"hidden\" name=\"perm[$value[uid]][allowrecommend]\" value=\"$value[allowrecommend]\" />
  203. <input type=\"hidden\" name=\"perm[$value[uid]][needverify]\" value=\"$value[needverify]\" />",
  204. "$allusername[$uid]",
  205. "<input type=\"checkbox\" class=\"checkbox\" name=\"allowmanage[$value[uid]]\" value=\"1\" ".($value['allowmanage'] ? 'checked' : '').' />',
  206. "<input type=\"checkbox\" class=\"checkbox\" name=\"allowrecommend[$value[uid]]\" value=\"1\" ".($value['allowrecommend'] ? 'checked' : '').' />',
  207. "<input type=\"checkbox\" class=\"checkbox\" name=\"needverify[$value[uid]]\" value=\"1\" ".($value['needverify'] ? 'checked' : '').' />',
  208. $line,
  209. ));
  210. }
  211. }
  212. showtablerow('', array('class="td25"'), array(
  213. cplang('add_new'),
  214. '<input type="text" class="txt" name="newuser" value="" size="20" />',
  215. '<input type="checkbox" class="checkbox" name="newallowmanage" value="1" />',
  216. '<input type="checkbox" class="checkbox" name="newallowrecommend" value="1" />',
  217. '<input type="checkbox" class="checkbox" name="newneedverify" value="1" />',
  218. '',
  219. ));
  220. showsubmit('permsubmit', 'submit', 'del');
  221. showtablefooter();
  222. showformfooter();
  223. } else {
  224. $users = array();
  225. if(!empty($_GET['newuser'])) {
  226. $uid = C::t('common_member')->fetch_uid_by_username($_GET['newuser']);
  227. if($uid) {
  228. $user = array();
  229. $user['uid'] = $uid;
  230. $user['allowmanage'] = $_GET['newallowmanage'] ? 1 : 0;
  231. $user['allowrecommend'] = $_GET['newallowrecommend'] ? 1 : 0;
  232. $user['needverify'] = $_GET['newneedverify'] ? 1 : 0;
  233. $users[] = $user;
  234. } else {
  235. cpmsg_error($_GET['newuser'].cplang('block_has_no_allowauthorizedblock'), dreferer());
  236. }
  237. }
  238. if(is_array($_GET['perm'])) {
  239. foreach($_GET['perm'] as $uid => $value) {
  240. if(empty($_GET['delete']) || !in_array($uid, $_GET['delete'])) {
  241. $user = array();
  242. $user['allowmanage'] = $_GET['allowmanage'][$uid] ? 1 : 0;
  243. $user['allowrecommend'] = $_GET['allowrecommend'][$uid] ? 1 : 0;
  244. $user['needverify'] = $_GET['needverify'][$uid] ? 1 : 0;
  245. if($value['allowmanage'] != $user['allowmanage'] || $value['allowrecommend'] != $user['allowrecommend'] || $value['needverify'] != $user['needverify'] ) {
  246. $user['uid'] = intval($uid);
  247. $users[] = $user;
  248. }
  249. }
  250. }
  251. }
  252. if(!empty($users) || $_GET['delete']) {
  253. require_once libfile('class/blockpermission');
  254. $tplpermsission = & template_permission::instance();
  255. if($_GET['delete']) {
  256. $tplpermsission->delete_users($targettplname ,$_GET['delete']);
  257. }
  258. if(!empty($users)) {
  259. $tplpermsission->add_users($targettplname, $users);
  260. }
  261. }
  262. cpmsg('diytemplate_perm_update_succeed', "action=diytemplate&operation=perm&targettplname=$targettplname&tpldirectory=$tpldirectory", 'succeed');
  263. }
  264. }
  265. ?>