【发布时间】:2017-01-05 00:57:19
【问题描述】:
在 Silverstripe 中,如果您右键单击 Sitetree 中的一个页面,您可以复制单个页面或一个页面及其所有子页面。
我们发现用户偶尔会重复包含大量子页面的页面,因此希望通过删除“此页面和子页面”选项或将其仅限于管理员用户来防止这种情况发生。
如何做到这一点?
【问题讨论】:
标签: javascript php silverstripe
在 Silverstripe 中,如果您右键单击 Sitetree 中的一个页面,您可以复制单个页面或一个页面及其所有子页面。
我们发现用户偶尔会重复包含大量子页面的页面,因此希望通过删除“此页面和子页面”选项或将其仅限于管理员用户来防止这种情况发生。
如何做到这一点?
【问题讨论】:
标签: javascript php silverstripe
将以下代码添加到 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();
}
【讨论】:
查看 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'
【讨论】:
SiteTree::canAddChildren() 将无法完全创建子页面。