示例#1
0
        public ActionResult ShowIndexedDetails(string partitionkey, string rowkey)
        {
            if (rowkey == null || partitionkey == null)
            {
                return(View());
            }
            if (!(partitionkey.Any() || rowkey.Any()))
            {
                return(View());
            }
            CloudTable websitePageMasterTable = tableClient.GetTableReference("WebsitePageMasterTable");

            websitePageMasterTable.CreateIfNotExistsAsync();

            TableQuery <WebsitePage> query = new TableQuery <WebsitePage>().Where(
                TableQuery.CombineFilters(
                    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionkey),
                    TableOperators.And,
                    TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, rowkey)
                    )
                ).Take(1);
            var         queryResult = websitePageMasterTable.ExecuteQuery(query);
            WebsitePage result      = queryResult.FirstOrDefault();

            return(View(result));
        }
        public void SaveNewBlog(EditWebsitePageAdminViewModel blog)
        {
            var path            = "~/DynamicContent/BlogImages";
            var pathToSave      = "DynamicContent/BlogImages";
            var imageNameToSave = "";

            if (blog.File != null)
            {
                imageNameToSave = blog.File.FileName;
                blog.File.SaveAs(Path.Combine(Server.MapPath(path), blog.File.FileName));
            }
            var blogDb = new WebsitePage()
            {
                DateAdded       = DateTime.Now,
                Content1        = blog.Content1,
                isBlogPost      = true,
                MetaKeywords    = blog.MetaKeywords,
                MetaDescription = blog.MetaDescription,
                MenuName        = blog.MenuName,
                PageTitle       = blog.MenuName,
                Template        = "BlogPostTemplate",
                isHidden        = blog.isHidden,
                MenuId          = 1,
                ImageName       = imageNameToSave,
                ImagePath       = pathToSave
            };


            _unitOfWork.WebsitePages.AddPage(blogDb);
            _unitOfWork.Complete();
        }
示例#3
0
        public void CreatePreview()
        {
            WebsitePage createdPreviewPage = CreatePreviewPage();

            WebsitePageTranslation createdPreviewPagePl  = CreatePreviewPolishTranslation(createdPreviewPage);
            WebsitePageTranslation createdPreviewPageEng = CreatePreviewEnglishTranslation(createdPreviewPage);
        }
 public WebsitePageModel(WebsitePage websitePage, bool isModified)
 {
     WebsitePages = new List <WebsitePage>()
     {
         websitePage
     };
     IsModified = isModified;
 }
示例#5
0
        private void CreateANewPage(string name, int navigationIndex, bool isActive = true)
        {
            var newPage = new WebsitePage()
            {
                Name            = name,
                IsActive        = isActive,
                NavigationIndex = navigationIndex
            };

            _context.WebsitePages.Add(newPage);
            _context.SaveChanges();
        }
示例#6
0
        public IHttpActionResult AddNewWebsitePage(WebsitePage websitePage)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _unitOfWork.WebsitePages.AddPage(websitePage);
            _unitOfWork.Complete();

            return(CreatedAtRoute("DefaultApi", new { id = websitePage.Id }, websitePage));
        }
        public ActionResult Services()
        {
            WebsitePage website = new WebsitePage
            {
                HeaderPage = new HeaderPage {
                    Main = "Services ", Content = "GO’s Signature advantage offers High Def Digital Marketing with a robust portfolio including: "
                }
            };

            ViewBag.Website = website;
            return(View());
        }
示例#8
0
        private WebsitePage CreatePreviewPage()
        {
            var preview = new WebsitePage()
            {
                Name     = PreviewPageName,
                IsActive = true,
            };

            _context.WebsitePages.Add(preview);
            _context.SaveChanges();

            return(_context.WebsitePages.Single(p => p.Name == PreviewPageName));
        }
        public async Task <ActionResult> About()
        {
            WebsitePage website = new WebsitePage
            {
                HeaderPage = new HeaderPage {
                    Main = "About Us ", Content = "GO is an award-winning digital agency, specializing in high scale performance marketing \r\n and eCommerce for global brands. \r\n" +
                                                  "We offer a full in-house digital solution and services. From initial strategy, building high converting eCommerce websites, mobile apps, managing Amazon stores and as well as up to Complex performance managing accounts across all digital media channels including dip level data analysis and conversion rate optimization for ultimate business results!\r\n"
                }
            };

            ViewBag.Website = website;
            return(View());
        }
示例#10
0
        private void CreateANewPageTranslation(WebsitePage page, Language language, string title,
                                               string navigationTabName)
        {
            var newPageTranslation = new WebsitePageTranslation()
            {
                Language            = language,
                WebsitePage         = page,
                Title               = title,
                NameInNavigationBar = navigationTabName
            };

            _context.WebsitePageTranslations.Add(newPageTranslation);
            _context.SaveChanges();
        }
示例#11
0
 private async Task PushErrorPageObject(string url, string errorTag, string errorDetails)
 {
     WebsitePage page = new WebsitePage
     {
         PartitionKey = errorTag,
         RowKey       = Generate256HashCode(url),
         Url          = url,
         ErrorDetails = errorDetails,
         ErrorTag     = errorTag,
         Title        = errorTag
     };
     TableOperation insertOrMerge = TableOperation.InsertOrMerge(page);
     await errorTable.ExecuteAsync(insertOrMerge);
 }
示例#12
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            WebsitePage = await _context.WebsitePages.FirstOrDefaultAsync(m => m.WebsitePageId == id);

            if (WebsitePage == null)
            {
                return(NotFound());
            }
            return(Page());
        }
        public void Navigate_Should_Try_To_Get_Page_From_Cache()
        {
            // Arrange
            var websitePage = new WebsitePage();

            _pageCachingService.Setup(x => x.GetPage <MenuPage>()).Returns(new MenuPage());
            //_pageCachingService.Setup(x => x.GetPage<SplashPage>()).Returns(new SplashPage());
            _pageCachingService.Setup(x => x.GetPage <WebsitePage>()).Returns(websitePage);
            service.GetMainPage();

            // Act
            service.Navigate <WebsitePage>();

            // Assert
            _pageCachingService.Verify(x => x.GetPage <WebsitePage>(), Times.Once);
        }
示例#14
0
        public async Task <ActionResult> Index()
        {
            //var pages = await GoWebsiteCache.GetWebsitePages();
            //var homePage = pages.SingleOrDefault(x => x.IsHomePage && x.Language == Language.Hebrew);

            WebsitePage website = new WebsitePage
            {
                HeaderPage = new HeaderPage {
                    Content = "GO Digital Marketing is an award-winning digital agency," +
                              " \r\nspecializing in high scale performance marketing  and eCommerce for global brands "
                }
            };

            ViewBag.Website = website;
            return(View());
        }
示例#15
0
        private void InternalPreviewWebsitePage(WebsitePage previewWebsitePage)
        {
            try
            {
                //	Save data to DB so WebsiteGenerator can pick up changes.
                CommitToCurrentWebsite();
                Save();

                //	Generate CMSZoneEntities.js file; also disable navigation.
                using (ApplicationCursor.SetCursor(Cursors.Wait))
                {
                    EventAggregator.GetEvent <DisableNavigationEvent>()
                    .Publish(new DisableNavigationEvent {
                        DisableUIElements = true
                    });
                    Generator.Publish(CurrentWebsite, PublishTask.BaseCMSZoneOnly);
                    EventAggregator.GetEvent <DisableNavigationEvent>()
                    .Publish(new DisableNavigationEvent {
                        DisableUIElements = false
                    });
                }

                //	Compute url to navigate to.
                var urlAudience = SelectedEditAudienceType == Audience.Consumers ? "consumer" : "professional";
                var urlPage     = previewWebsitePage.Url.StartsWith("/") ? previewWebsitePage.Url.Substring(1) : previewWebsitePage.Url;
                var previewUrl  =                   //"http://www.google.com"
                                  String.Format(
                    "file:///{0}/index.html#/{1}/{2}",
                    CurrentWebsite.OutPutDirectory.Replace("\\", "/").Trim(),
                    urlAudience,
                    urlPage);

                //	Show WebBrowser window and navigate to the correct page.
                WebBrowserProxy.NavigateTo(previewUrl);
                WebsitePagesEditView.HideEditors();
                IsPreviewWebBrowserOpen = true;
                WebBrowserProxy.Refresh();
            }
            catch (System.Runtime.InteropServices.COMException comEx)
            {
            }
            catch (Exception exc)
            {
                Logger.Write(exc);
            }
        }
示例#16
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            WebsitePage = await _context.WebsitePages.FindAsync(id);

            if (WebsitePage != null)
            {
                _context.WebsitePages.Remove(WebsitePage);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
        public void Navigate_Should_Change_The_Detail_To_The_NavigatedTo_Page()
        {
            // Arrange
            var websitePage = new WebsitePage();

            _pageCachingService.Setup(x => x.GetPage <MenuPage>()).Returns(new MenuPage());
            //_pageCachingService.Setup(x => x.GetPage<SplashPage>()).Returns(new SplashPage());
            _pageCachingService.Setup(x => x.GetPage <WebsitePage>()).Returns(websitePage);
            var mainPage = service.GetMainPage();

            // Act
            service.Navigate <WebsitePage>();

            // Assert
            mainPage.Detail.ShouldBeType(typeof(NavigationPage));
            ((NavigationPage)mainPage.Detail).CurrentPage.ShouldEqual(websitePage);
        }
示例#18
0
        private void CreateControlHierarchy()
        {
            WebsitePage websitePage          = null;
            Control     controlLayout        = null;
            Control     controlLayoutContent = null;
            string      currentPage          = "";

            currentPage = this.Page.AppRelativeVirtualPath.Replace(".aspx", "").Replace("~/", "");
            websitePage = DataProvider.SelectSingle <WebsitePage>(new WebsitePage()
            {
                PageName  = currentPage,
                WebsiteID = this.Website.WebsiteID
            }, this.Website.WebsiteConnection.ConnectionString);

            if (string.IsNullOrEmpty(websitePage.ModalLayout) == false)
            {
                controlLayout = this.Page.LoadControl(@"/Resource/Layouts/" + websitePage.ModalLayout);

                controlLayoutContent = controlLayout.FindControl("ProviderBaseFramework_Modal");

                if (controlLayoutContent != null)
                {
                    List <string> loadedTemplates = null;

                    loadedTemplates = new List <string>();

                    foreach (WebsitePage websitePageItem in this.WebsitePageList)
                    {
                        if (string.IsNullOrEmpty(websitePageItem.HtmlModalTemplate) == false && loadedTemplates.Contains(websitePageItem.HtmlModalTemplate) == false)
                        {
                            SimpleModalControl simpleModalControl = null;

                            simpleModalControl             = new SimpleModalControl();
                            simpleModalControl.WebsitePage = websitePageItem;

                            controlLayoutContent.Controls.Add(simpleModalControl);

                            loadedTemplates.Add(websitePageItem.HtmlModalTemplate);
                        }
                    }

                    this.Controls.Add(controlLayoutContent);
                }
            }
        }
示例#19
0
        private void InternalPreviewWebsitePage(WebsitePage activeWebsitePage)
        {
            if (activeWebsitePage == null)
            {
                return;
            }

            var ahrqMonahrqDemoSiteUrl = MonahrqConfiguration.SettingsGroup.MonahrqSettings().MonahrqDemoSiteUrl;
            var urlAudience            = activeWebsitePage.Audience == Audience.Consumers ? "consumer" : "professional";
            var urlPage = activeWebsitePage.Url.StartsWith("/") ? activeWebsitePage.Url.Substring(1) : activeWebsitePage.Url;

            PreviewDemoUrl = String.Format("{0}/{1}/{2}",
                                           ahrqMonahrqDemoSiteUrl,
                                           urlAudience,
                                           urlPage);

            IsPreviewDemoOpen = true;
        }
示例#20
0
        private async Task CreateTranslationInDefaultLanguage(WebsitePage websitePage)
        {
            Language defaultLanguage = await _context.Languages.SingleAsync(x => x.ISOCode == DefaultVariables.DefaultLanguageIsoCode);

            WebsitePageTranslation defaultTranslation = new WebsitePageTranslation()
            {
                Language            = defaultLanguage,
                LanguageId          = defaultLanguage.LanguageId,
                NameInNavigationBar = websitePage.Name,
                Title         = websitePage.Name,
                WebsitePage   = websitePage,
                WebsitePageId = websitePage.WebsitePageId,
            };

            _context.WebsitePageTranslations.Add(defaultTranslation);

            await _context.SaveChangesAsync();
        }
        public void Navigate_Should_Still_Use_Previous_Navigation_Page_When()
        {
            // Arrange
            var websitePage = new WebsitePage();

            _pageCachingService.Setup(x => x.GetPage <MenuPage>()).Returns(new MenuPage());
            //_pageCachingService.Setup(x => x.GetPage<SplashPage>()).Returns(new SplashPage());
            _pageCachingService.Setup(x => x.GetPage <WebsitePage>()).Returns(websitePage);

            service.GetMainPage();
            service.Navigate <WebsitePage>();

            // Act
            service.Navigate <WebsitePage>();

            // Assert
            _pageCachingService.Verify(x => x.GetPage <WebsitePage>(), Times.Exactly(2));
        }
示例#22
0
        public void AddPage(WebsitePage page)
        {
            string pageUrlToSave = Helpers.UrlCleaner.CleanUrl(page.MenuName);

            if (GetPageByUrl(pageUrlToSave) != null)
            {
                int randNumber = (new Random()).Next(100, 1000);
                pageUrlToSave = pageUrlToSave + randNumber.ToString();
            }
            if (page.ParentId > 0)
            {
                page.PageUrl = GetPageById(page.ParentId).PageUrl + pageUrlToSave + "/";
            }
            else
            {
                page.PageUrl = "/" + pageUrlToSave + "/";
            }

            _ctx.WebsitePages.Add(page);
        }
示例#23
0
        private WebsitePageTranslation CreatePreviewPolishTranslation(WebsitePage previewPage)
        {
            var polishLanguage =
                _context.Languages.Single(language => language.ISOCode == GlobalVariables.PolishLanguageIsoCode);

            var preview = new WebsitePageTranslation()
            {
                NameInNavigationBar = PreviewPolishTranslationNameInNavigationBar,
                Title         = PreviewPolishTranslationTitle,
                LanguageId    = polishLanguage.LanguageId,
                Language      = polishLanguage,
                WebsitePage   = previewPage,
                WebsitePageId = previewPage.WebsitePageId
            };

            _context.WebsitePageTranslations.Add(preview);
            _context.SaveChanges();

            return(_context.WebsitePageTranslations.Single(p => p.Title == PreviewPolishTranslationTitle));
        }
示例#24
0
    public bool SavePages(Guid userid, string username, string pagename, string websitename)
    {
        int         websiteid = GetWebsiteId(userid, username, websitename);
        WebsitePage sp        = new WebsitePage();

        sp.UserId    = userid;
        sp.PageName  = pagename;
        sp.Username  = username;
        sp.CreatedBy = username;
        sp.CreatedOn = DateTime.Now;
        sp.UpdatedBy = username;
        sp.UpdatedOn = DateTime.Now;
        sp.WebsiteId = websiteid;
        try
        {
            da.WebsitePages.InsertOnSubmit(sp);
            da.SubmitChanges();
            return(true);
        }
        catch
        {
            return(false);
        }
    }
示例#25
0
        protected override void OnLoad(EventArgs e)
        {
            string              currentWebsiteHost            = "";
            WebsitePage         websitePageItem               = null;
            WebsitePageSizeType websitePageSizeType           = WebsitePageSizeType.Desktop;
            Provider            fiftyOneDegreesMobileProvider = null;

            this.Page = (Page)this.Context.Handler;

            currentWebsiteHost = this.Context.Request.Url.Authority;

            this.Website = DataProvider.SelectSingleFull <Website>(new Website()
            {
                WebsiteHost = currentWebsiteHost
            });

            if (this.Website == null || this.Website.WebsiteID == 0)
            {
                WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias()
                {
                    WebsiteAliasHost = currentWebsiteHost
                });

                if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0)
                {
                    this.Website = DataProvider.SelectSingleFull <Website>(new Website()
                    {
                        WebsiteID = websiteAlias.WebsiteID
                    });
                }
                else
                {
                    return;
                }
            }

            this.CurrentPage = this.Page.AppRelativeVirtualPath.Replace(".aspx", "").Replace("~/", "");

            fiftyOneDegreesMobileProvider = new Provider(StreamFactory.Create(this.Context.Server.MapPath("App_Data/51Degrees.dat")));

            if (fiftyOneDegreesMobileProvider != null)
            {
                Match fiftyOneDegreesMatch = null;

                fiftyOneDegreesMatch = fiftyOneDegreesMobileProvider.Match(this.Context.Request.UserAgent);

                if (fiftyOneDegreesMatch != null)
                {
                    Values fiftyOneDegreesValuesIsMobile = null;

                    fiftyOneDegreesValuesIsMobile = fiftyOneDegreesMatch["IsMobile"];

                    if (fiftyOneDegreesValuesIsMobile != null)
                    {
                        bool isMobile = false;

                        bool.TryParse(fiftyOneDegreesValuesIsMobile.ToString(), out isMobile);

                        websitePageSizeType = (isMobile) ? WebsitePageSizeType.Mobile : WebsitePageSizeType.Desktop;
                    }
                }
            }

            websitePageItem = DataProvider.SelectSingle(new WebsitePage()
            {
                PageName              = this.CurrentPage,
                WebsiteID             = this.Website.WebsiteID,
                WebsitePageSizeTypeID = websitePageSizeType
            }, this.Website.WebsiteConnection.ConnectionString);

            if (websitePageItem != null && websitePageItem.WebsitePageID > 0)
            {
                this.WebsitePage = DataProvider.SelectSingleOrDefaultFull(new WebsitePage()
                {
                    PageName  = this.CurrentPage,
                    WebsiteID = this.Website.WebsiteID,
                    WebsitePageContentTypeID = websitePageItem.WebsitePageContentTypeID,
                    WebsitePageSizeTypeID    = websitePageSizeType
                }, this.Website.WebsiteConnection.ConnectionString, "PageName");

                this.LoadPageHeader();
            }
            else
            {
                throw new Exception("No page data found");
            }
        }
示例#26
0
 /// <summary>
 /// Method for Inserting Error Page Object
 /// </summary>
 /// <param name="page"></param>
 /// <returns></returns>
 private async Task PushErrorPageObject(WebsitePage page)
 {
     TableOperation insertOrMerge = TableOperation.InsertOrMerge(page);
     await errorTable.ExecuteAsync(insertOrMerge);
 }
示例#27
0
        /// <summary>
        /// Method for Crawling and parsing Html page
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        private async Task Crawl(string url)
        {
            if (string.IsNullOrEmpty(url) || string.IsNullOrWhiteSpace(url))  // if url is empty, exit immediately
            {
                return;
            }
            WebsitePage MainWebsitePageObject = new WebsitePage(); // instantiate Main Website Page Object

            currentWorkingUrl = url;
            try
            {
                htmlDoc = webGet.Load(url); // download html page
            }
            catch (WebException)
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
                try
                {
                    htmlDoc = webGet.Load(url);
                }
                catch (Exception ex)
                {
                    MainWebsitePageObject.Url          = url;
                    MainWebsitePageObject.ErrorTag     = "REQUEST ERROR";
                    MainWebsitePageObject.PartitionKey = "REQUEST ERROR";
                    MainWebsitePageObject.RowKey       = Generate256HashCode(url);
                    MainWebsitePageObject.Title        = "REQUEST ERROR";
                    MainWebsitePageObject.ErrorDetails = ex.Message;
                    await PushErrorPageObject(MainWebsitePageObject);

                    // exit method immediately
                    return;
                }
            }
            // PARSE HTML FOR CONTENT
            uri = new Uri(url);                                        // get domain name
            string urlDomain = domainParser.Get(uri.Authority).Domain; // get domain name
            // parse page title
            string   title = "Title";
            HtmlNode titleNode;

            titleNode = htmlDoc.DocumentNode.SelectSingleNode("//title");
            if (titleNode != null && !string.IsNullOrEmpty(titleNode.InnerText))
            {
                title = HtmlEntity.DeEntitize(titleNode.InnerText.Trim());
            }
            else
            {
                titleNode = htmlDoc.DocumentNode.SelectSingleNode("//h1");
                if (titleNode != null && !string.IsNullOrEmpty(titleNode.InnerText))
                {
                    title = HtmlEntity.DeEntitize(titleNode.InnerText.Trim());
                }
            }
            MainWebsitePageObject.Title        = title;
            MainWebsitePageObject.Url          = url;
            MainWebsitePageObject.PartitionKey = urlDomain;
            MainWebsitePageObject.RowKey       = Generate256HashCode(url);
            // parse body content
            string content = "Content Preview Not Available";

            try
            {
                IEnumerable <string> words = htmlDoc.DocumentNode?
                                             .SelectNodes("//body//p//text()")?
                                             .Select(x => HtmlEntity.DeEntitize(x.InnerText.Trim()))
                                             .Where(x => !string.IsNullOrWhiteSpace(x))
                                             .Take(255);
                content = string.Join(" ", words.Where(x => !string.IsNullOrWhiteSpace(x)));
                string[] contentArray = content.Split(' ');
                content = string.Empty;
                foreach (string c in contentArray.Where(x => !string.IsNullOrWhiteSpace(x)))
                {
                    content += c;
                    content += " ";
                }
                content = content.TrimEnd(' ');
            }
            catch (Exception)
            { /* retain default value content = "Content"*/ }
            MainWebsitePageObject.Content = content;
            DateTime current = DateTime.UtcNow;
            DateTime?publishDate;  // check publish date (in meta data tags if available)

            try
            {
                // get the publish stored in meta data eg. (cnn.com, espn.com)
                string pubDate = htmlDoc.DocumentNode
                                 .SelectSingleNode("//meta[@name='pubdate']")
                                 .GetAttributeValue("content", string.Empty);
                publishDate = Convert.ToDateTime(pubDate);
                if (!(publishDate.Value.Year == current.Year && (current.Month - publishDate.Value.Month <= 3)))
                {
                    Trace.TraceInformation("Article is too old: " + url); // article is too old, it will not be added to the database
                    return;
                }
            }
            catch (Exception)
            {
                publishDate = null;
            }
            MainWebsitePageObject.PublishDate = publishDate;
            if (urlDomain.Contains("bleacherreport"))  // check if site domain is 'bleacherreport'
            {
                string keywords = htmlDoc.DocumentNode
                                  .SelectSingleNode("//meta[@name='keywords']")
                                  .GetAttributeValue("content", string.Empty);
                if (!keywords.ToLower().Contains("nba")) // check if page is not about nba
                {
                    return;                              // exit method immediately this will not be added to the database
                }
            }
            // check for any errors
            string errorTag     = string.Empty;
            string errorDetails = string.Empty;

            if (htmlDoc.ParseErrors.Any())
            {
                errorTag = "HTML PARSING ERROR"; // set ErrorTag
                string errors = string.Empty;
                foreach (var error in htmlDoc.ParseErrors)
                {
                    errors += error.Reason + ";";
                }
                MainWebsitePageObject.ErrorTag     = errorTag;
                MainWebsitePageObject.ErrorDetails = errorDetails;
                await PushErrorPageObject(MainWebsitePageObject); // push to ErrorTable
            }
            // if all tests passed,
            if (!domainDictionary.ContainsKey(urlDomain))  // add domain name to the 'domain table', and 'domainDictionary'
            {
                domainDictionary.Add(urlDomain, urlDomain);
                DomainObject   domainObject  = new DomainObject(urlDomain);
                TableOperation insertOrMerge = TableOperation.InsertOrMerge(domainObject); // Table operation insertOrMerge
                await domainTable.ExecuteAsync(insertOrMerge);
            }
            CloudTable table = tableClient.GetTableReference(urlDomain); // create a table using url domain as a name
            await table.CreateIfNotExistsAsync();                        // create if does not exist

            var titleKeywords = GetValidKeywords(title);

            foreach (string word in titleKeywords)            // create website page object, use keywords as partition key and add to container
            {
                WebsitePage page = new WebsitePage(word, url) // keyword = partition key, url = rowkey,(hashed)
                {
                    Title = title,
                };
                container.Add(page); // add page to the container
            }
            bool exists = await Exists(websitePageMasterTable, MainWebsitePageObject.PartitionKey, MainWebsitePageObject.RowKey);

            if (!exists)                                                                              // push if does not exists
            {
                TableOperation insertOperation = TableOperation.InsertOrMerge(MainWebsitePageObject); // insert main website page object to the database
                await websitePageMasterTable.ExecuteAsync(insertOperation);                           // try insert to the database
                await UpdateIndexedCount();
            }
            await BatchInsertToDatabase(minimumWebSiteCount);  // batch insert operation
        }
        public void RemovePage(int id)
        {
            WebsitePage pageToRemove = GetPageById(id);

            _ctx.WebsitePages.Remove(pageToRemove);
        }
示例#29
0
 public WebsitePageMetadata(WebsitePage page, string title, string area, string controller, string action, Boolean renderSubmenu = false, IEnumerable<WebsitePageMetadata> subMenuMetadata = null,
     object routeValueSources = null, string highlightedMenuController = null, string highlightedMenuAction = null)
 {
     this.WebsitePage = page;
     this.Action = action;
     this.Controller = controller;
     this.Area = area;
     this.Title = title;
     this.RenderSubmenu = renderSubmenu;
     this.SubMenuMetadata = subMenuMetadata;
     this.RouteValueSources = routeValueSources;
     this.HighlightedMenuController = highlightedMenuController;
     this.HighlightedMenuAction = highlightedMenuAction;
 }
示例#30
0
 public SimpleModalControl()
 {
     this.WebsitePage = null;
 }
示例#31
0
        private void ComputeWebsitePageList()
        {
            if (CurrentWebsite == null)
            {
                return;
            }
            //	Start with the loaded 'modified' WebsitePages.
            //	- Care has to be taken that:
            //		A) (for Static Pages,) Pages with the same name get added to the same WebsitePageModel. or
            //		B) (for Report Pages,) Pages with the same Report get added to the same WebsitePageModel
            //	- ^^ (A) happens because in DB, pages are considered unique per Audience.
            //	- ^^ (B) happens because we currently allow Headers/Footers, to be edited at the Report (per Audience) level.
            WebsitePageModels.Clear();
            CurrentWebsite.WebsitePages.ForEach(wp =>
            {
                //var model = WebsitePageModels.FirstOrDefault(wpm => wpm.WebsitePageName == wp.Name);
                var model = WebsitePageModels.FirstOrDefault(wpm =>
                {
                    if (wpm.PageType == WebsitePageTypeEnum.Static)
                    {
                        return(wpm.WebsitePageName == wp.Name);
                    }
                    else if (wpm.PageType == WebsitePageTypeEnum.Report)
                    {
                        return(wpm.ReportName == wp.ReportName);
                    }
                    else
                    {
                        return(false);
                    }
                });
                if (model == null)
                {
                    model = new WebsitePageModel(); WebsitePageModels.Add(model);
                }

                model.WebsitePages.Add(new WebsitePage(wp));
                model.IsModified = true;
            });

            //	Insert any missing/unmodified WebsitePages from Available List (BaseData).
            foreach (var aWebsitePageModel in ManageViewModel.AllAvailableWebsitePages)
            {
                //var oWebsitePageModel = WebsitePageModels.FirstOrDefault(wpm => wpm.WebsitePageName == aWebsitePageModel.WebsitePageName);
                var oWebsitePageModel = WebsitePageModels.FirstOrDefault(wpm =>
                {
                    if (wpm.PageType == WebsitePageTypeEnum.Static)
                    {
                        return(wpm.WebsitePageName == aWebsitePageModel.WebsitePageName);
                    }
                    else if (wpm.PageType == WebsitePageTypeEnum.Report)
                    {
                        return(wpm.ReportName == aWebsitePageModel.ReportName);
                    }
                    else
                    {
                        return(false);
                    }
                });
                if (oWebsitePageModel == null)
                {
                    oWebsitePageModel = new WebsitePageModel(aWebsitePageModel);
                    WebsitePageModels.Add(oWebsitePageModel);
                    continue;                           //  We're adding the entire PageModel from BaseData, thus we have all the Pages(by audience) and their zones also.
                }

                foreach (var aPage in aWebsitePageModel.WebsitePages)
                {
                    var oWebsitePage = oWebsitePageModel.WebsitePages.FirstOrDefault(wp => wp.Audience == aPage.Audience && wp.Name == aPage.Name);

                    if (oWebsitePage == null)
                    {
                        oWebsitePage = new WebsitePage(aPage);
                        oWebsitePageModel.WebsitePages.Add(oWebsitePage);
                    }

                    foreach (var aZone in aPage.Zones)
                    {
                        var oZone = oWebsitePage.Zones.FirstOrDefault(c => c.Name == aZone.Name);
                        if (oZone == null)
                        {
                            oZone = new WebsitePageZone(aZone);
                            oWebsitePage.Zones.Add(oZone);
                        }
                    }
                }
            }

            //	Filter out:
            //		Any Pages that are not associated with one of this websites selected Audiences.
            //		Any (Report) Pages that are not associated with one of the websites selected Reports.
            //		Any Model that does not have at least one Editable Page.
            WebsitePageModels = WebsitePageModels.Where(wpm =>
            {
                return
                (CurrentWebsite.Audiences.ContainsAny(wpm.Audiences) &&
                 (wpm.WebsitePages[0].PageType == WebsitePageTypeEnum.Static ||
                  wpm.WebsitePages[0].PageType == WebsitePageTypeEnum.Report &&
                  CurrentWebsite.Reports.Any(r =>
                {
                    //	We are forced to check Report.Datasets here because CurrentWebsite.Reports are not kept up to date;
                    //	 particularly on Dataset delete.
                    return
                    wpm.WebsitePages[0].ReportName == r.Report.Name &&
                    CurrentWebsite.Datasets.AnyIn(r.Report.Datasets, (cwd, rd) => cwd.Dataset.ContentType.Name == rd);
                })
                 ) &&
                 wpm.WebsitePages.Any(wp => wp.IsEditable));

                //return
                //	CurrentWebsite.Audiences.Any(a => wpm.WebsitePage.Audiences.Contains(a)) &&
                //	CurrentWebsite.Reports.Any(r =>
                //	{
                //		return
                //							wpm.WebsitePage.PageType == WebsitePageTypeEnum.Static ||
                //							wpm.WebsitePage.ReportName == r.Report.Name;
                //	});
            }).ToList();

            InitializeWebsitePageView();
        }