0

作为参考,我在Our Umbraco论坛上问过同样的问题,但到目前为止没有收到任何回复。

我们在 Document->AfterSave 事件中运行了代码,该事件显示了一个气泡:

((BasePage)HttpContext.Current.Handler).speechBubble(BasePage.speechBubbleIcon.error, "Error", "Problem");

我们也尝试

BasePage.Current.ClientTools.ShowSpeechBubble(BasePage.speechBubbleIcon.error, "Error", "Problem");

以防我们调用错误的 API 函数来显示语音气泡。

我们在验证文档的属性并且该属性无效后执行此操作,以便通知用户出现问题。

问题是,即使执行了上述代码,在我们的 AfterSave 代码之后运行的 Umbraco 代码也会显示它自己的对话气泡,即显示“已完成”以指示文档已保存的对话气泡。这导致我们的对话气泡根本不会显示。

有人可以建议我们如何显示一个不会被 Umbraco 自己的语音气泡调用覆盖的语音气泡吗?

4

2 回答 2

1

您可以通过在页面生命周期的后期注入您的气泡来解决此问题,如下所示

var page = HttpContext.Current.Handler as Page;
if (page != null)
{
    page.PreRenderComplete += AddAlertBubble;
}

而 AddAlertBubble 函数就是你已经拥有的:

void AddAlertBox(object sender, EventArgs e)
{
    umbraco.BasePages.BasePage.Current.ClientTools.ShowSpeechBubble(umbraco.BasePages.BasePage.speechBubbleIcon.error, "Error", "Problem");
}
于 2014-05-28T03:00:10.157 回答
1

当您的检查失败时,您可以通过取消文档发布来停止对话气泡。

     void Document_BeforePublish(Document sender, umbraco.cms.businesslogic.PublishEventArgs e)
     {    
         if(!passed){
             e.Cancel = true;
             ((BasePage)HttpContext.Current.Handler).speechBubble(BasePage.speechBubbleIcon.error, "Error", "Problem");
         }
     } 
于 2013-01-10T12:47:39.030 回答