public void Read(PageHeaderSettings settings, IUnitOfWork unitOfWork = null)
        {
            IDatabaseManager dbm = _databaseManagerFactory.GetDatabaseManager(unitOfWork);

            try
            {
                string sql = _sqlManager.GetSql("Sql.ReadPageHeader.sql");
                dbm.SetSQL(sql);
                dbm.AddParameter("@TenantId", FieldType.BigInt, settings.TenantId);
                dbm.AddParameter("@ElementId", FieldType.BigInt, settings.ElementId);
                dbm.ExecuteReader();
                dbm.Read();
                settings.PageTenantId    = dbm.DataReaderValue("PageTenantId") == DBNull.Value ? null : (long?)dbm.DataReaderValue("PageTenantId");
                settings.PageId          = dbm.DataReaderValue("PageId") == DBNull.Value ? null : (long?)dbm.DataReaderValue("PageId");
                settings.ShowName        = (bool)dbm.DataReaderValue("ShowName");
                settings.ShowDescription = (bool)dbm.DataReaderValue("ShowDescription");
                settings.ShowImage       = (bool)dbm.DataReaderValue("ShowImage");
                settings.ShowCreated     = (bool)dbm.DataReaderValue("ShowCreated");
                settings.ShowUpdated     = (bool)dbm.DataReaderValue("ShowUpdated");
                settings.ShowOccurred    = (bool)dbm.DataReaderValue("ShowOccurred");
                settings.ShowBreadcrumbs = (bool)dbm.DataReaderValue("ShowBreadcrumbs");
            }
            finally
            {
                if (unitOfWork == null)
                {
                    dbm.Dispose();
                }
            }
        }
        public void Create(PageHeaderSettings settings, IUnitOfWork unitOfWork = null)
        {
            IDatabaseManager dbm = _databaseManagerFactory.GetDatabaseManager(unitOfWork);

            try
            {
                string sql = _sqlManager.GetSql("Sql.CreatePageHeader.sql");
                dbm.SetSQL(sql);
                dbm.AddParameter("@TenantId", FieldType.BigInt, settings.TenantId);
                dbm.AddParameter("@ElementId", FieldType.BigInt, settings.ElementId);
                dbm.AddParameter("@PageTenantId", FieldType.BigInt, settings.PageTenantId ?? (object)DBNull.Value);
                dbm.AddParameter("@PageId", FieldType.BigInt, settings.PageId ?? (object)DBNull.Value);
                dbm.AddParameter("@ShowName", FieldType.Bit, settings.ShowName);
                dbm.AddParameter("@ShowDescription", FieldType.Bit, settings.ShowDescription);
                dbm.AddParameter("@ShowImage", FieldType.Bit, settings.ShowImage);
                dbm.AddParameter("@ShowCreated", FieldType.Bit, settings.ShowCreated);
                dbm.AddParameter("@ShowUpdated", FieldType.Bit, settings.ShowUpdated);
                dbm.AddParameter("@ShowOccurred", FieldType.Bit, settings.ShowOccurred);
                dbm.AddParameter("@ShowBreadcrumbs", FieldType.Bit, settings.ShowBreadcrumbs);
                dbm.ExecuteNonQuery();
            }
            finally
            {
                if (unitOfWork == null)
                {
                    dbm.Dispose();
                }
            }
        }
        public FormResult PostForm(Form form)
        {
            try
            {
                // Check permissions
                _authorizationService.AuthorizeUserForFunction(Functions.UpdatePageElements);

                // Get page and element identifiers
                string[] parts     = form.Context.Split('|');
                long     pageId    = Convert.ToInt64(parts[0]);
                long     elementId = Convert.ToInt64(parts[1]);

                // Get website identifier
                long tenantId = _authenticationService.TenantId;

                // Get page header page
                string pageValue          = ((SelectListField <string>)form.Fields["page"]).Value;
                long?  pageHeaderPageId   = pageValue == string.Empty ? null : (long?)Convert.ToInt64(((SelectListField <string>)form.Fields["page"]).Value);
                long?  pageHeaderTenantId = pageHeaderPageId.HasValue ? (long?)tenantId : null;

                // Get the page header element service
                IAdvancedElementService elementService = (IAdvancedElementService)_elementFactory.GetElementService(FormId);

                // Get updated page header settings
                PageHeaderSettings pageHeaderSettings = (PageHeaderSettings)elementService.New(_authenticationService.TenantId);
                pageHeaderSettings.ElementId       = elementId;
                pageHeaderSettings.PageId          = pageHeaderPageId;
                pageHeaderSettings.PageTenantId    = pageHeaderTenantId;
                pageHeaderSettings.ShowCreated     = ((BooleanField)form.Fields["showCreated"]).Value;
                pageHeaderSettings.ShowDescription = ((BooleanField)form.Fields["showDescription"]).Value;
                pageHeaderSettings.ShowImage       = ((BooleanField)form.Fields["showImage"]).Value;
                pageHeaderSettings.ShowName        = ((BooleanField)form.Fields["showName"]).Value;
                pageHeaderSettings.ShowOccurred    = ((BooleanField)form.Fields["showOccurred"]).Value;
                pageHeaderSettings.ShowUpdated     = ((BooleanField)form.Fields["showUpdated"]).Value;
                pageHeaderSettings.ShowBreadcrumbs = ((BooleanField)form.Fields["showBreadcrumbs"]).Value;

                // Perform the update
                elementService.Update(pageHeaderSettings);

                // Return form result with no errors
                return(_formHelperService.GetFormResult());
            }
            catch (ValidationErrorException ex)
            {
                // Return form result containing errors
                return(_formHelperService.GetFormResultWithValidationErrors(ex.Errors));
            }
            catch (Exception)
            {
                // Return form result containing unexpected error message
                return(_formHelperService.GetFormResultWithErrorMessage(ApplicationResource.UnexpectedErrorMessage));
            }
        }
Exemplo n.º 4
0
        public IElementContent GetContent(IElementSettings settings, IPageContext pageContext, IUnitOfWork unitOfWork = null)
        {
            // Construct element content
            PageHeaderContent pageHeaderContent = new PageHeaderContent();

            pageHeaderContent.PartialViewName = "PageHeader";

            // Populate element content page according to element settings
            PageHeaderSettings pageHeaderSettings = (PageHeaderSettings)settings;

            if ((pageHeaderSettings.PageId == null) || (pageHeaderSettings.PageId.Value == pageContext.Page.PageId))
            {
                pageHeaderContent.Page = pageContext.Page;
            }
            else
            {
                pageHeaderContent.Page = _pageService.Read(pageHeaderSettings.PageTenantId.Value, pageHeaderSettings.PageId.Value, unitOfWork);
            }

            // Populate element content breadcrumb navigation according to element settings
            if (pageHeaderSettings.ShowBreadcrumbs)
            {
                Page pageHierarchy = null;
                if ((pageHeaderSettings.PageId == null) || (pageHeaderSettings.PageId.Value == pageContext.Page.PageId))
                {
                    pageHierarchy = pageContext.Hierarchy;
                }
                else
                {
                    pageHierarchy = _pageService.ReadHierarchy(pageHeaderSettings.PageTenantId.Value, pageHeaderSettings.PageId.Value, unitOfWork);
                }
                pageHeaderContent.PageHierarchyPageLinks = GetPageHierarchyPageLinks(pageHierarchy);
            }

            // Return resulting element content
            return(pageHeaderContent);
        }
        public Form GetForm(string context)
        {
            // Check permissions
            _authorizationService.AuthorizeUserForFunction(Functions.UpdatePageElements);

            // Get page and element identifiers
            string[] parts     = context.Split('|');
            long     pageId    = Convert.ToInt64(parts[0]);
            long     elementId = Convert.ToInt64(parts[1]);

            // Get current page header settings
            Guid elementTypeId = FormId;
            IAdvancedElementService elementService     = (IAdvancedElementService)_elementFactory.GetElementService(elementTypeId);
            PageHeaderSettings      pageHeaderSettings = (PageHeaderSettings)elementService.New(_authenticationService.TenantId);

            pageHeaderSettings.ElementId = elementId;
            elementService.Read(pageHeaderSettings);

            // Get possible pages for page header
            long tenantId = _authenticationService.TenantId;
            ISearchParameters searchParameters = new SearchParameters {
                PageIndex = 0, PageSize = 1000
            };                                                                                            // TODO: Need way to return all pages, not have some max bound upper limit
            ISearchResult <Page> folderResult        = _pageService.List(tenantId, searchParameters, null, PageSortBy.Name, true, true, PageType.Folder, false);
            ISearchResult <Page> documentResult      = _pageService.List(tenantId, searchParameters, null, PageSortBy.Name, true, true, PageType.Document, false);
            IEnumerable <Page>   foldersAndDocuments = folderResult.Items.Concat(documentResult.Items).OrderBy(p => p.Name);

            // Construct form
            Form form = new Form {
                Fields = new Dictionary <string, IFormField>(), Id = FormId.ToString(), Context = context
            };

            form.Fields.Add("showName", new BooleanField
            {
                Name  = "showName",
                Label = ElementResource.PageHeaderShowNameLabel,
                Value = pageHeaderSettings.ShowName
            });
            form.Fields.Add("showDescription", new BooleanField
            {
                Name  = "showDescription",
                Label = ElementResource.PageHeaderShowDescriptionLabel,
                Value = pageHeaderSettings.ShowDescription
            });
            form.Fields.Add("showImage", new BooleanField
            {
                Name  = "showImage",
                Label = ElementResource.PageHeaderShowImageLabel,
                Value = pageHeaderSettings.ShowImage
            });
            form.Fields.Add("showCreated", new BooleanField
            {
                Name  = "showCreated",
                Label = ElementResource.PageHeaderShowCreatedLabel,
                Value = pageHeaderSettings.ShowCreated
            });
            form.Fields.Add("showUpdated", new BooleanField
            {
                Name  = "showUpdated",
                Label = ElementResource.PageHeaderShowUpdatedLabel,
                Value = pageHeaderSettings.ShowUpdated
            });
            form.Fields.Add("showOccurred", new BooleanField
            {
                Name  = "showOccurred",
                Label = ElementResource.PageHeaderShowOccurredLabel,
                Value = pageHeaderSettings.ShowUpdated
            });
            form.Fields.Add("showBreadcrumbs", new BooleanField
            {
                Name  = "showBreadcrumbs",
                Label = ElementResource.PageHeaderShowBreadcrumbsLabel,
                Value = pageHeaderSettings.ShowBreadcrumbs
            });
            form.Fields.Add("page", new SelectListField <string>
            {
                Name  = "page",
                Label = ElementResource.PageHeaderPageLabel,
                Value = pageHeaderSettings.PageId == null ? string.Empty : pageHeaderSettings.PageId.Value.ToString(),
                Items = new List <ListFieldItem <string> > {
                    new ListFieldItem <string> {
                        Name = ElementResource.PageDefaultOption, Value = string.Empty
                    }
                }
            });
            foreach (Page page in foldersAndDocuments)
            {
                ((SelectListField <string>)form.Fields["page"]).Items.Add(new ListFieldItem <string> {
                    Name = page.Name, Value = page.PageId.ToString()
                });
            }
            form.SubmitLabel = ElementResource.PageHeaderButtonLabel;

            // Return result
            return(form);
        }