Esempio n. 1
0
        protected override void CreateChildControls()
        {
            if (Cacheable && CanCache && IsInCache)
            {
                return;
            }

            if (ShowExecutionTime)
            {
                Timer.Start();
            }

            Content   rootContent      = null;
            Exception controlException = null;

            try
            {
                rootContent = GetModel() as Content;
                if (rootContent != null)
                {
                    rootContent.ChildrenDefinition.AllChildren = AllChildren;
                }
            }
            catch (Exception ex)
            {
                SnLog.WriteException(ex);
                controlException = ex;
            }

            var model = new ContentCollectionViewModel {
                State = this.State
            };

            try
            {
                var childCount = 0;
                if (rootContent != null)
                {
                    try
                    {
                        childCount = rootContent.Children.Count();
                    }
                    catch (Exception ex)
                    {
                        SnLog.WriteException(ex);
                        if (controlException == null)
                        {
                            controlException = ex;
                        }
                    }
                }

                try
                {
                    model.Pager = GetPagerModel(childCount, State, string.Empty);
                }
                catch (Exception ex)
                {
                    SnLog.WriteException(ex);
                    if (controlException == null)
                    {
                        controlException = ex;
                    }

                    // in case of error, set dummy pager model
                    model.Pager = new PagerModel(0, State, string.Empty);
                }

                model.ReferenceAxisName = CollectionAxis == CollectionAxisMode.ReferenceProperty ? ReferenceAxisName : null;
                model.Content           = rootContent;

                if (RenderingMode == RenderMode.Xslt)
                {
                    XmlModelData = model.ToXPathNavigator();
                }
                else if (RenderingMode == RenderMode.Ascx || RenderingMode == RenderMode.Native)
                {
                    // the Renderer property may contain a skin-relative path
                    var viewPath = RenderingMode == RenderMode.Native
                                       ? "/root/Global/Renderers/ContentCollectionView.ascx"
                                       : SkinManager.Resolve(Renderer);

                    Control presenter = null;

                    try
                    {
                        var viewHead = NodeHead.Get(viewPath);
                        if (viewHead != null && SecurityHandler.HasPermission(viewHead, PermissionType.RunApplication))
                        {
                            presenter = Page.LoadControl(viewPath);
                        }

                        // we may display a message if the user does not have enough permissions for the view
                    }
                    catch (Exception ex)
                    {
                        SnLog.WriteException(ex);
                        if (controlException == null)
                        {
                            controlException = ex;
                        }
                    }

                    if (presenter != null)
                    {
                        var ccView = presenter as ContentCollectionView;
                        if (ccView != null)
                        {
                            ccView.Model = model;
                        }

                        if (rootContent != null)
                        {
                            var itemlist = presenter.FindControl(ContentListID);
                            if (itemlist != null)
                            {
                                try
                                {
                                    ContentQueryPresenterPortlet.DataBindingHelper.SetDataSourceAndBind(itemlist,
                                                                                                        rootContent.Children);
                                }
                                catch (Exception ex)
                                {
                                    SnLog.WriteException(ex);
                                    if (controlException == null)
                                    {
                                        controlException = ex;
                                    }
                                }
                            }
                        }

                        var itemPager = presenter.FindControl("ContentListPager");
                        if (itemPager != null)
                        {
                            try
                            {
                                ContentQueryPresenterPortlet.DataBindingHelper.SetDataSourceAndBind(itemPager,
                                                                                                    model.Pager.PagerActions);
                            }
                            catch (Exception ex)
                            {
                                SnLog.WriteException(ex);
                                if (controlException == null)
                                {
                                    controlException = ex;
                                }
                            }
                        }

                        Controls.Clear();
                        Controls.Add(presenter);
                    }
                }
            }
            catch (Exception ex)
            {
                SnLog.WriteException(ex);
                if (controlException == null)
                {
                    controlException = ex;
                }
            }

            try
            {
                if (controlException != null)
                {
                    BuildErrorMessage(controlException);
                }
            }
            catch (Exception ex)
            {
                var errorText = SR.GetString(SR.Portlets.ContentCollection.ErrorLoadingContentView, HttpUtility.HtmlEncode(ex.Message));

                this.Controls.Clear();
                this.Controls.Add(new LiteralControl(errorText));
            }

            ChildControlsCreated = true;

            if (ShowExecutionTime)
            {
                Timer.Stop();
            }
        }
        protected override void CreateChildControls()
        {
            if (Cacheable && CanCache && IsInCache)
                return;

            if (ShowExecutionTime)
                Timer.Start();

            Content modelData;
            try
            {
                modelData = GetModel() as Content;
            }
            catch (Exception ex)
            {
                Logger.WriteException(ex);
                Controls.Clear();
                Controls.Add(new LiteralControl("ContentView error: " + ex.Message));

                if (ShowExecutionTime)
                    Timer.Stop();

                return;
            }

            var rootContent = modelData as Content;
            if (rootContent != null) rootContent.AllChildren = AllChildren;

            var model = new ContentCollectionViewModel { State = this.State };

            try
            {
                var childCount = rootContent != null ? rootContent.ChildCount : 0;
                model.Pager = GetPagerModel(childCount, State, string.Empty);
                model.ReferenceAxisName = CollectionAxis == CollectionAxisMode.ReferenceProperty ? ReferenceAxisName : null;

                if (RenderingMode == RenderMode.Xslt)
                {
                    try
                    {
                        XmlModelData = model.ToXPathNavigator();
                    }
                    catch (Exception ex)
                    {
                        Logger.Write(ex.ToString());
                        Logger.WriteException(ex);
                    }
                }
                else if (RenderingMode == RenderMode.Ascx || RenderingMode == RenderMode.Native)
                {
                    model.Content = rootContent;

                    var viewPath = RenderingMode == RenderMode.Native
                                       ? "/root/Global/Renderers/ContentCollectionView.ascx"
                                       : Renderer;
                    Controls.Clear();

                    try
                    {
                        var presenter = Page.LoadControl(viewPath);
                        if (presenter is ContentCollectionView)
                        {
                            ((ContentCollectionView)presenter).Model = model;
                        }
                        if (rootContent != null)
                        {
                            var itemlist = presenter.FindControl(ContentListID);
                            if (itemlist != null)
                            {
                                ContentQueryPresenterPortlet.DataBindingHelper.SetDataSourceAndBind(itemlist,
                                                                                                    rootContent.Children);
                            }
                        }

                        var itemPager = presenter.FindControl("ContentListPager");
                        if (itemPager != null)
                        {
                            ContentQueryPresenterPortlet.DataBindingHelper.SetDataSourceAndBind(itemPager,
                                                                                                model.Pager.PagerActions);
                        }

                        Controls.Add(presenter);
                    }
                    catch (Exception ex)
                    {
                        Logger.WriteException(ex);

                        Controls.Clear();
                        Controls.Add(new LiteralControl("Please select a content view"));
                    }
                }
            }
            catch (ParserException ex)
            {
                var errorText = new LiteralControl { Text = ex.Message };
                Controls.Add(errorText);
            }
            catch (Exception ex)
            {
                var errorText = new LiteralControl { Text = ex.ToString() };
                Controls.Add(errorText);
            }
            ChildControlsCreated = true;

            if (ShowExecutionTime)
                Timer.Stop();
        }
        protected override void CreateChildControls()
        {
            if (Cacheable && CanCache && IsInCache)
            {
                return;
            }

            if (ShowExecutionTime)
            {
                Timer.Start();
            }

            Content modelData;

            try
            {
                modelData = GetModel() as Content;
            }
            catch (Exception ex)
            {
                Logger.WriteException(ex);
                Controls.Clear();
                Controls.Add(new LiteralControl("ContentView error: " + ex.Message));

                if (ShowExecutionTime)
                {
                    Timer.Stop();
                }

                return;
            }

            var rootContent = modelData as Content;

            if (rootContent != null)
            {
                rootContent.AllChildren = AllChildren;
            }

            var model = new ContentCollectionViewModel {
                State = this.State
            };

            try
            {
                var childCount = rootContent != null ? rootContent.ChildCount : 0;
                model.Pager             = GetPagerModel(childCount, State, string.Empty);
                model.ReferenceAxisName = CollectionAxis == CollectionAxisMode.ReferenceProperty ? ReferenceAxisName : null;

                if (RenderingMode == RenderMode.Xslt)
                {
                    try
                    {
                        XmlModelData = model.ToXPathNavigator();
                    }
                    catch (Exception ex)
                    {
                        Logger.Write(ex.ToString());
                        Logger.WriteException(ex);
                    }
                }
                else if (RenderingMode == RenderMode.Ascx || RenderingMode == RenderMode.Native)
                {
                    model.Content = rootContent;

                    var viewPath = RenderingMode == RenderMode.Native
                                       ? "/root/Global/Renderers/ContentCollectionView.ascx"
                                       : Renderer;
                    Controls.Clear();

                    try
                    {
                        var presenter = Page.LoadControl(viewPath);
                        if (presenter is ContentCollectionView)
                        {
                            ((ContentCollectionView)presenter).Model = model;
                        }
                        if (rootContent != null)
                        {
                            var itemlist = presenter.FindControl(ContentListID);
                            if (itemlist != null)
                            {
                                ContentQueryPresenterPortlet.DataBindingHelper.SetDataSourceAndBind(itemlist,
                                                                                                    rootContent.Children);
                            }
                        }

                        var itemPager = presenter.FindControl("ContentListPager");
                        if (itemPager != null)
                        {
                            ContentQueryPresenterPortlet.DataBindingHelper.SetDataSourceAndBind(itemPager,
                                                                                                model.Pager.PagerActions);
                        }

                        Controls.Add(presenter);
                    }
                    catch (Exception ex)
                    {
                        Logger.WriteException(ex);

                        Controls.Clear();
                        Controls.Add(new LiteralControl("Please select a content view"));
                    }
                }
            }
            catch (ParserException ex)
            {
                var errorText = new LiteralControl {
                    Text = ex.Message
                };
                Controls.Add(errorText);
            }
            catch (Exception ex)
            {
                var errorText = new LiteralControl {
                    Text = ex.ToString()
                };
                Controls.Add(errorText);
            }
            ChildControlsCreated = true;

            if (ShowExecutionTime)
            {
                Timer.Stop();
            }
        }