Используйте NewClassWizard в kentico admin

Я хочу создать настраиваемую страницу, которая позволяет мне вручную отслеживать каждое изменение данных, сделанное kentico в базе данных. Я понял, что могу реализовать это с помощью кода с помощью NewClassWizard. Но когда это будет сделано, как я могу использовать его в админке Kentico? Я пытаюсь загрузить его из модуля Page Type, но могу найти способ указать свой собственный класс. Это правильный способ его использования? Документация не совсем ясна, спасибо за вашу помощь


person EZL    schedule 15.04.2020    source источник
comment
Ваш вопрос немного загадочный. Не могли бы вы более подробно объяснить, что именно вы ищете? Я не уверен, что можно отслеживать каждое конкретное изменение, которое Kentico вносит в базу данных, без использования какого-либо ведения журнала базы данных (что было бы лучше для этого ИМХО).   -  person Brenden Kehren    schedule 15.04.2020
comment
основная идея - реализовать ci / cd, потому что мы используем kentico для клиентов, у которых много сайтов (для каждой страны) ... поэтому нам нужно отслеживать изменения db   -  person EZL    schedule 16.04.2020


Ответы (1)


Я бы предложил создать глобальный обработчик событий для отслеживания изменений. . Хотя Kentico уже будет выполнять большую часть этого отслеживания за вас, вы можете специально добавить любые конкретные события, которые хотите, в качестве глобального события. Это будет обрабатывать любые изменения, сделанные на общедоступном веб-сайте, ориентированном на клиентов, внутри пользовательского интерфейса Kentico и в любых вызовах Kentico API.

В своем настраиваемом глобальном обработчике событий вы можете проверить наличие различные типы событий в зависимости от объекта и активности CRUD. Например что-то вроде этого:

using CMS;
using CMS.CustomTables;
using CMS.DataEngine;
using CMS.DocumentEngine;

// Registers the custom module into the system
[assembly: RegisterModule(typeof(CustomInitializationModule))]

public class CustomInitializationModule : Module
{
    // Module class constructor, the system registers the module under the name "CustomInit"
    public CustomInitializationModule()
        : base("CustomInit")
    {
    }

    // Contains initialization code that is executed when the application starts
    protected override void OnInit()
    {
        base.OnInit();

        // Assigns custom handlers to events
        DocumentEvents.Insert.After += Document_Insert_After;
    }

    private void Document_Insert_After(object sender, DocumentEventArgs e)
    {
        if (e.Node.ClassName.ToLower() == "your.classname")
        {
            // create an event to log to a custom module table or a custom table so it's not logged directly in the Kentico Event log
            CustomTableItem item = new CustomTableItem("customtable.name");
            item.SetValue("ItemEventType", "Create document");
            item.SetValue("ItemEventCode", "Your event code");
            item.SetValue("ItemEventUserID", e.Node.DocumentModifiedByUserID);
            item.SetValue("ItemEventUrl", e.Node.NodeAliasPath);
            item.SetValue("ItemEventName", e.Node.DocumentName);
            item.Insert();
        }
    }
}

Это простой пример создания документа. Вам не нужно проверять имя класса типа страницы, если вы этого не хотите. Вы также можете включить глобальный обработчик событий для любого «объекта», такого как объект cms_class, просто используйте это определение в своем коде <name>Info.TYPEINFO.Events.<eventtype>. Это не ограничивается каким-либо объектом, вы можете отслеживать обновления преобразований, изменения полей типа страницы и т. Д. Вам просто нужно знать имя / тип объекта и написать код вокруг него.

person Brenden Kehren    schedule 16.04.2020