2

アップデート:

保存ボタンをクリックした後、プログラムで変更を保存する前に、BackOffice のコンテンツ タブで変更されたノードのプロパティ値を取得したいと考えています。

ノードには多くのプロパティを含めることができます。保存ボタンがクリックされたら、最初にノードのプロパティの新しく変更された値を取得したいと思います。Umbraco には、サーバー側でそれらを取得するための API が必要だと思います。

どんなアイデアでも大歓迎です。

4

2 に答える 2

1

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でテストしました

乾杯

ジョナサン

于 2012-12-17T22:02:21.780 に答える
0

あなたができることは、変更をチェックしたい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>
于 2012-12-16T19:34:51.840 に答える