2012-11-16 39 views
0

是否有人能够告诉我如何编写一个可以拦截silverstripe上的发布命令的函数?我希望实现一个系统,当换页即将发生时,会发送到另一个系统的HTTP调用,这将通知管理员页面已更改。我希望系统等待几分钟,然后让管理员有时间在未经授权的情况下删除更改。银条功能拦截

+0

我认为您正在寻找类似的东西? http://www.silverstripe.org/cms-workflow-module/ –

回答

1

SiteTree类中有各种事件挂钩可用于此目的。

class MySiteTreeExtension extends DataExtension { 
    function onAfterPublish() { 
     $this->notifyMyAdmin(sprintf('Page "%s" has been published', $this->owner->Title)); 
    } 
} 

具有以下除了你mysite/_config.php应用扩展:

Object::add_extension('SiteTree', 'MySiteTreeExtension'); 

你显然需要实现notifyMyAdmin()方法来作出这样的HTTP调用。 通常,我建议不要在用户操作上执行同步HTTP调用,尽管如此,因为它们使您的系统依赖于另一个的可用性。考虑使用诸如messagequeue模块之类的东西。在“等待几分钟出版”方面:不可能通过扩展系统“否决”出版物。 为了达到这个目的,你可以在你的子类中覆盖SiteTree->doPublish(),但它对于用户来说仍然是一个奇怪的UI模式。工作流模块加上“请求发布”加上一些cron作业来自动批准它们会更直接。

+0

Ingo, 感谢您的支持。我不确定如何执行您建议的“请求发布”。 onAfterPublish很有用,谢谢。 –