HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/CMS/App_Code/CMSModules/CMS/Modules/ModuleListControlExtender.cs
using System;
using System.Data;
using System.Web.UI.WebControls;

using CMS;
using CMS.Base;
using CMS.DataEngine;
using CMS.ExtendedControls;
using CMS.ExtendedControls.ActionsConfig;
using CMS.Helpers;
using CMS.Modules;
using CMS.PortalEngine;
using CMS.UIControls;
using CMS.Core;


[assembly: RegisterCustomClass("ModuleListControlExtender", typeof(ModuleListControlExtender))]

/// <summary>
/// Permission edit control extender
/// </summary>
public class ModuleListControlExtender : ControlExtender<UniGrid>
{
    /// <summary>
    /// OnInit event handler
    /// </summary>
    public override void OnInit()
    {
        Control.OnAction += OnAction;
        Control.OnExternalDataBound += Control_OnExternalDataBound;

        ((CMSUIPage)Control.Page).LoadComplete += ModuleListControlExtender_LoadComplete;
    }


    /// <summary>
    /// Inserts a header action
    /// </summary>
    /// <param name="sender">Ignored</param>
    /// <param name="e">Ignored</param>
    void ModuleListControlExtender_LoadComplete(object sender, EventArgs e)
    {
        var goToImport = new HeaderAction()
        {
            Text = ResHelper.GetString("Administration-Module_List.ImportData"),
            RedirectUrl = UIContextHelper.GetElementUrl(ModuleName.CMS, "ImportSiteOrObjects"),
            ButtonStyle = ButtonStyle.Default,
        };
        ((CMSUIPage)Control.Page).AddHeaderAction(goToImport);
    }


    /// <summary>
    /// OnExternalDataBound
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="sourceName"></param>
    /// <param name="parameter"></param>
    /// <returns></returns>
    object Control_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        CMSGridActionButton button = null;
        switch (sourceName.ToLowerCSafe())
        {
            case "delete":
                string moduleName = ValidationHelper.GetString(((DataRowView)((GridViewRow)parameter).DataItem).Row["ResourceName"], "");
                if (ResourceInfoProvider.IsSystemResource(moduleName))
                {
                    button = ((CMSGridActionButton)sender);
                    button.Enabled = false;
                }
                break;

            case "#objectmenu":
                moduleName = ValidationHelper.GetString(((DataRowView)((GridViewRow)parameter).DataItem).Row["ResourceName"], "");
                if (ResourceInfoProvider.IsSystemResource(moduleName))
                {
                    ((CMSGridActionButton)sender).Visible = false;
                }
                break;
        }

        return null;
    }


    /// <summary>
    /// Handles the UniGrid's OnAction event.
    /// </summary>
    /// <param name="actionName">Name of item (button) that threw the event</param>
    /// <param name="actionArgument">ID (value of Primary key) of the corresponding data row</param>
    protected void OnAction(string actionName, object actionArgument)
    {
        if (actionName == "delete")
        {
            int resourceId = ValidationHelper.GetInteger(actionArgument, 0);

            // Check if module has any classes
            var classes = DataClassInfoProvider.GetClasses().Where("ClassResourceID", QueryOperator.Equals, resourceId);
            var settings = SettingsCategoryInfoProvider.GetSettingsCategories().Where("CategoryResourceID", QueryOperator.Equals, resourceId);
            var elements = UIElementInfoProvider.GetUIElements().Where("ElementResourceID", QueryOperator.Equals, resourceId);

            if (!classes.HasResults() && !settings.HasResults() && !elements.HasResults())
            {
                ResourceInfoProvider.DeleteResourceInfo(resourceId);
            }
            else
            {
                Control.ShowError(Control.GetString("cms_resource.deleteerror"));
            }
        }
    }
}