Exemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!UserMayEdit)
            {
                btnUpdate.Visible          = false;
                txtTemplateContent.Enabled = false;
            }

            hlkCancel.NavigateUrl = DotNetNuke.Common.Globals.NavigateURL(this.TabId);

            if (IsPostBack)
            {
                return;
            }

            if (Template == null)
            {
                return;
            }

            if (File.Exists(TemplatePath))
            {
                txtTemplateContent.Text = File.ReadAllText(TemplatePath);
            }

            // Get name of the current template and write it to lblTemplate
            lblTemplate.Text                = Template.Name;
            lblTemplateLocation.Text        = @"/" + TemplatePath.Replace(HttpContext.Current.Request.PhysicalApplicationPath, String.Empty).Replace('\\', '/');
            lblEditTemplateFileHeading.Text = String.Format(LocalizeString("lblEditTemplateFileHeading.Text"), Template.Name);


            var defaultLanguageID = Sexy.ContentContext.GetLanguageId(PortalSettings.DefaultLanguage);
            var languageList      = defaultLanguageID.HasValue ? new[] { defaultLanguageID.Value } : new[] { 0 };

            var    templateDefaults = Sexy.GetTemplateDefaults(Template.TemplateID).Where(t => t.ContentTypeID.HasValue);
            string formatString;

            if (Template.Type == "Token")
            {
                formatString = "[{0}:{1}]";
            }
            else
            {
                formatString = "@{0}.{1}";
            }

            foreach (var templateDefault in templateDefaults)
            {
                var contentTypeId = templateDefault.ContentTypeID.Value;
                AddHelpForAContentType(contentTypeId, formatString, templateDefault, languageList);
            }

            // todo: add AppResources and AppSettings help

            // add standard help
            AddHelpFragments();
        }
        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);
            }
        }
Exemplo n.º 3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            hlkCancel.NavigateUrl = DotNetNuke.Common.Globals.NavigateURL(this.TabId, "", null);

            var contentTypes = Sexy.GetAvailableAttributeSets("2SexyContent");
            var templates    = Sexy.GetTemplates(PortalSettings.PortalId);
            var entities     = DataSource.GetInitialDataSource(ZoneId.Value, AppId.Value, false);
            var language     = System.Threading.Thread.CurrentThread.CurrentCulture.Name;

            var data = new {
                contentTypes = contentTypes.Select(c => new
                {
                    Id         = c.AttributeSetId,
                    Name       = c.Name,
                    StaticName = c.StaticName,
                    Templates  = templates.Where(t => t.AttributeSetID == c.AttributeSetId).Select(p => new
                    {
                        p.TemplateID,
                        p.AttributeSetID,
                        p.Name,
                        TemplateDefaults = Sexy.GetTemplateDefaults(p.TemplateID).Select(td => new
                        {
                            td.ContentTypeID,
                            td.DemoEntityID,
                            ItemType = td.ItemType.ToString("F")
                        })
                    }),
                    Entities = entities.List.Where(en => en.Value.Type.AttributeSetId == c.AttributeSetId).Select(en => Sexy.GetDictionaryFromEntity(en.Value, language))
                }),
                templatesWithoutContentType = templates.Where(p => !p.AttributeSetID.HasValue).Select(t => new
                {
                    t.TemplateID,
                    t.Name
                })
            };

            pnlExportView.Attributes.Add("ng-init", "init(" + Newtonsoft.Json.JsonConvert.SerializeObject(data) + ");");
        }
Exemplo n.º 4
0
        private IDictionary <int, IEntity> GetStream(ContentGroupItemType itemType, ContentGroupItemType?presentationItemType)
        {
            var entitiesToDeliver = new Dictionary <int, IEntity>();

            if (!ContentGroupItems.Any(c => c.TemplateID.HasValue) && !OverrideTemplateId.HasValue)
            {
                return(entitiesToDeliver);
            }

            var items            = ContentGroupItems.ToList(); // Create copy of list (not in cache) because it will get modified
            var templateId       = OverrideTemplateId.HasValue ? OverrideTemplateId.Value : items.First().TemplateID.Value;
            var templateDefaults = Sexy.GetTemplateDefaults(templateId);
            var templateDefault  = templateDefaults.FirstOrDefault(t => t.ItemType == itemType);

            // If no Content Elements exist and type is List, add a ContentGroupItem to List (not to DB)
            if ((itemType == ContentGroupItemType.Content || itemType == ContentGroupItemType.ListContent) && !items.Any(p => p.ItemType == itemType))
            {
                if (!ListId.HasValue)
                {
                    throw new Exception("GetStream() failed because ListId is null. ModuleId is " + (ModuleId.HasValue ? ModuleId.ToString() : "null"));
                }

                items.Add(new ContentGroupItem
                {
                    ContentGroupID     = ListId.Value,
                    ContentGroupItemID = -1,
                    EntityID           = new int?(),
                    SortOrder          = (itemType == ContentGroupItemType.ListContent ? -1 : 0),
                    SysCreated         = DateTime.Now,
                    SysCreatedBy       = -1,
                    TemplateID         = templateId,
                    Type = itemType.ToString("F")
                });
            }

            var originals = In["Default"].List;

            foreach (var i in items.Where(p => p.ItemType == itemType))
            {
                // use demo-entites where available
                var entityId = i.EntityID.HasValue
                    ? i.EntityID.Value
                    : (templateDefault != null && templateDefault.DemoEntityID.HasValue
                        ? templateDefault.DemoEntityID.Value
                        : new int?());

                // We can't deliver entities that are not delivered by base (original stream), so continue
                if (!entityId.HasValue || !originals.ContainsKey(entityId.Value))
                {
                    continue;
                }

                IEntity presentation = null;


                if (presentationItemType.HasValue)
                {
                    // Try to find presentation entity
                    var presentationEntityId = items.Where(p =>
                                                           p.SortOrder == i.SortOrder && p.ItemType == presentationItemType && p.EntityID.HasValue &&
                                                           originals.ContainsKey(p.EntityID.Value)).Select(p => p.EntityID).FirstOrDefault();

                    // If there is no presentation entity, take default entity
                    if (!presentationEntityId.HasValue)
                    {
                        presentationEntityId =
                            templateDefaults.Where(
                                d =>
                                d.ItemType == presentationItemType && d.DemoEntityID.HasValue &&
                                originals.ContainsKey(d.DemoEntityID.Value))
                            .Select(p => p.DemoEntityID).FirstOrDefault();
                    }

                    presentation = presentationEntityId.HasValue ? originals[presentationEntityId.Value] : null;
                }


                var key = entityId.Value;

                // This ensures that if an entity is added more than once, the dictionary doesn't complain because of duplicate keys
                while (entitiesToDeliver.ContainsKey(key))
                {
                    key += 1000000000;
                }

                entitiesToDeliver.Add(key, new EAVExtensions.EntityInContentGroup(originals[entityId.Value])
                {
                    SortOrder = i.SortOrder, ContentGroupItemModified = i.SysModified, Presentation = presentation, GroupId = ListId.Value
                });
            }

            return(entitiesToDeliver);
        }