1、根目录下后台入口文件admin.php

$_founder = $CFG['founderid'] == $_userid ? $_userid : 0;  //  $CFG['founderid'] 是config.php里指定的网站创始人账户id配置项,$_founder 存储了创始人id,如果不是创始人则$_founder为0;

(1) inc.php文件里可以通过if($_founder) 判断是否是创始人

(2) 后台模板  tpl.php 里可以通过 <?php if($_founder){ ?> ......  <?php }?>

if($module == 'destoon') {    //当无mid参数时 module 默认是 destoon 走这个分支

(include DT_ROOT.'/admin/'.$file.'.inc.php') or msg();

} else {    //有mid参数时  走这个分支

include DT_ROOT.'/module/'.$module.'/common.inc.php';

(include MD_ROOT.'/admin/'.$file.'.inc.php') or msg();

}

//当无moduleid参数时 module 默认是 destoon 走这个分支  例如 adminsiyi.php?action=start 其实加载的是 /admin/index.inc.php

// admin.php?mid=5&file=category    加载的是 /admin/category.inc.php

 

// adminsiyi.php?moduleid=5     加载的是/module/sell/common.inc.php  和  /module/sell/admin/index.inc.php  对应模板也在这个目录

 

2、后台左侧菜单加载文件/admin/left.tpl.php

里边可以通过if(!$_founder) 分支加载普通管理员的菜单

3、admin / category.inc.php 隐藏顶部部分菜单  ,更新地址,更新统计的作用

$menus = array (

array('添加分类', '?file='.$file.'&action=add&mid='.$mid.'&parentid='.$parentid),

array('管理分类', '?file='.$file.'&mid='.$mid),

array('分类复制', '?file='.$file.'&action=copy&mid='.$mid),

array('批量索引', '?file='.$file.'&action=letters&mid='.$mid),

array('更新地址', '?file='.$file.'&action=url&mid='.$mid),

array('更新统计', '?file='.$file.'&action=count&mid='.$mid),

array('更新缓存', '?file='.$file.'&action=cache&mid='.$mid),

);

改为

if($_founder){

$menus = array (

array('添加分类', '?file='.$file.'&action=add&mid='.$mid.'&parentid='.$parentid),

array('管理分类', '?file='.$file.'&mid='.$mid),

array('分类复制', '?file='.$file.'&action=copy&mid='.$mid),

array('批量索引', '?file='.$file.'&action=letters&mid='.$mid),

array('更新地址', '?file='.$file.'&action=url&mid='.$mid),

array('更新统计', '?file='.$file.'&action=count&mid='.$mid),

array('更新缓存', '?file='.$file.'&action=cache&mid='.$mid),

);

}

else{

$menus = array (

array('添加分类', '?file='.$file.'&action=add&mid='.$mid.'&parentid='.$parentid),

array('管理分类', '?file='.$file.'&mid='.$mid),

array('更新统计', '?file='.$file.'&action=count&mid='.$mid),

array('更新缓存', '?file='.$file.'&action=cache&mid='.$mid),

);

}

更新地址 category.inc.php 页面

$CATEGORY = cache_read('category-'.$mid.'.php');

。。。。。。

case 'url':

foreach($CATEGORY as $c) {

update_category($c);

}

$do->cache();

dmsg('更新成功', "?mid=$mid&file=$file");

break;

。。。。。。。

update_category 在 admin/global.func.php 中定义

 

function update_category($CAT) {

global $db, $DT;

$linkurl = listurl($CAT);

if($DT['index']) $linkurl = str_replace($DT['index'].'.'.$DT['file_ext'], '', $linkurl);

$db->query("UPDATE {$db->pre}category SET linkurl='$linkurl' WHERE catid=".$CAT['catid']);

}

listurl  函数在根目录下的global.func.php定义

function listurl($CAT, $page = 0) {

global $DT, $MOD, $L;

include DT_ROOT.'/api/url.inc.php';

$catid = $CAT['catid'];

$file_ext = $DT['file_ext'];

$index = $DT['index'];

$catdir = $CAT['catdir'];

$catname = file_vname($CAT['catname']);

$prefix = $MOD['htm_list_prefix'];

$urlid = $MOD['list_html'] ? $MOD['htm_list_urlid'] : $MOD['php_list_urlid'];

$ext = $MOD['list_html'] ? 'htm' : 'php';

isset($urls[$ext]['list'][$urlid]) or $urlid = 0;

$url = $urls[$ext]['list'][$urlid];

$url = $page ? $url['page'] : $url['index'];

eval("\$listurl = \"$url\";");

if(substr($listurl, 0, 1) == '/') $listurl = substr($listurl, 1);

return $listurl;

}


当修改链接模式是 需要生成一下分类链接

 

4、非创始人后台界面,左侧菜单名称用模型名称不合适时

 

左侧菜单  admin/tempalte/left.tpl.php   ,找xx管理 改为  xx管理,现货铜管理 改为 现货管理。

 

我去,突然发现我的面板名称可以在权限管理修改   系统设置-》管理员管理-》普通管理员 权限面板 

还可以增加一项  

 

以下方法用不到了 

<dl>

<!--<dt onclick="s(this)" onmouseover="this.className='dt_on';" onmouseout="this.className='';">我的面板</dt>-->

<!--<dd onclick="c(this);"><a href="?action=main">系统首页</a></dd>-->

<!--<dd onclick="c(this);"><a href="?file=mymenu">定义面板</a></dd>-->

<?php

 function repalcecaidan($str){

 $str=str_replace("找","",$str);//找产品管理 -》 产品管理

 $str=str_replace("通","",$str);

 return $str;

}

foreach($mymenu as $menu) {

?>

<dd onclick="c(this);"><a href="<?php echo substr($menu['url'], 0, 1) == '?' ? $menu['url'] : DT_PATH.'api/redirect.php?url='.$menu['url'].'" target="_blank';?>"><i class="icon-double-angle-right"></i> <?php echo set_style(repalcecaidan($menu['title']), $menu['style']);?></a></dd>

<?php

}

?>

</dl>

5、后台左侧菜单和顶部标签定义位置: 红色部分左侧菜单  ,蓝色部分顶部标签菜单 

 

(1)红色部分左侧菜单 在对应模块的admin/menu.inc.php文件  (如供应在module/sell/admin/menu.inc.php)

(2)蓝色部分顶部标签菜单  在 对应页面中定义  例如 供应管理首页(列表页面) 在module/sell/admin/index.inc.php 中

 

如 隐藏 移动分类

if($_founder){

$menus = array (

array('添加'.$MOD['name'], '?moduleid='.$moduleid.'&action=add'),

array($MOD['name'].'列表', '?moduleid='.$moduleid),

array('审核'.$MOD['name'], '?moduleid='.$moduleid.'&action=check'),

array('过期'.$MOD['name'], '?moduleid='.$moduleid.'&action=expire'),

array('未通过'.$MOD['name'], '?moduleid='.$moduleid.'&action=reject'),

array('回收站', '?moduleid='.$moduleid.'&action=recycle'),

array('移动分类', '?moduleid='.$moduleid.'&action=move'),

);

}else{

$menus = array (

array('添加'.$MOD['name'], '?moduleid='.$moduleid.'&action=add'),

array($MOD['name'].'列表', '?moduleid='.$moduleid),

array('审核'.$MOD['name'], '?moduleid='.$moduleid.'&action=check'),

array('过期'.$MOD['name'], '?moduleid='.$moduleid.'&action=expire'),

array('未通过'.$MOD['name'], '?moduleid='.$moduleid.'&action=reject'),

array('回收站', '?moduleid='.$moduleid.'&action=recycle'),

);

}


6、修改后台列表页面搜索项目和排序项目,精简关键词选项和排序结果选项

对应目录下  index.inc.php   (如供应在module/sell/admin/index.inc.php)

if($_founder){

$sfields = array('模糊', '标题', '产品品牌', '计量单位', '简介', '公司名', '联系人', '联系电话', '联系地址', '电子邮件', '联系MSN', '联系QQ', '会员名', '编辑', 'IP', '参数名1', '参数名2', '参数名3', '参数值1', '参数值2', '参数值3', '文件路径', '内容模板');

$dfields = array('keyword', 'title', 'brand', 'unit', 'introduce', 'company', 'truename', 'telephone', 'address', 'email', 'msn', 'qq','username', 'editor', 'ip', 'n1', 'n2', 'n3', 'v1', 'v2', 'v3', 'filepath', 'template');

$sorder  = array('结果排序方式', '更新时间降序', '更新时间升序', '添加时间降序', '添加时间升序', VIP.'级别降序', VIP.'级别升序', '产品单价降序', '产品单价升序', '供货总量降序', '供货总量升序', '最小起订降序', '最小起订升序', '浏览次数降序', '浏览次数升序', '信息ID降序', '信息ID升序');

$dorder  = array($MOD['order'], 'edittime DESC', 'edittime ASC', 'addtime DESC', 'addtime ASC', 'vip DESC', 'vip ASC', 'price DESC', 'price ASC', 'amount DESC', 'amount ASC', 'minamount DESC', 'minamount ASC', 'hits DESC', 'hits ASC', 'itemid DESC', 'itemid ASC');

}else{

$sfields = array('模糊', '标题', '公司名');

$dfields = array('keyword', 'title','company');

$sorder  = array('结果排序方式', '更新时间降序', '更新时间升序', '添加时间降序', '添加时间升序', VIP.'级别降序', VIP.'级别升序', '产品单价降序', '产品单价升序', '浏览次数降序', '浏览次数升序', '信息ID降序', '信息ID升序');

$dorder  = array($MOD['order'], 'edittime DESC', 'edittime ASC', 'addtime DESC', 'addtime ASC', 'vip DESC', 'vip ASC', 'price DESC', 'price ASC','hits DESC', 'hits ASC', 'itemid DESC', 'itemid ASC');

}

 

7、非创始人管理员点击回收站回复, 这些按钮时提示无权限的解决方法。

admin入口文件 admin.php 

if($file != 'login') {  //不是登陆页面

if($_groupid != 1 || $_admin < 1 || !$_destoon_admin) msg('', '?file=login&forward='.urlencode($DT_URL));   //非后台管理员, $_admin 管理员类型 1-超级管理员,2-普通管理员。

if(!admin_check()) {

admin_log(1);

$db->query("DELETE FROM {$db->pre}admin WHERE userid=$_userid AND url='?".$DT_QST."'");

msg('警告!您无权进行此操作 Error(00)');

}

}

admin_check()函数   admin/global.func.php 文件

function admin_check() {

global $CFG, $db, $_admin, $_userid, $moduleid, $file, $action, $catid, $_catids, $_childs;

if(in_array($file, array('logout', 'cloud', 'mymenu', 'search', 'ip', 'mobile'))) return true;//All user

if($moduleid == 1 && $file == 'index') return true;   //   在根目录common.inc.php  $moduleid = isset($moduleid) ? intval($moduleid) : 1;  没有$moduleid参数时  $moduleid=1

if($CFG['founderid'] && $CFG['founderid'] == $_userid) return true;//Founder  创始人有全部权限

if($_admin == 2) {      // $_admin 管理员类型 1-超级管理员,2-普通管理员。

$R = cache_read('right-'.$_userid.'.php');

if(!$R) return false;

if(!isset($R[$moduleid])) return false;

if(!$R[$moduleid]) return true;//Module admin

if(!isset($R[$moduleid][$file])) return false;

if(!$R[$moduleid][$file]) return true;

if($action && $R[$moduleid][$file]['action'] && !in_array($action, $R[$moduleid][$file]['action'])) return false;

if(!$R[$moduleid][$file]['catid']) return true;

$_catids = implode(',', $R[$moduleid][$file]['catid']);

if($catid) {

if(in_array($catid, $R[$moduleid][$file]['catid'])) return true;

//Childs

$result = $db->query("SELECT catid,child,arrchildid FROM {$db->pre}category WHERE moduleid=$moduleid AND catid IN ($_catids)");

while($r = $db->fetch_array($result)) {

$_childs .= ','.($r['child'] ? $r['arrchildid'] : $r['catid']);

}

if(strpos($_childs.',', ','.$catid.',') !== false) return true;

return false;

}

} else if($_admin == 1) {

if(in_array($file, array('admin', 'setting', 'module', 'area', 'database', 'template', 'skin', 'log', 'update', 'group', 'fields', 'loginlog'))) return false;//Founder || Common Admin Only

}

return true;

}

 

普通管理员  action 权限 add|edit|delete|check|expire|reject|recycle|move|level  没有 refresh 

 加入 refresh即可有刷新权限  add|edit|delete|check|expire|reject|recycle|move|level|refresh|update

系统设置-》管理员管理-》普通管理员 权限面板 

其中 action 就是相关操作,例如 下图所示action参数 

 

8、图库管理隐藏级别和标题颜色以后 标题图片无法上传的解决方法,点上传按钮无反应

 

不能直接隐藏,在外层包含div 然后style=dispaly:none

<div <?php if(!$_founder){ ?>style="display:none"<?php } ?>> <?php echo level_select('post[level]', '级别', $level, 'id="level"');?>

<?php echo dstyle('post[style]', $style);?> </div>


9、

 

 

 

destoon如何隐藏后台菜单 如 隐藏行情里的 行情审核 和 内容更新菜单

在 $menu  在对应模型/admin/menu.inc.php  如module/quote/admin/menu.inc.php 注释相应项目即可。

$menu = array(
 array("添加".$name, "?moduleid=$moduleid&action=add"),
 array($name."列表", "?moduleid=$moduleid"),
 //array("审核".$name, "?moduleid=$moduleid&action=check"),
 array("分类管理", "?file=category&mid=$moduleid"),
 array("产品报价", "?moduleid=$moduleid&file=product"),
 //array("更新数据", "?moduleid=$moduleid&file=html"),
 array("模块设置", "?moduleid=$moduleid&file=setting"),
);

实现超级管理员与普通管理员左侧菜单不一样

if($_username=="超级管理员用户名"){
  $menu = array(
   array("添加".$name, "?moduleid=$moduleid&action=add"),
   array($name."列表", "?moduleid=$moduleid"),
   array("审核".$name, "?moduleid=$moduleid&action=check"),
   array("分类管理", "?file=category&mid=$moduleid"),
   array("产品报价", "?moduleid=$moduleid&file=product"),
   array("更新数据", "?moduleid=$moduleid&file=html"),
   array("模块设置", "?moduleid=$moduleid&file=setting"),
  );
}else
{
   $menu = array(
   array("添加".$name, "?moduleid=$moduleid&action=add"),
   array($name."列表", "?moduleid=$moduleid"),
   array("分类管理", "?file=category&mid=$moduleid"),
   array("线材行情", "?moduleid=$moduleid&file=product"),
  );
}

destoon后台权限-不给客户创始人权限并屏蔽部分功能的更多相关文章

  1. 后台设计的基石:用户权限管理(RBAC)及工作流(workflow)模型

    后台产品同学在设计后台时,会发现一般后台的各个功能模块总结起来有两大类型:功能类.流程类.在设计功能或流程前都需要预判不同的使用角色对应不同权限,设计流程前则还得思考最基本的工作流原理. 用户权限是设 ...

  2. springboot mybatis 后台框架平台 集成代码生成器 shiro 权限

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

  3. Electron-Vue3-Vadmin后台系统|vite2+electron桌面端权限管理系统

    基于vite2.x+electron12桌面端后台管理系统Vite2ElectronVAdmin. 继上一次分享vite2整合electron搭建后台框架,这次带来的是最新开发的跨桌面中后台权限管理系 ...

  4. [Django]用户权限学习系列之User权限基本操作指令

    针对Django 后台自带的用户管理系统,虽说感觉还可以,但是为了方便用户一些操作,特别设计自定义的用户权限管理系统. 在制作权限页面前,首先需要了解权限和用户配置权限的指令,上章讲到权限的添加,删除 ...

  5. 网卡配置文件详解 用户管理与文件权限篇 文件与目录权限 软连接 tar解压命令 killall命令 linux防火墙 dns解析设置 计划任务crond服务 软件包安装 阿里云 yum源 安装

    Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ...

  6. 巨蟒django之权限8:排序&&菜单展开权限归属

    1.权限控制的流程+表结构 内容回顾: wsgi:socket进行收发消息 中间件:(超级重点的面试题)在全局范围内控制django的输入和输出的一个钩子,处理输入和输出说白了就是处理请求和响应req ...

  7. 巨蟒django之权限6: 权限控制表设计&&登录权限

    1.权限控制表设计 内容 . 什么是权限? . 为什么要有权限? 不同用户拥有不同的功能 . 在web开发中,什么是权限? url 代表 权限 . 开发一个权限的组件,为什么要开发组件? . 表结构的 ...

  8. Android开发工具资料Android Manifest 权限描述大全 随时随地查询权限描述。

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985转载请说明出处. 在文章最后面赠送了markdown格式的此文章内容下载.(不要再问问什么用markdo ...

  9. destoon : 后台无法登录问题解决

    经常有朋友在destoon搬家的时候 , 数据还原之后 , 会出现后台无法登录的情况 . 具体表现为后台帐号密码输入后点击确定 , 页面刷新 .并没有跳转到相应后台页面 . 但是如果帐号密码输入错误 ...

随机推荐

  1. linux批量替换指定文件夹中所有文件的指定内容

    命令:sed -i "s#https#http#g" `grep http -rl VEROMODA` 功能:用来替换当前目录VEROMODA文件夹及子文件夹中所有文件中的http ...

  2. Ubuntu常用指令集

    Ubuntu Linux 操作系统常用命令详细介绍 ( 1)Udo apt-get install 软件名 安装软件命令 sudo nautilus 打开文件(有 root 权限)su root 切换 ...

  3. 朱晔的互联网架构实践心得S2E7:漫谈平台架构的工作(基础架构、基础服务、基础平台、基础中间件等等)

    前言 程序开发毕竟还不是搬砖这种无脑体力劳动,需要事先有标准,有架构,有设计,绝对不是新公司今天创立,明天就可以开始编码的.其实很多公司在起步的时候没有财力和资源建设独立的基础架构或平台架构部门,甚至 ...

  4. 优化vue-cli构建的文件体积

    vue-router 懒加载优化 先安装 babel 动态引入插件 npm install --save-dev babel-plugin-syntax-dynamic-import 修改router ...

  5. 仙人掌(cactus)

    题目描述LYK 在冲刺清华集训(THUSC)!于是它开始研究仙人掌,它想来和你一起分享它最近研究的结果.如果在一个无向连通图中任意一条边至多属于一个简单环(简单环的定义为每个点至多经过一次),且不存 ...

  6. .net创建activex实现摄像头拍照

    using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices ...

  7. linux touch和vi建立的文件是什么文件类型的

    都是acsii类型的文本文档,但是也可以建立其他格式的,比如vi newFile.c(c是c语言动态链接库格式)

  8. for循环操作DOM缓存节点长度?

    不管是在网上,还是在翻看书籍的时候,都能看到在使用for循环操作DOM节点时要做数节点长度的缓存,以确保性能最优化! 这二种写法格式大致是下面这样的 /*节点集合*/ var domarr=docum ...

  9. JS计算24节气的方法

    function getjq(yyyy,mm,dd){ mm = mm-1; var sTermInfo = new Array(0,21208,42467,63836,85337,107014,12 ...

  10. Swift 扩展(Extension)总结

    概要 扩展是给已经存在的类(class),结构体(structure),枚举类型(enumeration)和协议(protocol)增加新的功能.类似Objective-C中的Category,不同的 ...