protected override void OnLoad(EventArgs e)
        {
            var pageId   = Request.QueryString["pageId"];
            var position = Request.QueryString["position"];

            if (Request.HttpMethod == "POST")
            {
                pageId   = Request.Form["pageId"];
                position = Request.Form["position"];
            }

            var page        = PageManager.GetPageById(Guid.Parse(pageId));
            var pageTeasers = TeaserFacade.GetPageTeasers(page, position, false);

            Master.CustomJsonDataName  = "position";
            Master.CustomJsonDataValue = position;

            Master.SortableItems = pageTeasers.Select(i => new SortableItem
            {
                Id   = HashId(i),
                Name = i.GetLabel()
            });

            base.OnLoad(e);
        }
        public static IEnumerable <KeyValuePair <string, string> > GetSharedTeasers()
        {
            var types = TeaserFacade.GetSharedTeaserTypes();

            return(types.SelectMany(type => DataFacade.GetData(type)
                                    .Cast <ISharedTeaser>()
                                    ).ToDictionary(t => t.DataSourceId.Serialize(), GetSharedTeaserName).OrderBy(t => t.Value));
        }
 public override void OnInitialize(object sender, EventArgs e)
 {
     if (!BindingExist("PageTeaserType"))
     {
         Bindings.Add("PageTeaserType", TeaserFacade.GetPageTeaserTypes().First().AssemblyQualifiedName);
         Bindings.Add("Name", String.Empty);
     }
 }
        private void AddPositionFolders(EntityToken entityToken, List <Element> list)
        {
            var page = PageManager.GetPageById(new Guid(entityToken.Source));
            IList <Tuple <string, string> > positions;

            if (!TemplateTeaserPositions.TryGetValue(page.TemplateId, out positions))
            {
                return;
            }

            foreach (var position in positions)
            {
                var elementHandle   = _context.CreateElementHandle(new PageTeaserPositionFolderEntityToken(page, position.Item1));
                var positionElement = new Element(elementHandle)
                {
                    VisualData = new ElementVisualizedData
                    {
                        Label       = position.Item2,
                        ToolTip     = position.Item2,
                        HasChildren = TeaserFacade.GetPageTeasers(page, position.Item1, false).Any(),
                        Icon        = new ResourceHandle("Composite.Icons", "folder"),
                        OpenedIcon  = new ResourceHandle("Composite.Icons", "folder_active"),
                    }
                };

                var addActionToken = new WorkflowActionToken(typeof(AddPageTeaserWorkFlow), new[] { PermissionType.Add });
                positionElement.AddAction(new ElementAction(new ActionHandle(addActionToken))
                {
                    VisualData = new ActionVisualizedData
                    {
                        Label          = StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.Add.Label"),
                        ToolTip        = StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.Add.ToolTip"),
                        Icon           = new ResourceHandle("Composite.Icons", "generated-type-data-add"),
                        ActionLocation = ActionLocation
                    }
                });

                var url             = String.Format("InstalledPackages/CompositeC1Contrib.Teasers/SortPageTeasers.aspx?pageId={0}&position={1}", page.Id, position.Item1);
                var sortActionToken = new UrlActionToken(StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.SortItems"), UrlUtils.ResolveAdminUrl(url), new[] { PermissionType.Add, PermissionType.Edit, PermissionType.Administrate, });
                positionElement.AddAction(new ElementAction(new ActionHandle(sortActionToken))
                {
                    VisualData = new ActionVisualizedData
                    {
                        Label          = StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.Sort.Label"),
                        ToolTip        = StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.Sort.ToolTip"),
                        Icon           = new ResourceHandle("Composite.Icons", "cut"),
                        ActionLocation = ActionLocation
                    }
                });

                list.Add(positionElement);
            }
        }
        public static void UpdateOrder(string pageId, string position, string consoleId, string entityToken, string serializedOrder)
        {
            var page        = PageManager.GetPageById(new Guid(pageId));
            var pageTeasers = TeaserFacade.GetPageTeasers(page, position, false).ToList();

            UpdateOrder(pageTeasers, serializedOrder);

            var serializedEntityToken = HttpUtility.UrlDecode(entityToken);

            if (!String.IsNullOrEmpty(serializedEntityToken))
            {
                UpdateParents(serializedEntityToken, consoleId);
            }
        }
        public override void OnInitialize(object sender, EventArgs e)
        {
            var pageTeaserInstanceEntityToken = EntityToken as PageTeaserInstanceEntityToken;

            if (pageTeaserInstanceEntityToken != null)
            {
                Teaser = (T)pageTeaserInstanceEntityToken.Teaser;
            }
            else
            {
                var pageTeaserPositionFolderEntityToken = (PageTeaserPositionFolderEntityToken)EntityToken;
                var payload = StringConversionServices.ParseKeyValueCollection(Payload);

                var teaserType      = Type.GetType(StringConversionServices.DeserializeValue <string>(payload["teaserType"]));
                var name            = StringConversionServices.DeserializeValue <string>(payload["name"]);
                var existingTeasers = TeaserFacade.GetPageTeasers(pageTeaserPositionFolderEntityToken.Page).ToList();

                Teaser = (T)DataFacade.BuildNew(teaserType);

                Teaser.Name          = name;
                Teaser.Position      = pageTeaserPositionFolderEntityToken.Id;
                Teaser.LocalOrdering = existingTeasers.Any() ? existingTeasers.Max(t => t.LocalOrdering) + 1 : 1;
            }

            if (BindingExist("Label"))
            {
                return;
            }

            var page = PageManager.GetPageById(new Guid(EntityToken.Source));

            Bindings.Add("Label", Teaser.GetLabel());
            Bindings.Add("Positions", FormHelpers.GetPositions(page.TemplateId));

            Bindings.Add("Name", Teaser.Name);
            Bindings.Add("Position", Teaser.Position);
            Bindings.Add("AdditionalHeader", Teaser.AdditionalHeader);
            Bindings.Add("ShowOnDescendants", Teaser.ShowOnDescendants);
            Bindings.Add("PublishDate", Teaser.PublishDate);
            Bindings.Add("UnpublishDate", Teaser.UnpublishDate);

            LoadBindings();
        }
Example #7
0
        private static void HandlerPreInit(object sender, EventArgs e)
        {
            var iPage = PageRenderer.CurrentPage;

            if (iPage == null)
            {
                return;
            }

            using (var data = new DataConnection())
            {
                var pageTeasers         = TeaserFacade.GetPageTeasers(iPage, String.Empty, true).Select(t => new PageTeaserWrapper(t, 0)).ToList();
                var hideAncestorTeasers = false;

                var teaserSettings = data.Get <IPageTeaserSettings>().FirstOrDefault(f => f.PageId == iPage.Id);
                if (teaserSettings != null)
                {
                    hideAncestorTeasers = teaserSettings.HideAncestorTeasers;
                }

                if (!hideAncestorTeasers)
                {
                    var pageNode          = data.SitemapNavigator.CurrentPageNode;
                    var ancestorPageNodes = AncestorPageNodes(pageNode);
                    var descendingTeasers = TeaserFacade.GetPageTeasers().Where(f => f.ShowOnDescendants).ToList();

                    pageTeasers.AddRange(ancestorPageNodes
                                         .Join(descendingTeasers, a => a.Id, t => t.PageId, (a, t) => new PageTeaserWrapper(t, pageNode.Level - a.Level)).ToList());
                }

                foreach (var teaser in pageTeasers.Where(f => f.InterfaceType != typeof(IPageTeaserShared) && f.InterfaceType != typeof(IPageTeaserRandom)))
                {
                    TeaserFacade.PageTeasersForRequest.Add(new PageTeaserHolder(teaser));
                }

                var sharedTeasersInUse = new List <Guid>();

                foreach (var teaser in pageTeasers.Where(f => f.InterfaceType == typeof(IPageTeaserShared)))
                {
                    var pageTeaser     = (IPageTeaserShared)teaser.Teaser;
                    var sharedTeaserId = pageTeaser.SharedTeaserId;

                    if (sharedTeasersInUse.Contains(sharedTeaserId))
                    {
                        continue;
                    }

                    sharedTeasersInUse.Add(sharedTeaserId);

                    var sharedTeaserType = Type.GetType(pageTeaser.SharedTeaserType);
                    var instance         = DataFacade.GetData(sharedTeaserType).Cast <ISharedTeaser>().SingleOrDefault(t => t.Id == sharedTeaserId);

                    if (instance != null)
                    {
                        var teaserHolder = new PageTeaserHolder(pageTeaser.Position, instance.DesignName, sharedTeaserId, teaser);

                        TeaserFacade.PageTeasersForRequest.Add(teaserHolder);
                    }
                }

                //IPageTeaserRandom is transformed into IPageTeaserShared
                foreach (var teaser in pageTeasers.Where(f => f.InterfaceType == typeof(IPageTeaserRandom)))
                {
                    var pageTeaser  = (IPageTeaserRandom)teaser.Teaser;
                    var teaserGroup = pageTeaser.TeaserGroup;

                    var sharedTeasers = TeaserFacade.GetSharedTeasers(teaserGroup).Where(t => t.InclInRotation && !sharedTeasersInUse.Contains(t.Id)).ToList();
                    if (!sharedTeasers.Any())
                    {
                        continue;
                    }

                    var rand         = new Random();
                    var index        = rand.Next(sharedTeasers.Count());
                    var sharedTeaser = sharedTeasers[index];

                    sharedTeasersInUse.Add(sharedTeaser.Id);

                    var pageTeaserShared = data.CreateNew <IPageTeaserShared>();

                    pageTeaserShared.PageId           = pageTeaser.PageId;
                    pageTeaserShared.Name             = sharedTeaser.Name;
                    pageTeaserShared.LocalOrdering    = pageTeaser.LocalOrdering;
                    pageTeaserShared.Position         = pageTeaser.Position;
                    pageTeaserShared.AdditionalHeader = pageTeaser.AdditionalHeader;

                    pageTeaserShared.SharedTeaserType = sharedTeaser.DataSourceId.InterfaceType.AssemblyQualifiedName;
                    pageTeaserShared.SharedTeaserId   = sharedTeaser.Id;

                    var specificSharedTeaser = new PageTeaserWrapper(pageTeaserShared, 0);
                    var teaserHolder         = new PageTeaserHolder(pageTeaser.Position, sharedTeaser.DesignName, sharedTeaser.Id, specificSharedTeaser);

                    TeaserFacade.PageTeasersForRequest.Add(teaserHolder);
                }
            }
        }
 public static Dictionary <string, string> GetPageTeaserTypes()
 {
     return(TeaserFacade.GetPageTeaserTypes().ToDictionary(t => t.AssemblyQualifiedName, GetTitle));
 }
        private void AddTeaserInstances(EntityToken entityToken, List <Element> list, PageTeaserPositionFolderEntityToken folderToken)
        {
            var page      = PageManager.GetPageById(new Guid(entityToken.Source));
            var instances = TeaserFacade.GetPageTeasers(page, folderToken.Id, false);

            foreach (var instance in instances)
            {
                var attributes = instance.DataSourceId.InterfaceType.GetCustomAttributes(true).ToList();

                var icon       = new ResourceHandle("Composite.Icons", "dataassociation-rootfolder-closed");
                var openedIcon = new ResourceHandle("Composite.Icons", "dataassociation-rootfolder-open");

                var iconAttribute = attributes.OfType <IconAttribute>().FirstOrDefault();
                if (iconAttribute != null)
                {
                    icon = new ResourceHandle("Composite.Icons", iconAttribute.Name);

                    if (!String.IsNullOrEmpty(iconAttribute.OpenedName))
                    {
                        openedIcon = new ResourceHandle("Composite.Icons", iconAttribute.OpenedName);
                    }
                }

                var label = StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.NoLabel");
                try
                {
                    label = instance.GetLabel();
                }
                catch (Exception) { }

                var elementHandle = _context.CreateElementHandle(new PageTeaserInstanceEntityToken(page, instance));
                var teaserElement = new Element(elementHandle)
                {
                    VisualData = new ElementVisualizedData
                    {
                        Label       = label,
                        ToolTip     = label,
                        HasChildren = false,
                        Icon        = icon,
                        OpenedIcon  = openedIcon
                    }
                };

                var editWorkflowAttribute = attributes.OfType <EditWorkflowAttribute>().FirstOrDefault();
                if (editWorkflowAttribute != null)
                {
                    var editActionToken = new WorkflowActionToken(editWorkflowAttribute.EditWorkflowType, new[] { PermissionType.Edit });
                    teaserElement.AddAction(new ElementAction(new ActionHandle(editActionToken))
                    {
                        VisualData = new ActionVisualizedData
                        {
                            Label          = StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.Edit.Label"),
                            ToolTip        = StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.Edit.ToolTip"),
                            Icon           = new ResourceHandle("Composite.Icons", "generated-type-data-edit"),
                            ActionLocation = ActionLocation
                        }
                    });
                }

                var deleteActionToken = new ConfirmWorkflowActionToken(StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.DeleteItem") + label, typeof(DeletePageTeaserActionToken));
                teaserElement.AddAction(new ElementAction(new ActionHandle(deleteActionToken))
                {
                    VisualData = new ActionVisualizedData
                    {
                        Label          = StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.Delete.Label"),
                        ToolTip        = StringResourceSystemFacade.GetString("CompositeC1Contrib.Teasers", "TeaserElementAttachingProvider.Delete.ToolTip"),
                        Icon           = new ResourceHandle("Composite.Icons", "generated-type-data-delete"),
                        ActionLocation = ActionLocation
                    }
                });

                list.Add(teaserElement);
            }
        }