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コードには、ドキュメントが保存されたことを示す「Completed」という独自の吹き出しが表示されることです。その結果、吹き出しがまったく表示されなくなります。

Umbraco自身のspeehバブルの呼び出しによって上書きされない吹き出しを表示する方法を誰かが提案できますか?

4

2 に答える 2

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 に答える
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 に答える