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/TDijk1/erp-apps.eu/wwwroot/CMSWebParts/Pux/Documents/PuxRepeater.ascx.cs
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections;
using CMS.Helpers;
using CMS.DocumentEngine;
using CMS.Controls;
using System.Collections.Generic;
using CMS.MacroEngine;
using CMS.PortalControls;

public partial class CMSWebParts_Pux_Documents_PuxRepeater : CMSAbstractWebPart, INamingContainer
{
    public string NestedControlsID
    {
        get
        {
            return GetStringValue("NestedControlsID", string.Empty);

        }
        set
        {
            SetValue("NestedControlsID", value);
        }
    }

    public string WhereCondition
    {
        get
        {
            return GetStringValue("WhereCondition", string.Empty);

        }
        set
        {
            SetValue("WhereCondition", value);
        }

    }

    public string OrderBy
    {
        get
        {
            return GetStringValue("OrderBy", string.Empty);

        }
        set
        {
            SetValue("OrderBy", value);
        }

    }

    public string PageType
    {
        get
        {
            return ClassNames;

        }
        set
        {
            ClassNames = value;
        }

    }

    public string ClassNames
    {
        get
        {
            return GetStringValue("ClassNames", string.Empty);

        }
        set
        {
            SetValue("ClassNames", value);
        }

    }

    public string TransformationName
    {
        get
        {
            return GetStringValue("TransformationName", string.Empty);

        }
        set
        {
            SetValue("TransformationName", value);
        }

    }

    public string Path
    {
        get
        {
            return GetStringValue("Path", string.Empty);

        }
        set
        {
            SetValue("Path", value);
        }

    }

    public string Columns
    {
        get
        {
            return GetStringValue("Columns", string.Empty);

        }
        set
        {
            SetValue("Columns", value);
        }

    }

    public int TopN
    {
        get
        {
            return ValidationHelper.GetInteger(GetValue("TopN"), -1);

        }
        set
        {
            SetValue("TopN", value);
        }
    }

    public bool SelectOnlyPublished
    {
        get
        {
            return ValidationHelper.GetBoolean(GetValue("SelectOnlyPublished"), false);

        }
        set
        {
            SetValue("SelectOnlyPublished", value);
        }
    }

    public int NestingLevel
    {
        get
        {
            return ValidationHelper.GetInteger(GetValue("NestingLevel"), -1);

        }
        set
        {
            SetValue("NestingLevel", value);
        }
    }

    public bool HideControlForZeroRows
    {
        get
        {
            return ValidationHelper.GetBoolean(GetValue("HideControlForZeroRows"), false);

        }
        set
        {
            SetValue("HideControlForZeroRows", value);
        }
    }

    private ITemplate _ItemTemplate;
    private ITemplate _AlternateItemTemplate;
    private ITemplate _HeaderTemplate;
    private ITemplate _FooterTemplate;
    private ITemplate _EmptyTemplate;
    private IEnumerable _DataSource;

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [TemplateContainer(typeof(SimpleTemplateItem))]
    public ITemplate ItemTemplate
    {
        get
        {
            if (_ItemTemplate == null)
            {
                if (!string.IsNullOrEmpty(TransformationName))
                {
                    _ItemTemplate = CMSDataProperties.LoadTransformation(this, TransformationName);
                }
            }
            return _ItemTemplate;

        }
        set { _ItemTemplate = value; }
    }

    [TemplateContainer(typeof(SimpleTemplateItem))]
    public ITemplate AlternateItemTemplate
    {
        get { return _AlternateItemTemplate; }
        set { _AlternateItemTemplate = value; }
    }

    [TemplateContainer(typeof(SimpleTemplateItem))]
    public ITemplate HeaderTemplate
    {
        get { return _HeaderTemplate; }
        set { _HeaderTemplate = value; }
    }

    [TemplateContainer(typeof(SimpleTemplateItem))]
    public ITemplate FooterTemplate
    {
        get { return _FooterTemplate; }
        set { _FooterTemplate = value; }
    }

    [TemplateContainer(typeof(SimpleTemplateItem))]
    public ITemplate EmptyTemplate
    {
        get { return _EmptyTemplate; }
        set { _EmptyTemplate = value; }
    }

    public IEnumerable DataSource
    {
        get
        {
            if (_DataSource == null)
            {
                _DataSource = DocumentHelper.GetDocuments(PageType)
                                          .TopN(TopN)
                                          .Path(MacroResolver.GetInstance().ResolvePath(Path).Replace("%", ""), PathTypeEnum.Children)
                                          .NestingLevel(NestingLevel)
                                          .OrderBy(OrderBy)
                                          .Columns(Columns)
                                          .Published(SelectOnlyPublished)
                                          .Where(WhereCondition).Tables[0].DefaultView;
            }
            return _DataSource;
        }
        set
        {
            _DataSource = value;
        }
    }
    private object _CurrentItem;

    public object CurrentItem
    {
        get { return _CurrentItem; }
        set { _CurrentItem = value; }
    }

    public override void DataBind()
    {

        base.DataBind(); //First binding to get values of <%#%> properties

        //to jestli se vykreslí, nebo nevykreslí hlavička se zjišťuje takto složitě, protože na obyčejné IEnumerable nelze zjistit, jestli je prázdná
        if (!(HideControlForZeroRows))
        {
            AddTemplateAsControl(HeaderTemplate, null, -1);
        }

        IEnumerator ie = DataSource.GetEnumerator();
        bool renderAlternateTemplate = false;
        int index = -1;
        while (ie.MoveNext())
        {
            index++;

            if (index == 0 && HideControlForZeroRows)
            {
                AddTemplateAsControl(HeaderTemplate, null, -1);
            }
            if (AlternateItemTemplate != null)
            {
                if (renderAlternateTemplate)
                {
                    AddTemplateAsControl(AlternateItemTemplate, ie.Current, index);
                }
                else
                {
                    AddTemplateAsControl(ItemTemplate, ie.Current, index);
                }
            }
            else
            {
                AddTemplateAsControl(ItemTemplate, ie.Current, index);
            }

            renderAlternateTemplate = !renderAlternateTemplate;
        }

        //Rendering footer template into current control
        if (!(HideControlForZeroRows && index == -1))
        {
            AddTemplateAsControl(FooterTemplate, null, -1);
        }

        //Rendering EmptyTemplate for zero rows
        if (EmptyTemplate != null && index == -1)
        {
            AddTemplateAsControl(EmptyTemplate, null, -1);
        }


        DataBindChildren();
    }

    private void AddTemplateAsControl(ITemplate anyTemplate, object currentItem, int currentItemIndex)
    {
        if (anyTemplate != null)
        {
            SimpleTemplateItem templateContentHolder = new SimpleTemplateItem(currentItem, currentItemIndex);
            anyTemplate.InstantiateIn(templateContentHolder);
            this.Controls.Add(templateContentHolder);
        }
    }
}

public class SimpleTemplateItem : Control, System.Web.UI.INamingContainer, IDataItemContainer
{
    private object _CurrentDataItem;
    private int _DataItemIndex;
    public SimpleTemplateItem(object currentItem, int curentIndex)
    {
        _CurrentDataItem = currentItem;
        _DataItemIndex = curentIndex;
    }


    #region IDataItemContainer Members

    public object DataItem
    {
        get { return _CurrentDataItem; }
    }

    public int DataItemIndex
    {
        get { return _DataItemIndex; }
    }

    public int DisplayIndex
    {
        get { return DataItemIndex; }
    }

    #endregion
}