アップデート:
保存ボタンをクリックした後、プログラムで変更を保存する前に、BackOffice のコンテンツ タブで変更されたノードのプロパティ値を取得したいと考えています。
ノードには多くのプロパティを含めることができます。保存ボタンがクリックされたら、最初にノードのプロパティの新しく変更された値を取得したいと思います。Umbraco には、サーバー側でそれらを取得するための API が必要だと思います。
どんなアイデアでも大歓迎です。
アップデート:
保存ボタンをクリックした後、プログラムで変更を保存する前に、BackOffice のコンテンツ タブで変更されたノードのプロパティ値を取得したいと考えています。
ノードには多くのプロパティを含めることができます。保存ボタンがクリックされたら、最初にノードのプロパティの新しく変更された値を取得したいと思います。Umbraco には、サーバー側でそれらを取得するための API が必要だと思います。
どんなアイデアでも大歓迎です。
IApplicationEventHandlerクラスのDocument.BeforeSaveメソッドに接続します。そのように(bodyTextを「apple」から「orange」に変更すると仮定):
using umbraco.cms.businesslogic.web;
using Umbraco.Core;
using Umbraco.Web;
namespace ClassLibrary1
{
public class Class1 : IApplicationEventHandler
{
public void OnApplicationStarted(UmbracoApplication httpApplication, ApplicationContext applicationContext)
{
Document.BeforeSave += new Document.SaveEventHandler(Document_BeforeSave);
Document.AfterSave += new Document.SaveEventHandler(Document_AfterSave);
}
void Document_BeforeSave(Document sender, umbraco.cms.businesslogic.SaveEventArgs e)
{
// your code goes here!
sender.getProperty("bodyText").Value // returns apple
}
void Document_AfterSave(Document sender, umbraco.cms.businesslogic.SaveEventArgs e)
{
// your code goes here!
sender.getProperty("bodyText").Value // returns orange
}
public void OnApplicationStarting(UmbracoApplication httpApplication, ApplicationContext applicationContext)
{
// unused
}
public void OnApplicationInitialized(UmbracoApplication httpApplication, ApplicationContext applicationContext)
{
// unused
}
}
}
私はこれをUmbraco4.11でテストしました
乾杯
ジョナサン
あなたができることは、変更をチェックしたいumbraco管理者のフィールドを対象としたjqueryイベントハンドラーを使用することです。この例は、監視するumbracoフィールドのラベルを見つけて、ラベルの兄弟であるフィールドが変更されたときに起動するjqueryイベントハンドラーを追加することで機能します。この例は、'名前の変更に対して機能します。 'すべてのノードの'プロパティ'タブにあるフィールド。フィールドタイプが異なれば値の保持方法も異なるため、$(this).val()は通常、ほとんどのフィールドタイプで機能しますが、すべてのフィールドタイプでは機能しません。
これを\umbraco\editcontent.aspxの最後にドロップします
<script type="text/javascript">
$(document).ready(function () {
$("div.propertyItemheader:contains('Name') + div.propertyItemContent").keyup(function () {
alert("field changed");
});
});
</script>