2 Stimmen

Erhalten Sie den geänderten ungespeicherten Eigenschaftswert eines Knotens im Inhalts-Tab, nachdem Sie auf die Schaltfläche Speichern geklickt haben und bevor Sie die Änderungen speichern. Umbraco

Aktualisierung:

Ich möchte den Wert einer Eigenschaft eines Knotens abrufen, der nach dem Klicken auf die Schaltfläche "Speichern" geändert wurde und bevor die Änderungen programmgesteuert auf der Registerkarte "Inhalt" im BackOffice gespeichert werden.

Der Knoten kann viele Eigenschaften enthalten. Wenn die Schaltfläche "Speichern" geklickt wird, möchte ich zuerst den neuen geänderten Wert für die Eigenschaften des Knotens abrufen. Ich denke, dass Umbraco APIs haben sollte, um diese auf der Serverseite abzurufen.

Jeder Vorschlag wäre sehr dankbar.

1voto

Jonathan Punkte 4716

Sie möchten sich in die Document.BeforeSave-Methode in einer IApplicationEventHandler-Klasse einbinden. So (angenommen, Sie ändern bodyText von "Apfel" auf "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)
        {
            // Hier kommt Ihr Code hin!
            sender.getProperty("bodyText").Value // gibt Apfel zurück
        }

        void Document_AfterSave(Document sender, umbraco.cms.businesslogic.SaveEventArgs e)
        {
            // Hier kommt Ihr Code hin!
            sender.getProperty("bodyText").Value // gibt Orange zurück
        }

        public void OnApplicationStarting(UmbracoApplication httpApplication, ApplicationContext applicationContext)
        {
            // nicht verwendet
        }

        public void OnApplicationInitialized(UmbracoApplication httpApplication, ApplicationContext applicationContext)
        {
            // nicht verwendet
        }

    }
}

Ich habe dies in Umbraco 4.11 getestet

Prost

Jonathan

0voto

amelvin Punkte 8819

Was Sie tun könnten, ist ein jQuery-Ereignishandler zu verwenden, der auf das Feld im Umbraco-Admin abzielt, das Sie auf Änderungen überprüfen möchten. Dieses Beispiel funktioniert, indem das Label des Umbraco-Feldes, das überwacht werden soll, gefunden wird und dann ein jQuery-Ereignishandler hinzugefügt wird, der ausgelöst wird, wenn das Feld, das das Geschwister-Element des Labels ist, geändert wird - dieses Beispiel funktioniert für alle Änderungen am Feld 'Name', das sich auf dem 'Eigenschaften'-Tab jedes Knotens befindet. Unterschiedliche Feldtypen speichern den Wert unterschiedlich, daher sollte $(this).val() in der Regel für die meisten, aber nicht alle Feldtypen funktionieren.

Fügen Sie dies am Ende von \umbraco\editcontent.aspx ein

        $(document).ready(function () {
            $("div.propertyItemheader:contains('Name') + div.propertyItemContent").keyup(function () {
                alert("Feld geändert");
            });

        });

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X