2012-11-16 79 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很有用,謝謝。 –