protected void ProcessView()
        {
            List <ContentGroupItemType> EditableItemsTypes = new List <ContentGroupItemType>();

            if (CurrentlyEditedItems.Any() && CurrentlyEditedItems.Any(c => c.ItemType == ContentGroupItemType.Content))
            {
                EditableItemsTypes.Add(ContentGroupItemType.Content);
                EditableItemsTypes.Add(ContentGroupItemType.Presentation);
            }
            if (SortOrder == -1 || CurrentlyEditedItems.Any(c => c.ItemType == ContentGroupItemType.ListContent))
            {
                EditableItemsTypes.Add(ContentGroupItemType.ListContent);
                EditableItemsTypes.Add(ContentGroupItemType.ListPresentation);
            }

            if (Items.Any() && Items.First().TemplateID.HasValue)
            {
                foreach (var TemplateDefault in Sexy.GetTemplateDefaults(Items.First().TemplateID.Value).Where(c => EditableItemsTypes.Contains(c.ItemType)))
                {
                    if (TemplateDefault.ContentTypeID.HasValue && TemplateDefault.ContentTypeID.Value > 0)
                    {
                        ContentGroupItem ContentGroupItem = null;
                        if (CurrentlyEditedItems.Any() && CurrentlyEditedItems.First().ContentGroupItemID != 0)
                        {
                            ContentGroupItem = CurrentlyEditedItems.FirstOrDefault(p => p.ItemType == TemplateDefault.ItemType);
                        }

                        var editControl = (EditContentGroupItem)LoadControl(System.IO.Path.Combine(TemplateSourceDirectory, "EditContentGroupItem.ascx"));
                        editControl.ContentGroupItemID = ContentGroupItem != null && ContentGroupItem.ContentGroupID != 0 ? ContentGroupItem.ContentGroupItemID : new int?();
                        editControl.ContentGroupID     = ContentGroupID.Value;
                        editControl.AppId          = AppId.Value;
                        editControl.ZoneId         = ZoneId.Value;
                        editControl.ItemType       = TemplateDefault.ItemType;
                        editControl.TemplateID     = Items.First().TemplateID.Value;
                        editControl.SortOrder      = CurrentlyEditedItems.Any() || SortOrder == -1 ? SortOrder : new int?();
                        editControl.ModuleID       = ModuleId;
                        editControl.TabID          = TabId;
                        editControl.AttributeSetID = TemplateDefault.ContentTypeID.Value;
                        phNewOrEditControls.Controls.Add(editControl);
                    }
                }
            }

            // Directly edit entity Id
            if ((!SortOrder.HasValue && EntityId.HasValue) || (!SortOrder.HasValue && AttributeSetId.HasValue && NewMode))
            {
                var editControl = (EditEntity)LoadControl(System.IO.Path.Combine(TemplateSourceDirectory, "EditEntity.ascx"));
                editControl.AppId          = AppId.Value;
                editControl.ZoneId         = ZoneId.Value;
                editControl.ModuleID       = ModuleId;
                editControl.TabID          = TabId;
                editControl.AttributeSetID = AttributeSetId.HasValue ? AttributeSetId.Value : Sexy.ContentContext.GetEntity(EntityId.Value).AttributeSetID;
                editControl.EntityId       = EntityId;
                phNewOrEditControls.Controls.Add(editControl);
            }
        }
        /// <summary>
        /// Handles the control load
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            // Add DNN Version to body Class
            SexyContent.AddDNNVersionToBodyClass(this);

            // Bind Languages Repeater
            var Languages = Sexy.ContentContext.GetLanguages().Where(l => l.Active).OrderByDescending(l => l.DimensionID == DefaultLanguageID).ThenBy(l => l.ExternalKey);

            if (Languages.Count() == 0)
            {
                pnlDimensionNav.Visible = false;
            }
            rptDimensions.DataSource = Languages;
            rptDimensions.DataBind();

            btnDelete.OnClientClick = "return confirm('" + LocalizeString("btnDelete.Confirm") + "')";
            btnDelete.Text          = Items.Count(p => p.ItemType == ContentGroupItemType.Content) > 1 ? LocalizeString("btnDelete.ListText") : LocalizeString("btnDelete.Text");
            btnDelete.Visible       = !NewMode && ContentGroupID.HasValue;

            // If there is something to edit
            if (CurrentlyEditedItems.Any())
            {
                // Settings link (to change content)
                hlkChangeContent.NavigateUrl = Sexy.GetElementSettingsLink(CurrentlyEditedItems.First().ContentGroupItemID, ModuleId, TabId, Request.RawUrl);

                // Show Change Content or Reference Link only if this is the default language
                var IsDefaultLanguage = LanguageID == DefaultLanguageID;
                hlkChangeContent.Visible = !NewMode && IsDefaultLanguage && (CurrentlyEditedItems.First().ItemType == ContentGroupItemType.Content || CurrentlyEditedItems.First().ItemType == ContentGroupItemType.ListContent);
            }

            // Show message if language is not active
            if (!Sexy.ContentContext.HasLanguages() || (LanguageID.HasValue && Sexy.ContentContext.GetDimension(LanguageID.Value).Active))
            {
                ProcessView();
            }
            else
            {
                pnlActions.Visible           = false;
                pnlLanguageNotActive.Visible = true;
                litLanguageName.Text         = LocaleController.Instance.GetLocale(System.Threading.Thread.CurrentThread.CurrentCulture.Name).Text;
                if (UserInfo.IsInRole(PortalSettings.AdministratorRoleName))
                {
                    btnActivateLanguage.Visible = true;
                }
            }
        }