index.html 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. <!DOCTYPE html>
  2. <html lang="zh_CN" style="overflow: hidden;">
  3. <head>
  4. <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  5. <!-- Set render engine for 360 browser -->
  6. <meta name="renderer" content="webkit">
  7. <meta charset="utf-8">
  8. <title>ThinkCMF {:lang('ADMIN_CENTER')}</title>
  9. <meta name="description" content="This is page-header (.page-header &gt; h1)">
  10. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  11. <!-- HTML5 shim for IE8 support of HTML5 elements -->
  12. <!--[if lt IE 9]>
  13. <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
  14. <![endif]-->
  15. <link href="__TMPL__/public/assets/themes/{:cmf_get_admin_style()}/bootstrap.min.css" rel="stylesheet">
  16. <link href="__TMPL__/public/assets/simpleboot3/css/simplebootadmin.css" rel="stylesheet">
  17. <link href="__STATIC__/font-awesome/css/font-awesome.min.css?page=index" rel="stylesheet" type="text/css">
  18. <link rel="stylesheet" href="__TMPL__/public/assets/themes/{:cmf_get_admin_style()}/simplebootadminindex.min.css">
  19. <!--[if lt IE 9]>
  20. <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
  21. <![endif]-->
  22. <style>
  23. /*-----------------导航hack--------------------*/
  24. .nav-list > li.open {
  25. position: relative;
  26. }
  27. .nav-list > li.open .back {
  28. display: none;
  29. }
  30. .nav-list > li.open .normal {
  31. display: inline-block !important;
  32. }
  33. .nav-list > li.open a {
  34. padding-left: 7px;
  35. }
  36. .nav-list > li .submenu > li > a {
  37. background: #fff;
  38. }
  39. .nav-list > li .submenu > li a > [class*="fa-"]:first-child {
  40. left: 20px;
  41. }
  42. .nav-list > li ul.submenu ul.submenu > li a > [class*="fa-"]:first-child {
  43. left: 30px;
  44. }
  45. /*----------------导航hack--------------------*/
  46. </style>
  47. <php>
  48. $is_mobile=cmf_is_mobile();
  49. $_static_version='1.0.0';
  50. </php>
  51. <script>
  52. //全局变量
  53. var GV = {
  54. HOST: "{$_SERVER['HTTP_HOST']|default=''}",
  55. ROOT: "__ROOT__/",
  56. WEB_ROOT: "__WEB_ROOT__/",
  57. JS_ROOT: "static/js/",
  58. IS_MOBILE: {$is_mobile? 'true' : 'false'}
  59. };
  60. </script>
  61. <php>$submenus=$menus;</php>
  62. <php>
  63. if (!function_exists('getsubmenu')) {
  64. function getsubmenu($submenus){
  65. </php>
  66. <notempty name="submenus">
  67. <php>foreach($submenus as $menu){</php>
  68. <li>
  69. <php>
  70. $menu_name=lang($menu['lang']);
  71. $menu_name=$menu['lang']==$menu_name?$menu['name']:$menu_name;
  72. </php>
  73. <php>if(empty($menu['items'])){</php>
  74. <a href="javascript:openapp('{$menu.url}','{$menu.id}','{$menu_name}',true);">
  75. <i class="fa fa-{$menu.icon|default='desktop'}"></i>
  76. <span class="menu-text"> {$menu_name} </span>
  77. </a>
  78. <php>}else{</php>
  79. <a href="#" class="dropdown-toggle">
  80. <i class="fa fa-{$menu.icon|default='desktop'} normal"></i>
  81. <span class="menu-text normal"> {$menu_name} </span>
  82. <b class="arrow fa fa-angle-right normal"></b>
  83. <i class="fa fa-reply back"></i>
  84. <span class="menu-text back">返回</span>
  85. </a>
  86. <ul class="submenu">
  87. <php>getsubmenu1($menu['items'])</php>
  88. </ul>
  89. <php>}</php>
  90. </li>
  91. <php>}</php>
  92. </notempty>
  93. <php>
  94. }
  95. }
  96. </php>
  97. <php>
  98. if (!function_exists('getsubmenu1')) {
  99. function getsubmenu1($submenus){
  100. </php>
  101. <php>foreach($submenus as $menu){</php>
  102. <li>
  103. <php>
  104. $menu_name=lang($menu['lang']);
  105. $menu_name=$menu['lang']==$menu_name?$menu['name']:$menu_name;
  106. </php>
  107. <php>if(empty($menu['items'])){</php>
  108. <a href="javascript:openapp('{$menu.url}','{$menu.id}','{$menu_name}',true);">
  109. <i class="fa fa-caret-right"></i>
  110. <span class="menu-text">
  111. {$menu_name}
  112. </span>
  113. </a>
  114. <php>}else{</php>
  115. <a href="#" class="dropdown-toggle">
  116. <i class="fa fa-caret-right"></i>
  117. <span class="menu-text">
  118. {$menu_name}
  119. </span>
  120. <b class="arrow fa fa-angle-right"></b>
  121. </a>
  122. <ul class="submenu">
  123. <php>getsubmenu2($menu['items'])</php>
  124. </ul>
  125. <php>}</php>
  126. </li>
  127. <php>}</php>
  128. <php>}
  129. }
  130. </php>
  131. <php>
  132. if (!function_exists('getsubmenu2')) {
  133. function getsubmenu2($submenus){
  134. </php>
  135. <php>foreach($submenus as $menu){</php>
  136. <li>
  137. <php>
  138. $menu_name=lang($menu['lang']);
  139. $menu_name=$menu['lang']==$menu_name?$menu['name']:$menu_name;
  140. </php>
  141. <a href="javascript:openapp('{$menu.url}','{$menu.id}','{$menu_name}',true);">
  142. &nbsp;<i class="fa fa-angle-double-right"></i>
  143. <span class="menu-text">
  144. {$menu_name}
  145. </span>
  146. </a>
  147. </li>
  148. <php>}</php>
  149. <php>}
  150. }
  151. </php>
  152. <if condition="APP_DEBUG">
  153. <style>
  154. #think_page_trace_open {
  155. left: 0 !important;
  156. right: initial !important;
  157. }
  158. </style>
  159. </if>
  160. </head>
  161. <php>$is_mobile=cmf_is_mobile();</php>
  162. <body style="min-width:{$is_mobile?'auto':'900px'};overflow: hidden;">
  163. <div id="loading"><i class="loadingicon"></i><span>{:lang('LOADING')}</span></div>
  164. <div id="right-tools-wrapper">
  165. <!--<span id="right_tools_clearcache" title="清除缓存" onclick="javascript:openapp('{:url('admin/Setting/clearcache')}','right_tool_clearcache','清除缓存');"><i class="fa fa-trash-o right_tool_icon"></i></span>-->
  166. <!--<span id="refresh-wrapper" title="{:lang('REFRESH_CURRENT_PAGE')}"><i-->
  167. <!--class="fa fa-refresh right_tool_icon"></i></span>-->
  168. </div>
  169. <div class="navbar navbar-default">
  170. <div class="container-fluid">
  171. <div class="navbar-header">
  172. <a href="{:url('admin/Index/index')}" class="navbar-brand" style="min-width: 200px;text-align: center;">ThinkCMF</a>
  173. <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#navbar-main">
  174. <span class="icon-bar"></span>
  175. <span class="icon-bar"></span>
  176. <span class="icon-bar"></span>
  177. </button>
  178. </div>
  179. <div class="navbar-collapse collapse" id="navbar-main">
  180. <div class="pull-left" style="position: relative;">
  181. <a id="task-pre" class="task-changebt"><i class="fa fa-chevron-left"></i></a>
  182. <div id="task-content">
  183. <ul class="nav navbar-nav cmf-component-tab" id="task-content-inner">
  184. <li class="cmf-component-tabitem noclose" app-id="0" app-url="{:url('Main/index')}"
  185. app-name="首页">
  186. <a class="cmf-tabs-item-text">{:lang('HOME')}</a>
  187. </li>
  188. </ul>
  189. <div style="clear:both;"></div>
  190. </div>
  191. <a id="task-next" class="task-changebt"><i class="fa fa-chevron-right"></i></a>
  192. </div>
  193. <ul class="nav navbar-nav navbar-right simplewind-nav">
  194. <li class="light-blue" style="border-left:none;display: none;" id="close-all-tabs-btn">
  195. <a id="close-wrapper" href="javascript:void(0);" title="{:lang('CLOSE_TOP_MENU')}"
  196. style="color:#fff;font-size: 16px">
  197. <i class="fa fa-times right_tool_icon"></i>
  198. </a>
  199. </li>
  200. <li class="light-blue" style="border-left:none;">
  201. <a id="refresh-wrapper" href="javacript:void(0);" title="{:lang('REFRESH_CURRENT_PAGE')}"
  202. style="color:#fff;font-size: 16px">
  203. <i class="fa fa-refresh right_tool_icon"></i>
  204. </a>
  205. </li>
  206. <li class="light-blue dropdown" style="border-left:none;">
  207. <a data-toggle="dropdown" href="#" class="dropdown-toggle">
  208. <if condition="isset($admin['avatar']) && $admin['avatar']">
  209. <img class="nav-user-photo" width="30" height="30"
  210. src="{:cmf_get_user_avatar_url($admin['avatar'])}" alt="{$admin.user_login}">
  211. <else/>
  212. <img class="nav-user-photo" width="30" height="30"
  213. src="__TMPL__/public/assets/images/logo-18.png" alt="{$admin.user_login|default=''}">
  214. </if>
  215. <span class="user-info">
  216. {:lang('WELCOME_USER',array('user_nickname' => empty($admin['user_nickname'] )? $admin['user_login'] : $admin['user_nickname']))}
  217. </span>
  218. <i class="fa fa-caret-down"></i>
  219. </a>
  220. <ul class="user-menu pull-right dropdown-menu dropdown-yellow dropdown-caret dropdown-closer">
  221. <if condition="cmf_auth_check(cmf_get_current_admin_id(),'admin/Setting/site')">
  222. <li>
  223. <a href="javascript:openapp('{:url('Setting/site')}','index_site','{:lang('ADMIN_SETTING_SITE')}');"><i
  224. class="fa fa-cog fa-fw"></i> {:lang('ADMIN_SETTING_SITE')}</a></li>
  225. </if>
  226. <if condition="cmf_auth_check(cmf_get_current_admin_id(),'admin/user/userinfo')">
  227. <li>
  228. <a href="javascript:openapp('{:url('User/userinfo')}','index_userinfo','{:lang('ADMIN_USER_USERINFO')}');"><i
  229. class="fa fa-user fa-fw"></i> {:lang('ADMIN_USER_USERINFO')}</a></li>
  230. </if>
  231. <if condition="cmf_auth_check(cmf_get_current_admin_id(),'admin/Setting/password')">
  232. <li>
  233. <a href="javascript:openapp('{:url('Setting/password')}','index_password','{:lang('ADMIN_SETTING_PASSWORD')}');"><i
  234. class="fa fa-lock fa-fw"></i> {:lang('ADMIN_SETTING_PASSWORD')}</a></li>
  235. </if>
  236. <li><a href="{:url('Public/logout')}"><i class="fa fa-sign-out fa-fw"></i> {:lang('LOGOUT')}</a>
  237. </li>
  238. </ul>
  239. </li>
  240. </ul>
  241. </div>
  242. </div>
  243. </div>
  244. <div class="main-container container-fluid">
  245. <div class="sidebar" id="sidebar">
  246. <div class="sidebar-shortcuts" id="sidebar-shortcuts">
  247. <a class="btn btn-sm btn-warning" href="__ROOT__/"
  248. title="{:lang('WEBSITE_HOME_PAGE')}"
  249. target="_blank"
  250. data-toggle="tooltip">
  251. <i class="fa fa-home"></i>
  252. </a>
  253. <!--
  254. <if condition="cmf_auth_check(cmf_get_current_admin_id(),'portal/AdminCategory/index')">
  255. <a class="btn btn-sm btn-success" href="javascript:openapp('{:url('portal/AdminCategory/index')}','index_termlist','文章分类管理');" title="文章分类管理">
  256. <i class="fa fa-th"></i>
  257. </a>
  258. </if>
  259. <if condition="cmf_auth_check(cmf_get_current_admin_id(),'portal/AdminArticle/index')">
  260. <a class="btn btn-sm btn-info" href="javascript:openapp('{:url('portal/AdminArticle/index')}','index_postlist','文章管理');" title="文章管理">
  261. <i class="fa fa-pencil"></i>
  262. </a>
  263. </if>
  264. -->
  265. <if condition="cmf_auth_check(cmf_get_current_admin_id(),'user/AdminAsset/index')">
  266. <a class="btn btn-sm btn-info"
  267. href="javascript:openapp('{:url('user/AdminAsset/index')}','userAdminAssetindex','{:lang('USER_ADMINASSET_INDEX')}',true);"
  268. title="{:lang('USER_ADMINASSET_INDEX')}"
  269. data-toggle="tooltip">
  270. <i class="fa fa-file"></i>
  271. </a>
  272. </if>
  273. <if condition="cmf_auth_check(cmf_get_current_admin_id(),'admin/Setting/clearcache')">
  274. <a class="btn btn-sm btn-danger"
  275. href="javascript:openapp('{:url('admin/Setting/clearcache')}','index_clearcache','{:lang('ADMIN_SETTING_CLEARCACHE')}',true);"
  276. title="{:lang('ADMIN_SETTING_CLEARCACHE')}"
  277. data-toggle="tooltip">
  278. <i class="fa fa-trash-o"></i>
  279. </a>
  280. </if>
  281. <if condition="cmf_auth_check(cmf_get_current_admin_id(),'admin/RecycleBin/index')">
  282. <a class="btn btn-sm btn-danger"
  283. href="javascript:openapp('{:url('admin/RecycleBin/index')}','index_recycle','{:lang('ADMIN_RECYCLEBIN_INDEX')}',true);"
  284. title="{:lang('ADMIN_RECYCLEBIN_INDEX')}"
  285. data-toggle="tooltip">
  286. <i class="fa fa-recycle"></i>
  287. </a>
  288. </if>
  289. <php>
  290. $dev_menu_display='none';
  291. if(APP_DEBUG){
  292. $dev_menu_display='inline-block';
  293. }
  294. </php>
  295. <a class="btn btn-sm btn-default"
  296. id="dev-menu-button"
  297. style="display: {$dev_menu_display};"
  298. href="javascript:openapp('{:url('admin/Dev/index')}','index_dev','开发面板',true);"
  299. title="开发面板"
  300. data-toggle="tooltip">
  301. <i class="fa fa-terminal"></i>
  302. </a>
  303. </div>
  304. <div id="nav-wrapper">
  305. <ul class="nav nav-list">
  306. {:getsubmenu($submenus)}
  307. </ul>
  308. </div>
  309. </div>
  310. <div class="main-content">
  311. <div class="page-content" id="content">
  312. <iframe src="{:url('Main/index')}" style="width:100%;height: 100%;" frameborder="0" id="appiframe-0"
  313. class="appiframe"></iframe>
  314. </div>
  315. </div>
  316. </div>
  317. <script src="__TMPL__/public/assets/js/jquery-1.10.2.min.js"></script>
  318. <script src="__STATIC__/js/wind.js"></script>
  319. <script src="__TMPL__/public/assets/js/bootstrap.min.js"></script>
  320. <script src="__STATIC__/js/admin.js?v={$_static_version}"></script>
  321. <script src="__TMPL__/public/assets/simpleboot3/js/adminindex.js?v={$_static_version}"></script>
  322. <script>
  323. Wind.css('artDialog');
  324. $(function () {
  325. $("[data-toggle='tooltip']").tooltip({container: 'body'});
  326. $("li.dropdown").hover(function () {
  327. $(this).addClass("open");
  328. }, function () {
  329. $(this).removeClass("open");
  330. });
  331. var menus = {$menus_js_var};
  332. //读取url参数。尝试执行菜单功能。
  333. if (typeof (menus) != "undefined") {
  334. var tw = window.top;
  335. var twa = tw.location.href.split("#");
  336. var url = twa[1];
  337. var urlTmp = url;
  338. if (url != null) {
  339. //去掉/ 去掉_ 全部小写。
  340. urlTmp = urlTmp.replace(/[\\/|_|]/g, "");
  341. urlTmp = urlTmp.replace(".html", "");
  342. urlTmp = urlTmp.toLowerCase();
  343. var menu = menus[urlTmp];
  344. if (menu) {
  345. openapp(url, menu.id + menu.app, menu.name, true);
  346. }
  347. }
  348. }
  349. });
  350. var ismenumin = $("#sidebar").hasClass("menu-min");
  351. $(".nav-list").on("click", function (event) {
  352. var closest_a = $(event.target).closest("a");
  353. if (!closest_a || closest_a.length == 0) {
  354. return
  355. }
  356. if (!closest_a.hasClass("dropdown-toggle")) {
  357. if (ismenumin && "click" == "tap" && closest_a.get(0).parentNode.parentNode == this) {
  358. var closest_a_menu_text = closest_a.find(".menu-text").get(0);
  359. if (event.target != closest_a_menu_text && !$.contains(closest_a_menu_text, event.target)) {
  360. return false
  361. }
  362. }
  363. return
  364. }
  365. var closest_a_next = closest_a.next().get(0);
  366. if (!$(closest_a_next).is(":visible")) {
  367. var closest_ul = $(closest_a_next.parentNode).closest("ul");
  368. if (ismenumin && closest_ul.hasClass("nav-list")) {
  369. return
  370. }
  371. closest_ul.find("> .open > .submenu").each(function () {
  372. if (this != closest_a_next && !$(this.parentNode).hasClass("active")) {
  373. $(this).slideUp(150).parent().removeClass("open")
  374. }
  375. });
  376. }
  377. if (ismenumin && $(closest_a_next.parentNode.parentNode).hasClass("nav-list")) {
  378. return false;
  379. }
  380. $(closest_a_next).slideToggle(150).parent().toggleClass("open");
  381. return false;
  382. });
  383. var consoleOpened = false;
  384. function isConsoleOpen() {
  385. if (consoleOpened) {
  386. return consoleOpened;
  387. }
  388. var startTime = new Date().getTime();
  389. debugger;
  390. var endTime = new Date().getTime();
  391. return endTime - startTime > 100;
  392. }
  393. var openDevTipsTimes = 0;
  394. var openDevTipsTimer = null;
  395. function openDevTips() {
  396. consoleOpened = true;
  397. if (openDevTipsTimes < 20) {
  398. console.log('打开开发者面板,请执行:')
  399. console.log("$('#dev-menu-button').show();openapp('/admin/dev/index.html','index_dev','开发面板',true);");
  400. } else {
  401. clearInterval(openDevTipsTimer);
  402. }
  403. openDevTipsTimes++;
  404. }
  405. openDevTipsTimer = setInterval(openDevTips, 5000);
  406. openDevTips();
  407. </script>
  408. </body>
  409. </html>