删除'复制此页面和子页面' Silverstripe的功能

时间:2016-08-29 04:56:23

标签: javascript php silverstripe

在Silverstripe中,如果右键单击Sitetree中的某个页面,您就可以复制单个页面或页面及其所有子项。

enter image description here

我们发现,用户偶尔会复制包含大量儿童的网页,并希望通过删除“此页面和子页面”来防止这种情况发生。选项或仅限制为管理员用户。

如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

查看SilverStripe 3.4中的code in cms/javascript/CMSMain.Tree.js,看起来目前没有办法将其关闭。

我们有一个选择是在CMS中添加一些CSS来隐藏每个人的菜单项:

<强> mysite的/ CSS / cms.css

#vakata-contextmenu a[rel="duplicate"] + ul > li:last-child {
    display: none;
}

要启用cms.css文件,我们会在config.yml

中添加以下行

<强> mysite的/ _config / config.yml

LeftAndMain:
  extra_requirements_css:
    - 'mysite/css/cms.css'

答案 1 :(得分:0)

将以下代码添加到page.php可防止非管理员用户复制页面和子页面。菜单项仍然可见,这是次优的,但作为快速解决方案已经足够了。

public function duplicateWithChildren() {
    if(!Permission::check('ADMIN')) {
        throw new ValidationException("You must be logged in as an Admin to duplicate a page and subpages");
    }
    return parent::duplicateWithChildren();
}