コード例 #1
0
        protected void grdEntities_RowDrop(object sender, GridDragDropEventArgs e)
        {
            if (e.DestDataItem != null)
            {
                var UncachedSexyContent = SexyUncached;

                ContentGroupItem DestItem = UncachedSexyContent.TemplateContext.GetContentGroupItem(((int)e.DestDataItem.GetDataKeyValue("ID")));
                ContentGroupItem Item     = UncachedSexyContent.TemplateContext.GetContentGroupItem(((int)e.DraggedItems[0].GetDataKeyValue("ID")));
                int DestinationSortOrder  = DestItem.SortOrder;

                if (e.DropPosition == GridItemDropPosition.Below)
                {
                    DestinationSortOrder++;
                }

                if (Item.SortOrder < DestinationSortOrder)
                {
                    DestinationSortOrder--;
                }

                UncachedSexyContent.TemplateContext.ReorderContentGroupItem(Item, DestinationSortOrder, true);

                grdEntities.Rebind();
                grdEntities.Items[DestinationSortOrder].Selected = true;
            }
        }
コード例 #2
0
        public ContentGroupItem AddContentGroupItem(ContentGroupItem Item)
        {
            base.ContentGroupItems.AddObject(Item);

            SaveChanges();
            return(Item);
        }
コード例 #3
0
        protected void UpdateModuleTitleIfNecessary(ToSic.Eav.Entity entity, ContentGroupItem groupItem)
        {
            // Creating new Context, because EntityTitle gets not refreshed otherwise
            var sexyContext = new SexyContent(ZoneId, AppId, true);

            // Get ContentGroup
            var listContentGroupItem = sexyContext.TemplateContext.GetListContentGroupItem(groupItem.ContentGroupID, UserId);
            var entityModel          = sexyContext.ContentContext.GetEntityModel(entity.EntityID);

            // If this is the list title, or no list-title exists, set module title
            if (groupItem.ItemType == ContentGroupItemType.ListContent || (listContentGroupItem == null && groupItem.ItemType == ContentGroupItemType.Content && groupItem.SortOrder == 0) && entityModel.IsPublished)
            {
                var languages = Sexy.ContentContext.GetLanguages();
                // Find Module for default language
                var moduleController = new ModuleController();
                var originalModule   = moduleController.GetModule(ModuleID);

                // Update Original Module if no languages active
                if (languages.Count == 0)
                {
                    // Get Title value of Entitiy in current language
                    string titleValue = entityModel.Title[0].ToString();

                    originalModule.ModuleTitle = titleValue;
                    moduleController.UpdateModule(originalModule);
                }

                foreach (var dimension in languages)
                {
                    // Get Title value of Entitiy in current language
                    string titleValue = entityModel.Title[dimension.DimensionID].ToString();

                    if (!originalModule.IsDefaultLanguage)
                    {
                        originalModule = originalModule.DefaultLanguageModule;
                    }

                    // Break if default language module is null
                    if (originalModule == null)
                    {
                        return;
                    }

                    // Find module for given Culture
                    var moduleByCulture = moduleController.GetModuleByCulture(originalModule.ModuleID, originalModule.TabID, PortalId, LocaleController.Instance.GetLocale(dimension.ExternalKey));

                    // Break if no module found
                    if (moduleByCulture == null)
                    {
                        return;
                    }

                    moduleByCulture.ModuleTitle = titleValue;
                    moduleController.UpdateModule(moduleByCulture);
                }
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        /// <summary>
        /// Create a new ContentGroupItem object.
        /// </summary>
        /// <param name="contentGroupItemID">Initial value of the ContentGroupItemID property.</param>
        /// <param name="contentGroupID">Initial value of the ContentGroupID property.</param>
        /// <param name="sortOrder">Initial value of the SortOrder property.</param>
        /// <param name="type">Initial value of the Type property.</param>
        /// <param name="sysCreated">Initial value of the SysCreated property.</param>
        /// <param name="sysCreatedBy">Initial value of the SysCreatedBy property.</param>
        /// <param name="sysModified">Initial value of the SysModified property.</param>
        /// <param name="sysModifiedBy">Initial value of the SysModifiedBy property.</param>
        public static ContentGroupItem CreateContentGroupItem(global::System.Int32 contentGroupItemID, global::System.Int32 contentGroupID, global::System.Int32 sortOrder, global::System.String type, global::System.DateTime sysCreated, global::System.Int32 sysCreatedBy, global::System.DateTime sysModified, global::System.Int32 sysModifiedBy)
        {
            ContentGroupItem contentGroupItem = new ContentGroupItem();

            contentGroupItem.ContentGroupItemID = contentGroupItemID;
            contentGroupItem.ContentGroupID     = contentGroupID;
            contentGroupItem.SortOrder          = sortOrder;
            contentGroupItem.Type          = type;
            contentGroupItem.SysCreated    = sysCreated;
            contentGroupItem.SysCreatedBy  = sysCreatedBy;
            contentGroupItem.SysModified   = sysModified;
            contentGroupItem.SysModifiedBy = sysModifiedBy;
            return(contentGroupItem);
        }
コード例 #6
0
        /// <summary>
        /// Reorders ContentGroupItems in the group
        /// </summary>
        /// <param name="Item"></param>
        /// <param name="DestinationSortOrder"></param>
        /// <param name="UserId"></param>
        /// <param name="AutoSave"></param>
        public void ReorderContentGroupItem(ContentGroupItem Item, int DestinationSortOrder, bool AutoSave)
        {
            // If Destination is more than the highest sortorder, reset to max
            var maxSortOrder = GetContentGroupItems(Item.ContentGroupID).Max(p => p.SortOrder);

            if (DestinationSortOrder > maxSortOrder)
            {
                DestinationSortOrder = maxSortOrder;
            }

            // Return if the Item is already at that position
            if (Item.SortOrder == DestinationSortOrder)
            {
                return;
            }

            List <ContentGroupItem> Items;
            List <ContentGroupItem> RelatedItems = GetContentGroupItems(Item.ContentGroupID).Where(p => p.SortOrder == Item.SortOrder).ToList();

            // Item moved up
            if (Item.SortOrder > DestinationSortOrder)
            {
                Items = GetContentGroupItems(Item.ContentGroupID).Where(p => p.SortOrder >= DestinationSortOrder && p.SortOrder < Item.SortOrder).ToList();

                // Set new SortOrder on Items that have to move
                Items.ForEach(p => p.SortOrder = p.SortOrder + 1);
            }
            else // Item moved down
            {
                Items = GetContentGroupItems(Item.ContentGroupID).Where(p => p.SortOrder > Item.SortOrder && p.SortOrder <= DestinationSortOrder).ToList();

                // Set new SortOrder on Items that have to move
                Items.ForEach(p => p.SortOrder = p.SortOrder - 1);
            }

            // Set SortOrder of items with the same SortOrder (for example, presentation)
            RelatedItems.ForEach(p => p.SortOrder = DestinationSortOrder);

            if (AutoSave)
            {
                SaveChanges();
            }
        }
コード例 #7
0
 /// <summary>
 /// Deprecated Method for adding a new object to the ContentGroupItems EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToContentGroupItems(ContentGroupItem contentGroupItem)
 {
     base.AddObject("ContentGroupItems", contentGroupItem);
 }
コード例 #8
0
 public ContentGroupItem UpdateContentGroupItem(ContentGroupItem Item)
 {
     SaveChanges();
     return(Item);
 }