Используйте NewClassWizard в Kentico Admin - PullRequest
0 голосов
/ 15 апреля 2020

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

1 Ответ

0 голосов
/ 16 апреля 2020

Я бы предложил создать глобальный обработчик событий для отслеживания изменений. Хотя Kentico уже выполнит большую часть этого отслеживания для вас, вы можете специально добавить любые указанные c события, которые вы хотите, в качестве глобального события. Это будет обрабатывать любые изменения, сделанные на общедоступном веб-сайте publi c, в пользовательском интерфейсе 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>. Это не ограничивается каким-либо объектом, вы можете отслеживать обновления преобразований, модификации полей типа страниц и т. Д. c. Вам просто нужно знать имя / тип объекта и писать код вокруг него.

...