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/wwwroot/CMSAPIExamples/Code/Development/Widgets/Default.aspx.cs
using System;
using System.Data;

using CMS.FormEngine;
using CMS.Helpers;
using CMS.PortalEngine;
using CMS.SiteProvider;
using CMS.Membership;
using CMS.UIControls;
using CMS.Modules;

public partial class CMSAPIExamples_Code_Development_Widgets_Default : CMSAPIExamplePage
{
    #region "Initialization"

    protected void Page_Load(object sender, EventArgs e)
    {
        // Widget
        apiCreateWidget.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(CreateWidget);
        apiGetAndUpdateWidget.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndUpdateWidget);
        apiGetAndBulkUpdateWidgets.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndBulkUpdateWidgets);
        apiDeleteWidget.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(DeleteWidget);

        // Widget category
        apiCreateWidgetCategory.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(CreateWidgetCategory);
        apiGetAndUpdateWidgetCategory.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndUpdateWidgetCategory);
        apiGetAndBulkUpdateWidgetCategories.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndBulkUpdateWidgetCategories);
        apiDeleteWidgetCategory.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(DeleteWidgetCategory);

        // Widget security
        apiAddWidgetToRole.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(AddWidgetToRole);
        apiSetSecurityLevel.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(SetSecurityLevel);
        apiRemoveWidgetFromRole.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(RemoveWidgetFromRole);
    }

    #endregion


    #region "Mass actions"

    /// <summary>
    /// Runs all creating and managing examples.
    /// </summary>
    public override void RunAll()
    {
        base.RunAll();

        // Widget category
        apiCreateWidgetCategory.Run();
        apiGetAndUpdateWidgetCategory.Run();
        apiGetAndBulkUpdateWidgetCategories.Run();

        // Widget
        apiCreateWidget.Run();
        apiGetAndUpdateWidget.Run();
        apiGetAndBulkUpdateWidgets.Run();

        // Widget security
        apiAddWidgetToRole.Run();
        apiSetSecurityLevel.Run();
    }


    /// <summary>
    /// Runs all cleanup examples.
    /// </summary>
    public override void CleanUpAll()
    {
        base.CleanUpAll();

        // Widget role
        apiRemoveWidgetFromRole.Run();

        // Widget
        apiDeleteWidget.Run();

        // Widget category
        apiDeleteWidgetCategory.Run();
    }

    #endregion


    #region "API examples - Widget category"

    /// <summary>
    /// Creates widget category. Called when the "Create category" button is pressed.
    /// </summary>
    private bool CreateWidgetCategory()
    {
        // Create new widget category object
        WidgetCategoryInfo newCategory = new WidgetCategoryInfo();

        // Set the properties
        newCategory.WidgetCategoryDisplayName = "My new category";
        newCategory.WidgetCategoryName = "MyNewCategory";

        // Save the widget category
        WidgetCategoryInfoProvider.SetWidgetCategoryInfo(newCategory);

        return true;
    }


    /// <summary>
    /// Gets and updates widget category. Called when the "Get and update category" button is pressed.
    /// Expects the CreateWidgetCategory method to be run first.
    /// </summary>
    private bool GetAndUpdateWidgetCategory()
    {
        // Get the widget category
        WidgetCategoryInfo updateCategory = WidgetCategoryInfoProvider.GetWidgetCategoryInfo("MyNewCategory");
        if (updateCategory != null)
        {
            // Update the properties
            updateCategory.WidgetCategoryDisplayName = updateCategory.WidgetCategoryDisplayName.ToLower();

            // Save the changes
            WidgetCategoryInfoProvider.SetWidgetCategoryInfo(updateCategory);

            return true;
        }

        return false;
    }


    /// <summary>
    /// Gets and bulk updates widget categories. Called when the "Get and bulk update categories" button is pressed.
    /// Expects the CreateWidgetCategory method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateWidgetCategories()
    {
        // Prepare the parameters
        string where = "WidgetCategoryName LIKE N'MyNewCategory%'";
        string orderBy = "";
        int topN = 0;
        string columns = "";

        // Get the data
        DataSet categories = WidgetCategoryInfoProvider.GetWidgetCategories()
            .Where(where)
            .OrderBy(orderBy)
            .TopN(topN)
            .Columns(columns);

        if (!DataHelper.DataSourceIsEmpty(categories))
        {
            // Loop through the individual items
            foreach (DataRow categoryDr in categories.Tables[0].Rows)
            {
                // Create object from DataRow
                WidgetCategoryInfo modifyCategory = new WidgetCategoryInfo(categoryDr);

                // Update the properties
                modifyCategory.WidgetCategoryDisplayName = modifyCategory.WidgetCategoryDisplayName.ToUpper();

                // Save the changes
                WidgetCategoryInfoProvider.SetWidgetCategoryInfo(modifyCategory);
            }

            return true;
        }

        return false;
    }


    /// <summary>
    /// Deletes widget category. Called when the "Delete category" button is pressed.
    /// Expects the CreateWidgetCategory method to be run first.
    /// </summary>
    private bool DeleteWidgetCategory()
    {
        // Get the widget category
        WidgetCategoryInfo deleteCategory = WidgetCategoryInfoProvider.GetWidgetCategoryInfo("MyNewCategory");

        // Delete the widget category
        WidgetCategoryInfoProvider.DeleteWidgetCategoryInfo(deleteCategory);

        return (deleteCategory != null);
    }

    #endregion


    #region "API examples - Widget"

    /// <summary>
    /// Creates widget. Called when the "Create widget" button is pressed.
    /// </summary>
    private bool CreateWidget()
    {
        // Get parent webpart and category for widget
        WebPartInfo webpart = WebPartInfoProvider.GetWebPartInfo("AbuseReport");
        WidgetCategoryInfo category = WidgetCategoryInfoProvider.GetWidgetCategoryInfo("MyNewCategory");

        // Widget cannot be created from inherited webpart
        if ((webpart != null) && (webpart.WebPartParentID == 0) && (category != null))
        {
            // Create new widget object 
            WidgetInfo newWidget = new WidgetInfo();

            // Set the properties from parent webpart
            newWidget.WidgetName = "MyNewWidget";
            newWidget.WidgetDisplayName = "My new widget";
            newWidget.WidgetDescription = webpart.WebPartDescription;

            newWidget.WidgetProperties = FormHelper.GetFormFieldsWithDefaultValue(webpart.WebPartProperties, "visible", "false");

            newWidget.WidgetWebPartID = webpart.WebPartID;
            newWidget.WidgetCategoryID = category.WidgetCategoryID;

            // Save new widget
            WidgetInfoProvider.SetWidgetInfo(newWidget);

            return true;
        }

        return false;
    }


    /// <summary>
    /// Gets and updates widget. Called when the "Get and update widget" button is pressed.
    /// Expects the CreateWidget method to be run first.
    /// </summary>
    private bool GetAndUpdateWidget()
    {
        // Get the widget
        WidgetInfo updateWidget = WidgetInfoProvider.GetWidgetInfo("MyNewWidget");
        if (updateWidget != null)
        {
            // Update the properties
            updateWidget.WidgetDisplayName = updateWidget.WidgetDisplayName.ToLower();

            // Save the changes
            WidgetInfoProvider.SetWidgetInfo(updateWidget);

            return true;
        }

        return false;
    }


    /// <summary>
    /// Gets and bulk updates widgets. Called when the "Get and bulk update widgets" button is pressed.
    /// Expects the CreateWidget method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateWidgets()
    {
        // Prepare the parameters
        string where = "WidgetName LIKE N'MyNewWidget%'";
        string orderBy = "";
        int topN = 0;
        string columns = "";

        // Get the data
        DataSet widgets = WidgetInfoProvider
            .GetWidgets()
            .Where(where)
            .OrderBy(orderBy)
            .TopN(topN)
            .Columns(columns);

        if (!DataHelper.DataSourceIsEmpty(widgets))
        {
            // Loop through the individual items
            foreach (DataRow widgetDr in widgets.Tables[0].Rows)
            {
                // Create object from DataRow
                WidgetInfo modifyWidget = new WidgetInfo(widgetDr);

                // Update the properties
                modifyWidget.WidgetDisplayName = modifyWidget.WidgetDisplayName.ToUpper();

                // Save the changes
                WidgetInfoProvider.SetWidgetInfo(modifyWidget);
            }

            return true;
        }

        return false;
    }


    /// <summary>
    /// Deletes widget. Called when the "Delete widget" button is pressed.
    /// Expects the CreateWidget method to be run first.
    /// </summary>
    private bool DeleteWidget()
    {
        // Get the widget
        WidgetInfo deleteWidget = WidgetInfoProvider.GetWidgetInfo("MyNewWidget");

        // Delete the widget
        WidgetInfoProvider.DeleteWidgetInfo(deleteWidget);

        return (deleteWidget != null);
    }

    #endregion


    #region "API examples - Widget security"

    /// <summary>
    /// Add widget to role. Called when the "Add widget to role" button is pressed.
    /// Expects the CreateWidget method to be run first.
    /// </summary>
    private bool AddWidgetToRole()
    {
        // Get role, widget and permission object
        RoleInfo role = RoleInfoProvider.GetRoleInfo("CMSDeskAdmin", SiteContext.CurrentSiteID);
        WidgetInfo widget = WidgetInfoProvider.GetWidgetInfo("MyNewWidget");
        PermissionNameInfo permission = PermissionNameInfoProvider.GetPermissionNameInfo("AllowedFor", "Widgets", null);

        // If all exist
        if ((role != null) && (widget != null) && (permission != null))
        {
            // Add widget to role
            WidgetRoleInfoProvider.AddRoleToWidget(role.RoleID, widget.WidgetID, permission.PermissionId);

            return true;
        }

        return false;
    }


    /// <summary>
    /// Remove widget from role. Called when the "Remove widget to role" button is pressed.
    /// Expects the CreateWidget method to be run first.
    /// </summary>
    private bool RemoveWidgetFromRole()
    {
        // Get role, widget and permission object
        RoleInfo role = RoleInfoProvider.GetRoleInfo("CMSDeskAdmin", SiteContext.CurrentSiteID);
        WidgetInfo widget = WidgetInfoProvider.GetWidgetInfo("MyNewWidget");
        PermissionNameInfo permission = PermissionNameInfoProvider.GetPermissionNameInfo("AllowedFor", "Widgets", null);

        // If all exist
        if ((role != null) && (widget != null) && (permission != null))
        {
            // Add widget to role
            WidgetRoleInfoProvider.RemoveRoleFromWidget(role.RoleID, widget.WidgetID, permission.PermissionId);

            return true;
        }

        return false;
    }


    /// <summary>
    /// Sets Security level for widget. Called when the "Remove widget to role" button is pressed.
    /// Expects the CreateWidget method to be run first.
    /// </summary>
    private bool SetSecurityLevel()
    {
        // Get widget object
        WidgetInfo widget = WidgetInfoProvider.GetWidgetInfo("MyNewWidget");

        // If widget exists
        if (widget != null)
        {
            // Set security access
            widget.AllowedFor = SecurityAccessEnum.AuthenticatedUsers;

            WidgetInfoProvider.SetWidgetInfo(widget);

            return true;
        }

        return false;
    }

    #endregion
}