admincp_main.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  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_main.php 36284 2016-12-12 00:47:50Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. lang('admincp_menu');
  12. $extra = cpurl('url');
  13. $extra = $extra && getgpc('action') ? $extra : 'action=index';
  14. $charset = CHARSET;
  15. $title = cplang('admincp_title');
  16. $header_welcome = cplang('header_welcome');
  17. $header_logout = cplang('header_logout');
  18. $header_bbs = cplang('header_bbs');
  19. if(isfounder()) {
  20. cplang('founder_admin');
  21. } else {
  22. if($GLOBALS['admincp']->adminsession['cpgroupid']) {
  23. $cpgroup = C::t('common_admincp_group')->fetch($GLOBALS['admincp']->adminsession['cpgroupid']);
  24. $cpadmingroup = $cpgroup['cpgroupname'];
  25. } else {
  26. cplang('founder_master');
  27. }
  28. }
  29. require './source/admincp/admincp_menu.php';
  30. $basescript = ADMINSCRIPT;
  31. echo <<<EOT
  32. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  33. <html xmlns="http://www.w3.org/1999/xhtml"><head>
  34. <meta http-equiv="Content-Type" content="text/html; charset=$charset">
  35. <title>$title</title>
  36. <meta content="Comsenz Inc." name="Copyright" />
  37. <link rel="stylesheet" href="static/image/admincp/admincp.css?{$_G[style][verhash]}" type="text/css" media="all" />
  38. <script src="{$_G[setting][jspath]}common.js?{$_G[style][verhash]}" type="text/javascript"></script>
  39. </head>
  40. <body style="margin: 0px" scroll="no">
  41. <div id="append_parent"></div>
  42. $shownotice
  43. <table id="frametable" cellpadding="0" cellspacing="0" width="100%" height="100%">
  44. <tr>
  45. <td colspan="2" height="90">
  46. <div class="mainhd">
  47. <a href="$basescript?frames=yes&action=index" class="logo">Discuz! Administrator's Control Panel</a>
  48. <div class="uinfo" id="frameuinfo">
  49. <p>$header_welcome, $cpadmingroup <em>{$_G['member']['username']}</em> [<a href="$basescript?action=logout" target="_top">$header_logout</a>]</p>
  50. <p class="btnlink"><a href="index.php" target="_blank">$header_bbs</a></p>
  51. </div>
  52. <div class="navbg"></div>
  53. <div class="nav">
  54. <ul id="topmenu">
  55. EOT;
  56. foreach($topmenu as $k => $v) {
  57. if($k == 'cloud') {
  58. continue;
  59. }
  60. if($v === '') {
  61. $v = @array_keys($menu[$k]);
  62. $v = $menu[$k][$v[0]][1];
  63. }
  64. showheader($k, $v);
  65. }
  66. $uc_api_url = '';
  67. if($isfounder) {
  68. loaducenter();
  69. $uc_api_url = UC_API;
  70. echo '<li><em><a id="header_uc" hidefocus="true" href="'.UC_API.'/admin.php?m=frame" onmouseover="previewheader(\'uc\')" onmouseout="previewheader()" onclick="uc_login=1;toggleMenu(\'uc\', \'\');doane(event);">'.cplang('header_uc').'</a></em></li>';
  71. $topmenu['uc'] = '';
  72. }
  73. $headers = "'".implode("','", array_keys($topmenu))."'";
  74. echo <<<EOT
  75. </ul>
  76. <div class="currentloca">
  77. <p id="admincpnav"></p>
  78. </div>
  79. <div class="navbd"></div>
  80. <div class="sitemapbtn">
  81. <div style="float: left; margin:-7px 10px 0 0"><form name="search" method="post" autocomplete="off" action="$basescript?action=search" target="main"><input type="text" name="keywords" value="" class="txt" x-webkit-speech speech /> <input type="hidden" name="searchsubmit" value="yes" class="btn" /><input type="submit" name="searchsubmit" value="$lang[search]" class="btn" style="margin-top: 5px;vertical-align:middle" /></form></div>
  82. <span id="add2custom" style="display: none"></span>
  83. <a href="###" id="cpmap" onclick="showMap();return false;"><img src="static/image/admincp/btn_map.gif" title="$lang[admincp_maptext]" width="46" height="18" /></a>
  84. </div>
  85. </div>
  86. </div>
  87. </td>
  88. </tr>
  89. <tr>
  90. <td valign="top" width="160" class="menutd">
  91. <div id="leftmenu" class="menu">
  92. EOT;
  93. foreach ($menu as $k => $v) {
  94. showmenu($k, $v);
  95. }
  96. unset($menu);
  97. $plugindefaultkey = $isfounder ? 1 : 0;
  98. echo <<<EOT
  99. </div>
  100. </td>
  101. <td valign="top" width="100%" class="mask">
  102. <iframe src="$basescript?$extra" id="main" name="main" width="100%" height="100%" frameborder="0" scrolling="yes" style="overflow: visible;display:"></iframe>
  103. </td>
  104. </tr>
  105. </table>
  106. <div id="scrolllink" style="display: none">
  107. <span onclick="menuScroll(1)"><img src="static/image/admincp/scrollu.gif" /></span><span onclick="menuScroll(2)"><img src="static/image/admincp/scrolld.gif" /></span>
  108. </div>
  109. <div class="copyright">
  110. <p>Powered by <a href="http://www.discuz.net/" target="_blank">Discuz!</a> {$_G['setting']['version']}</p>
  111. <p>&copy; 2001-2017, <a href="http://www.comsenz.com/" target="_blank">Comsenz Inc.</a></p>
  112. </div>
  113. <div id="cpmap_menu" class="custom" style="display: none">
  114. <div class="cmain" id="cmain"></div>
  115. <div class="cfixbd"></div>
  116. </div>
  117. <script type="text/JavaScript">
  118. var cookiepre = '{$_G[config][cookie][cookiepre]}', cookiedomain = '{$_G[config][cookie][cookiedomain]}', cookiepath = '{$_G[config][cookie][cookiepath]}';
  119. var headers = new Array($headers), admincpfilename = '$basescript', menukey = '';
  120. function switchheader(key) {
  121. if(!key || !$('header_' + key)) {
  122. return;
  123. }
  124. for(var k in top.headers) {
  125. if($('menu_' + headers[k])) {
  126. $('menu_' + headers[k]).style.display = headers[k] == key ? '' : 'none';
  127. }
  128. }
  129. var lis = $('topmenu').getElementsByTagName('li');
  130. for(var i = 0; i < lis.length; i++) {
  131. if(lis[i].className == 'navon') lis[i].className = '';
  132. }
  133. $('header_' + key).parentNode.parentNode.className = 'navon';
  134. }
  135. var headerST = null;
  136. function previewheader(key) {
  137. if(key) {
  138. headerST = setTimeout(function() {
  139. for(var k in top.headers) {
  140. if($('menu_' + headers[k])) {
  141. $('menu_' + headers[k]).style.display = headers[k] == key ? '' : 'none';
  142. }
  143. }
  144. var hrefs = $('menu_' + key).getElementsByTagName('a');
  145. for(var j = 0; j < hrefs.length; j++) {
  146. hrefs[j].className = '';
  147. }
  148. }, 1000);
  149. } else {
  150. clearTimeout(headerST);
  151. }
  152. }
  153. function toggleMenu(key, url) {
  154. menukey = key;
  155. switchheader(key);
  156. if(url) {
  157. parent.main.location = admincpfilename + '?action=' + url;
  158. var hrefs = $('menu_' + key).getElementsByTagName('a');
  159. for(var j = 0; j < hrefs.length; j++) {
  160. hrefs[j].className = j == (key == 'plugin' ? $plugindefaultkey : 0) ? 'tabon' : '';
  161. }
  162. }
  163. if(key == 'uc') {
  164. parent.main.location = $('header_uc').href + '&a=main&iframe=1';
  165. }
  166. setMenuScroll();
  167. }
  168. function setMenuScroll() {
  169. $('frametable').style.width = document.body.offsetWidth < 1000 ? '1000px' : '100%';
  170. var obj = $('menu_' + menukey);
  171. if(!obj) {
  172. return;
  173. }
  174. var scrollh = document.body.offsetHeight - 160;
  175. obj.style.overflow = 'visible';
  176. obj.style.height = '';
  177. $('scrolllink').style.display = 'none';
  178. if(obj.offsetHeight + 150 > document.body.offsetHeight && scrollh > 0) {
  179. obj.style.overflow = 'hidden';
  180. obj.style.height = scrollh + 'px';
  181. $('scrolllink').style.display = '';
  182. }
  183. }
  184. function resizeHeadermenu() {
  185. var lis = $('topmenu').getElementsByTagName('li');
  186. var maxsize = $('frameuinfo').offsetLeft - 160, widths = 0, moi = -1, mof = '';
  187. if($('menu_mof')) {
  188. $('topmenu').removeChild($('menu_mof'));
  189. }
  190. if($('menu_mof_menu')) {
  191. $('append_parent').removeChild($('menu_mof_menu'));
  192. }
  193. for(var i = 0; i < lis.length; i++) {
  194. widths += lis[i].offsetWidth;
  195. if(widths > maxsize) {
  196. lis[i].style.visibility = 'hidden';
  197. var sobj = lis[i].childNodes[0].childNodes[0];
  198. if(sobj) {
  199. mof += '<a href="'+ sobj.getAttribute('href') + '" onclick="$(\'' + sobj.id + '\').onclick()">&rsaquo; ' + sobj.innerHTML + '</a><br style="clear:both" />';
  200. }
  201. } else {
  202. lis[i].style.visibility = 'visible';
  203. }
  204. }
  205. if(mof) {
  206. for(var i = 0; i < lis.length; i++) {
  207. if(lis[i].style.visibility == 'hidden') {
  208. moi = i;
  209. break;
  210. }
  211. }
  212. mofli = document.createElement('li');
  213. mofli.innerHTML = '<em><a href="javascript:;">&raquo;</a></em>';
  214. mofli.onmouseover = function () { showMenu({'ctrlid':'menu_mof','pos':'43'}); }
  215. mofli.id = 'menu_mof';
  216. $('topmenu').insertBefore(mofli, lis[moi]);
  217. mofmli = document.createElement('li');
  218. mofmli.className = 'popupmenu_popup';
  219. mofmli.style.width = '150px';
  220. mofmli.innerHTML = mof;
  221. mofmli.id = 'menu_mof_menu';
  222. mofmli.style.display = 'none';
  223. $('append_parent').appendChild(mofmli);
  224. }
  225. }
  226. function menuScroll(op, e) {
  227. var obj = $('menu_' + menukey);
  228. var scrollh = document.body.offsetHeight - 160;
  229. if(op == 1) {
  230. obj.scrollTop = obj.scrollTop - scrollh;
  231. } else if(op == 2) {
  232. obj.scrollTop = obj.scrollTop + scrollh;
  233. } else if(op == 3) {
  234. if(!e) e = window.event;
  235. if(e.wheelDelta <= 0 || e.detail > 0) {
  236. obj.scrollTop = obj.scrollTop + 20;
  237. } else {
  238. obj.scrollTop = obj.scrollTop - 20;
  239. }
  240. }
  241. }
  242. function menuNewwin(obj) {
  243. var href = obj.parentNode.href;
  244. if(obj.parentNode.href.indexOf(admincpfilename + '?') != -1) {
  245. href += '&frames=yes';
  246. }
  247. window.open(href);
  248. doane();
  249. }
  250. function initCpMenus(menuContainerid) {
  251. var key = '', lasttabon1 = null, lasttabon2 = null, hrefs = $(menuContainerid).getElementsByTagName('a');
  252. for(var i = 0; i < hrefs.length; i++) {
  253. if(menuContainerid == 'leftmenu' && '$extra'.indexOf(hrefs[i].href.substr(hrefs[i].href.indexOf(admincpfilename + '?') + admincpfilename.length + 1)) != -1) {
  254. if(lasttabon1) {
  255. lasttabon1.className = '';
  256. }
  257. if(hrefs[i].parentNode.parentNode.tagName == 'OL') {
  258. hrefs[i].parentNode.parentNode.style.display = '';
  259. hrefs[i].parentNode.parentNode.parentNode.className = 'lsub desc';
  260. key = hrefs[i].parentNode.parentNode.parentNode.parentNode.parentNode.id.substr(5);
  261. } else {
  262. key = hrefs[i].parentNode.parentNode.id.substr(5);
  263. }
  264. hrefs[i].className = 'tabon';
  265. lasttabon1 = hrefs[i];
  266. }
  267. if(!hrefs[i].getAttribute('ajaxtarget')) hrefs[i].onclick = function() {
  268. if(menuContainerid != 'custommenu') {
  269. var lis = $(menuContainerid).getElementsByTagName('li');
  270. for(var k = 0; k < lis.length; k++) {
  271. if(lis[k].firstChild && lis[k].firstChild.className != 'menulink') {
  272. if(lis[k].firstChild.tagName != 'DIV') {
  273. lis[k].firstChild.className = '';
  274. } else {
  275. var subid = lis[k].firstChild.getAttribute('sid');
  276. if(subid) {
  277. var sublis = $(subid).getElementsByTagName('li');
  278. for(var ki = 0; ki < sublis.length; ki++) {
  279. if(sublis[ki].firstChild && sublis[ki].firstChild.className != 'menulink') {
  280. sublis[ki].firstChild.className = '';
  281. }
  282. }
  283. }
  284. }
  285. }
  286. }
  287. if(this.className == '') this.className = menuContainerid == 'leftmenu' ? 'tabon' : '';
  288. }
  289. if(menuContainerid != 'leftmenu') {
  290. var hk, currentkey;
  291. var leftmenus = $('leftmenu').getElementsByTagName('a');
  292. for(var j = 0; j < leftmenus.length; j++) {
  293. if(leftmenus[j].parentNode.parentNode.tagName == 'OL') {
  294. hk = leftmenus[j].parentNode.parentNode.parentNode.parentNode.parentNode.id.substr(5);
  295. } else {
  296. hk = leftmenus[j].parentNode.parentNode.id.substr(5);
  297. }
  298. if(this.href.indexOf(leftmenus[j].href) != -1) {
  299. if(lasttabon2) {
  300. lasttabon2.className = '';
  301. }
  302. leftmenus[j].className = 'tabon';
  303. if(leftmenus[j].parentNode.parentNode.tagName == 'OL') {
  304. leftmenus[j].parentNode.parentNode.style.display = '';
  305. leftmenus[j].parentNode.parentNode.parentNode.className = 'lsub desc';
  306. }
  307. lasttabon2 = leftmenus[j];
  308. if(hk != 'index') currentkey = hk;
  309. } else {
  310. leftmenus[j].className = '';
  311. }
  312. }
  313. if(currentkey) toggleMenu(currentkey);
  314. hideMenu();
  315. }
  316. }
  317. }
  318. return key;
  319. }
  320. function lsub(id, obj) {
  321. display(id);
  322. obj.className = obj.className != 'lsub' ? 'lsub' : 'lsub desc';
  323. if(obj.className != 'lsub') {
  324. setcookie('cpmenu_' + id, '');
  325. } else {
  326. setcookie('cpmenu_' + id, 1, 31536000);
  327. }
  328. setMenuScroll();
  329. }
  330. var header_key = initCpMenus('leftmenu');
  331. toggleMenu(header_key ? header_key : 'index');
  332. function initCpMap() {
  333. var ul, hrefs, s = '', count = 0;
  334. for(var k in headers) {
  335. if(headers[k] != 'index' && headers[k] != 'uc' && $('header_' + headers[k])) {
  336. s += '<tr><td valign="top"><h4>' + $('header_' + headers[k]).innerHTML + '</h4></td><td valign="top">';
  337. ul = $('menu_' + headers[k]);
  338. if(!ul) {
  339. continue;
  340. }
  341. hrefs = ul.getElementsByTagName('a');
  342. for(var i = 0; i < hrefs.length; i++) {
  343. s += '<a href="' + hrefs[i].href + '" target="' + hrefs[i].target + '" k="' + headers[k] + '">' + hrefs[i].innerHTML + '</a>';
  344. }
  345. s += '</td></tr>';
  346. count++;
  347. }
  348. }
  349. var width = 720;
  350. s = '<div class="cnote" style="width:' + width + 'px"><span class="right"><a href="###" class="flbc" onclick="hideMenu();return false;"></a></span><h3>$lang[admincp_maptitle]</h3></div>' +
  351. '<div class="cmlist" style="width:' + width + 'px;height: 410px"><table id="mapmenu" cellspacing="0" cellpadding="0">' + s +
  352. '</table></div>';
  353. $('cmain').innerHTML = s;
  354. $('cmain').style.width = (width > 1000 ? 1000 : width) + 'px';
  355. }
  356. initCpMap();
  357. initCpMenus('mapmenu');
  358. var cmcache = false;
  359. function showMap() {
  360. showMenu({'ctrlid':'cpmap','evt':'click', 'duration':3, 'pos':'00'});
  361. }
  362. function resetEscAndF5(e) {
  363. e = e ? e : window.event;
  364. actualCode = e.keyCode ? e.keyCode : e.charCode;
  365. if(actualCode == 27) {
  366. if($('cpmap_menu').style.display == 'none') {
  367. showMap();
  368. } else {
  369. hideMenu();
  370. }
  371. }
  372. if(actualCode == 116 && parent.main) {
  373. parent.main.location.reload();
  374. if(document.all) {
  375. e.keyCode = 0;
  376. e.returnValue = false;
  377. } else {
  378. e.cancelBubble = true;
  379. e.preventDefault();
  380. }
  381. }
  382. }
  383. function uc_left_menu(uc_menu_data) {
  384. var leftmenu = $('menu_uc');
  385. leftmenu.innerHTML = '';
  386. var html_str = '';
  387. for(var i=0;i<uc_menu_data.length;i+=2) {
  388. html_str += '<li><a href="'+uc_menu_data[(i+1)]+'" hidefocus="true" onclick="uc_left_switch(this)" target="main"><em onclick="menuNewwin(this)" title="$lang[nav_newwin]"></em>'+uc_menu_data[i]+'</a></li>';
  389. }
  390. leftmenu.innerHTML = html_str;
  391. }
  392. var uc_left_last = null;
  393. function uc_left_switch(obj) {
  394. if(uc_left_last) {
  395. uc_left_last.className = '';
  396. }
  397. obj.className = 'tabon';
  398. uc_left_last = obj;
  399. }
  400. function uc_modify_sid(sid) {
  401. $('header_uc').href = '$uc_api_url/admin.php?m=frame';
  402. }
  403. _attachEvent(document.documentElement, 'keydown', resetEscAndF5);
  404. _attachEvent(window, 'resize', setMenuScroll, document);
  405. _attachEvent(window, 'resize', resizeHeadermenu, document);
  406. if(BROWSER.ie){
  407. $('leftmenu').onmousewheel = function(e) { menuScroll(3, e) };
  408. } else {
  409. $('leftmenu').addEventListener("DOMMouseScroll", function(e) { menuScroll(3, e) }, false);
  410. }
  411. resizeHeadermenu();
  412. </script>
  413. </body>
  414. </html>
  415. EOT;
  416. ?>