Пример #1
0
        private void PopulateControls()
        {
            XmlDocument doc = new XmlDocument();

            doc.LoadXml("<NewsList></NewsList>");
            XmlElement root = doc.DocumentElement;

            XmlHelper.AddNode(doc, root, "ModuleTitle", this.Title);
            XmlHelper.AddNode(doc, root, "ZoneTitle", CurrentZone.Name);
            XmlHelper.AddNode(doc, root, "ViewMore", NewsResources.NewsMoreLinkText);

            if (ModuleConfiguration.ResourceFileDef.Length > 0 && ModuleConfiguration.ResourceKeyDef.Length > 0)
            {
                List <string> lstResourceKeys = ModuleConfiguration.ResourceKeyDef.SplitOnCharAndTrim(';');

                foreach (string item in lstResourceKeys)
                {
                    XmlHelper.AddNode(doc, root, item, ResourceHelper.GetResourceString(ModuleConfiguration.ResourceFileDef, item));
                }
            }

            CmsBasePage basePage      = Page as CmsBasePage;
            bool        userCanUpdate = NewsPermission.CanUpdate;
            SiteUser    currentUser   = SiteUtils.GetCurrentSiteUser();

            List <News> lstNews    = new List <News>();
            int         languageId = WorkingCulture.LanguageId;

            if (config.ZoneId > -1 || config.ZoneIds.Length > 0 || config.SortBy > 0)
            {
                string zoneRangeIds = string.Empty;

                if (config.ZoneIds.Length > 0)
                {
                    zoneRangeIds = config.ZoneIds;
                }
                else
                {
                    int zoneId = config.ZoneId;
                    if (zoneId == 0)
                    {
                        zoneId = CurrentZone.ZoneId;
                    }

                    zoneRangeIds = NewsHelper.GetChildZoneIdToSemiColonSeparatedString(siteSettings.SiteId, zoneId);
                }

                lstNews = News.GetPageBySearch2(1, config.MaxItemsToGet, siteSettings.SiteId, zoneRangeIds, 1, languageId, config.NewsType, config.Position, -1, null, null, null, null, null, null, null, config.SortBy);
            }
            else
            {
                lstNews = News.GetPage(SiteId, -1, languageId, config.NewsType, config.Position, 1, config.MaxItemsToGet);
            }

            foreach (News news in lstNews)
            {
                XmlElement newsXml = doc.CreateElement("News");
                root.AppendChild(newsXml);

                NewsHelper.BuildNewsDataXml(doc, newsXml, news, timeZone, timeOffset, NewsHelper.BuildEditLink(news, basePage, userCanUpdate, currentUser));

                if (config.ShowAllImagesInNewsList)
                {
                    BuildNewsImagesXml(doc, newsXml, news, languageId);
                }
            }

            XmlHelper.XMLTransform(xmlTransformer, SiteUtils.GetXsltBasePath("news", ModuleConfiguration.XsltFileName), doc);
        }
Пример #2
0
        public XmlDocument GetPageXml(int zoneId,
                                      int pageNumber,
                                      int pageSize,
                                      out int totalPages)
        {
            XmlDocument doc = new XmlDocument();

            doc.LoadXml("<NewsList></NewsList>");
            XmlElement root = doc.DocumentElement;

            XmlHelper.AddNode(doc, root, "ModuleTitle", this.moduleTitle);
            XmlHelper.AddNode(doc, root, "ZoneTitle", basePage.CurrentZone.Name);
            XmlHelper.AddNode(doc, root, "ZoneDescription", basePage.CurrentZone.Description);
            XmlHelper.AddNode(doc, root, "ViewMore", NewsResources.NewsMoreLinkText);
            XmlHelper.AddNode(doc, root, "SiteUrl", basePage.SiteRoot);        // add 2013-08-21 Hontam's project
            XmlHelper.AddNode(doc, root, "PageNumber", pageNumber.ToString()); // add 2014-10-25 RitaCorp's project
            if (module != null && module.ResourceFileDef.Length > 0 && module.ResourceKeyDef.Length > 0)
            {
                List <string> lstResourceKeys = module.ResourceKeyDef.SplitOnCharAndTrim(';');

                foreach (string item in lstResourceKeys)
                {
                    XmlHelper.AddNode(doc, root, item, ResourceHelper.GetResourceString(module.ResourceFileDef, item));
                }
            }

            int         languageId = WorkingCulture.LanguageId;
            List <News> lstNews    = new List <News>();

            if (basePage.ViewMode == PageViewMode.WorkInProgress &&
                WebConfigSettings.EnableContentWorkflow &&
                siteSettings.EnableContentWorkflow
                //&& userCanUpdate && basePage.UserCanAuthorizeZone(zoneId)
                )
            {
                Guid?userGuid = null;

                string stateIdList                     = string.Empty;
                int    workflowId                      = WorkflowHelper.GetWorkflowId(News.FeatureGuid);
                int    firstWorkflowStateId            = WorkflowHelper.GetFirstWorkflowStateId(workflowId);
                List <WorkflowState> lstWorkflowStates = WorkflowHelper.GetWorkflowStates(workflowId);
                foreach (WorkflowState wfState in lstWorkflowStates)
                {
                    if (WorkflowHelper.UserHasStatePermission(lstWorkflowStates, wfState.StateId))
                    {
                        if (wfState.StateId == firstWorkflowStateId)
                        {
                            userGuid = currentUser.UserGuid;
                        }
                        else
                        {
                            userGuid = null;
                        }

                        stateIdList += wfState.StateId + ";";
                    }
                }

                totalPages = 1;
                int totalRows = News.GetCountBySearch(siteSettings.SiteId, zoneId.ToString(), config.NewsType, -1, stateIdList, languageId, -1, -1, null, null, null, null, userGuid, string.Empty);

                if (pageSize > 0)
                {
                    totalPages = totalRows / pageSize;
                }

                if (totalRows <= pageSize)
                {
                    totalPages = 1;
                }
                else if (pageSize > 0)
                {
                    int remainder;
                    Math.DivRem(totalRows, pageSize, out remainder);
                    if (remainder > 0)
                    {
                        totalPages += 1;
                    }
                }

                lstNews = News.GetPageBySearch(siteSettings.SiteId, zoneId.ToString(), config.NewsType, -1, stateIdList, languageId, -1, -1, null, null, null, null, userGuid, string.Empty, pageNumber, pageSize);
            }
            else
            {
                if (config.ShowAllNews)
                {
                    string childZoneIds = NewsHelper.GetChildZoneIdToSemiColonSeparatedString(siteSettings.SiteId, zoneId);

                    totalPages = 1;
                    int totalRows = News.GetCountByListZone(siteSettings.SiteId, childZoneIds, config.NewsType, -1, languageId);

                    if (pageSize > 0)
                    {
                        totalPages = totalRows / pageSize;
                    }

                    if (totalRows <= pageSize)
                    {
                        totalPages = 1;
                    }
                    else if (pageSize > 0)
                    {
                        int remainder;
                        Math.DivRem(totalRows, pageSize, out remainder);
                        if (remainder > 0)
                        {
                            totalPages += 1;
                        }
                    }

                    lstNews = News.GetPageByListZone(siteSettings.SiteId, childZoneIds, config.NewsType, -1, languageId, pageNumber, pageSize);
                }
                else
                {
                    totalPages = 1;
                    int totalRows = News.GetCount(siteSettings.SiteId, zoneId, languageId, -1, -1);

                    if (pageSize > 0)
                    {
                        totalPages = totalRows / pageSize;
                    }

                    if (totalRows <= pageSize)
                    {
                        totalPages = 1;
                    }
                    else if (pageSize > 0)
                    {
                        int remainder;
                        Math.DivRem(totalRows, pageSize, out remainder);
                        if (remainder > 0)
                        {
                            totalPages += 1;
                        }
                    }

                    lstNews = News.GetPage(siteSettings.SiteId, zoneId, languageId, -1, -1, pageNumber, pageSize);
                }
            }

            int newsId = WebUtils.ParseInt32FromQueryString("NewsId", -1);

            foreach (News news in lstNews)
            {
                XmlElement newsXml = doc.CreateElement("News");
                root.AppendChild(newsXml);

                NewsHelper.BuildNewsDataXml(doc, newsXml, news, timeZone, timeOffset, NewsHelper.BuildEditLink(news, basePage, userCanUpdate, currentUser));

                XmlHelper.AddNode(doc, newsXml, "ApplyText", NewsResources.JobApplyLable);
                XmlHelper.AddNode(doc, newsXml, "ApplyUrl", this.SiteRoot + "/News/JobApplyDialog.aspx?zoneid=" + zoneId.ToString() + "&NewsID=" + news.NewsID.ToString());

                if (newsId > 0)
                {
                    if (news.NewsID == newsId)
                    {
                        XmlHelper.AddNode(doc, newsXml, "IsActive", "true");
                    }
                }

                if (config.ShowAllImagesInNewsList)
                {
                    BuildNewsImagesXml(doc, newsXml, news, languageId);
                }

                //2015-11-27
                if (config.ShowAttributesInNewsList)
                {
                    BuildNewsAttributesXml(doc, newsXml, news.NewsGuid, languageId);
                }
            }

            if (pageNumber < totalPages)
            {
                string pageUrl = SiteUtils.GetCurrentZoneUrl();

                if (pageUrl.Contains("?"))
                {
                    pageUrl += "&pagenumber=" + (pageNumber + 1).ToString();
                }
                else
                {
                    pageUrl += "?pagenumber=" + (pageNumber + 1).ToString();
                }

                XmlHelper.AddNode(doc, root, "NextPageUrl", pageUrl);
            }

            return(doc);
        }
Пример #3
0
        private void RenderNode(XmlDocument doc, XmlElement xmlElement, gbSiteMapNode gbNode)
        {
            if (!ShouldRender(gbNode))
            {
                return;
            }

            XmlElement item = doc.CreateElement("Zone");

            xmlElement.AppendChild(item);

            XmlHelper.AddNode(doc, item, "ZoneId", gbNode.ZoneId.ToInvariantString());
            XmlHelper.AddNode(doc, item, "Depth", gbNode.Depth.ToInvariantString());
            XmlHelper.AddNode(doc, item, "ChildCount", gbNode.ChildNodes.Count.ToInvariantString());
            XmlHelper.AddNode(doc, item, "IsClickable", gbNode.IsClickable.ToString().ToLower());
            XmlHelper.AddNode(doc, item, "Url", FormatUrl(gbNode));
            XmlHelper.AddNode(doc, item, "Target", (gbNode.OpenInNewWindow == true ? "_blank" : "_self"));
            XmlHelper.AddNode(doc, item, "Title", GetZoneTitle(gbNode));
            XmlHelper.AddNode(doc, item, "Description", GetDescription(gbNode));
            XmlHelper.AddNode(doc, item, "ImageUrl", gbNode.PrimaryImage);
            XmlHelper.AddNode(doc, item, "SecondImageUrl", gbNode.SecondImage);

            List <News> lstNews = new List <News>();

            if (config.ShowAllNews)
            {
                string zoneIds = NewsHelper.GetChildZoneIdToSemiColonSeparatedString(siteSettings.SiteId, gbNode.ZoneId);
                if (config.MaxItemsToGet == 0)
                {
                    int iCount = News.GetCountByListZone(siteSettings.SiteId, zoneIds, -1, config.NewsPosition, languageId);
                    XmlHelper.AddNode(doc, item, "NewsCount", iCount.ToString());
                }
                else if (config.MaxItemsToGet > 0)
                {
                    lstNews = News.GetPageByListZone(siteSettings.SiteId, zoneIds, -1, config.NewsPosition, languageId, 1, config.MaxItemsToGet);
                }
                else
                {
                    int iCount = News.GetCountByListZone(siteSettings.SiteId, zoneIds, -1, config.NewsPosition, languageId);
                    XmlHelper.AddNode(doc, item, "NewsCount", iCount.ToString());

                    lstNews = News.GetPageByListZone(siteSettings.SiteId, zoneIds, -1, config.NewsPosition, languageId, 1, Math.Abs(config.MaxItemsToGet));
                }
            }
            else
            {
                if (config.MaxItemsToGet == 0)
                {
                    int iCount = News.GetCount(siteSettings.SiteId, gbNode.ZoneId, -1, config.NewsPosition, languageId);
                    XmlHelper.AddNode(doc, item, "NewsCount", iCount.ToString());
                }
                else if (config.MaxItemsToGet > 0)
                {
                    lstNews = News.GetPage(siteSettings.SiteId, gbNode.ZoneId, languageId, -1, config.NewsPosition, 1, config.MaxItemsToGet);
                }
                else
                {
                    int iCount = News.GetCount(siteSettings.SiteId, gbNode.ZoneId, -1, config.NewsPosition, languageId);
                    XmlHelper.AddNode(doc, item, "NewsCount", iCount.ToString());

                    lstNews = News.GetPage(siteSettings.SiteId, gbNode.ZoneId, languageId, -1, config.NewsPosition, 1, Math.Abs(config.MaxItemsToGet));
                }
            }

            foreach (News news in lstNews)
            {
                XmlElement newsXml = doc.CreateElement("News");
                item.AppendChild(newsXml);

                NewsHelper.BuildNewsDataXml(doc, newsXml, news, timeZone, timeOffset, NewsHelper.BuildEditLink(news, basePage, userCanUpdate, currentUser));

                if (news.NewsID == newsId)
                {
                    XmlHelper.AddNode(doc, newsXml, "IsActive", "true");
                }

                if (config.ShowAllImagesInNewsList)
                {
                    BuildNewsImagesXml(doc, newsXml, news, languageId);
                }
            }

            if ((currentNode != null) &&
                (currentNode.ZoneGuid == gbNode.ZoneGuid)    // Selected
                )
            {
                XmlHelper.AddNode(doc, item, "IsActive", "true");
            }
            else
            {
                XmlHelper.AddNode(doc, item, "IsActive", "false");
            }

            if (gbNode.ChildNodes.Count > 0)
            {
                foreach (SiteMapNode childNode in gbNode.ChildNodes)
                {
                    gbSiteMapNode gbChildNode = childNode as gbSiteMapNode;
                    if (gbChildNode == null)
                    {
                        continue;
                    }

                    RenderNode(doc, item, gbChildNode);
                }
            }
        }
Пример #4
0
        private void DoSearch()
        {
            if (Page.IsPostBack)
            {
                return;
            }

            if (Request.QueryString.Get("q") == null)
            {
                return;
            }

            query = Request.QueryString.Get("q");

            if (this.query.Length == 0)
            {
                return;
            }

            //txtSearchInput.Text = Server.HtmlEncode(query).Replace("&quot;", "\"") ;
            txtSearchInput.Text = SecurityHelper.SanitizeHtml(query);
            if (WebConfigSettings.EscapingSpecialCharactersInKeyword)
            {
                query = query.Replace("-", "\\-");
            }

            queryErrorOccurred = false;

            CanhCam.SearchIndex.IndexItemCollection searchResults = CanhCam.SearchIndex.IndexHelper.Search(
                siteSettings.SiteId,
                isSiteEditor,
                GetUserRoles(),
                News.FeatureGuid,
                CultureInfo.CurrentUICulture.Name,
                DateTime.MinValue,
                DateTime.MaxValue,
                query,
                WebConfigSettings.EnableSearchResultsHighlighting,
                WebConfigSettings.SearchResultsFragmentSize,
                pageNumber,
                pageSize,
                WebConfigSettings.SearchMaxClauseCount,
                out totalHits,
                out queryErrorOccurred);

            XmlDocument doc = new XmlDocument();

            doc.LoadXml("<NewsList></NewsList>");
            XmlElement root = doc.DocumentElement;

            XmlHelper.AddNode(doc, root, "SiteRoot", SiteRoot);
            XmlHelper.AddNode(doc, root, "TotalNews", totalHits.ToString());
            XmlHelper.AddNode(doc, root, "Keyword", Server.HtmlEncode(query));
            XmlHelper.AddNode(doc, root, "ProductText", ResourceHelper.GetResourceString("ProductResources", "ProductFeatureName"));
            XmlHelper.AddNode(doc, root, "NewsText", ResourceHelper.GetResourceString("NewsResources", "NewsFeatureName"));

            if (searchResults.Count == 0)
            {
                if (InitIndexIfNeeded())
                {
                    return;
                }

                if (txtSearchInput.Text.Length > 0)
                {
                    string noResults = Resources.NewsResources.SearchResultsNotFound;
                    if (queryErrorOccurred)
                    {
                        noResults = ResourceHelper.GetResourceString("Resource", "SearchQueryInvalid");
                    }

                    XmlHelper.AddNode(doc, root, "NoResults", noResults);
                }
            }
            else
            {
                float  duration     = searchResults.ExecutionTime * 0.0000001F;
                string searchSumary = string.Format(Resources.NewsResources.SearchResultsFormat, totalHits.ToString(CultureInfo.InvariantCulture), Server.HtmlEncode(query), duration.ToString());

                XmlHelper.AddNode(doc, root, "SearchSumary", searchSumary);
                XmlHelper.AddNode(doc, root, "Duration", duration.ToString());

                totalPages = 1;

                if (pageSize > 0)
                {
                    totalPages = totalHits / pageSize;
                }

                if (totalHits <= pageSize)
                {
                    totalPages = 1;
                }
                else
                {
                    int remainder;
                    Math.DivRem(totalHits, pageSize, out remainder);
                    if (remainder > 0)
                    {
                        totalPages += 1;
                    }
                }

                string searchUrl = SiteRoot
                                   + "/News/SearchResults.aspx?q=" + Server.UrlEncode(query)
                                   + "&amp;p={0}";

                pgrTop.PageURLFormat = searchUrl;
                pgrTop.ShowFirstLast = true;
                pgrTop.CurrentIndex  = pageNumber;
                pgrTop.PageSize      = pageSize;
                pgrTop.PageCount     = totalPages;
                pgrTop.Visible       = (totalPages > 1);

                pgrBottom.PageURLFormat = searchUrl;
                pgrBottom.ShowFirstLast = true;
                pgrBottom.CurrentIndex  = pageNumber;
                pgrBottom.PageSize      = pageSize;
                pgrBottom.PageCount     = totalPages;
                pgrBottom.Visible       = (totalPages > 1);

                string newsGuids = string.Empty;
                string sepa      = string.Empty;
                foreach (IndexItem item in searchResults)
                {
                    if (!newsGuids.ContainsCaseInsensitive(item.ItemGuid.ToString()))
                    {
                        newsGuids += sepa + item.ItemGuid.ToString();
                        sepa       = ";";
                    }
                }

                if (newsGuids.Length > 0)
                {
                    List <News> lstNews = News.GetByGuids(siteSettings.SiteId, newsGuids, 1, WorkingCulture.LanguageId);
                    foreach (News news in lstNews)
                    {
                        XmlElement newsXml = doc.CreateElement("News");
                        root.AppendChild(newsXml);

                        NewsHelper.BuildNewsDataXml(doc, newsXml, news, timeZone, timeOffset, string.Empty);

                        if (WebConfigSettings.EnableSearchResultsHighlighting)
                        {
                            foreach (IndexItem item in searchResults)
                            {
                                if (item.ItemGuid == news.NewsGuid)
                                {
                                    XmlHelper.AddNode(doc, newsXml, "HighlightContent", item.Intro);

                                    break;
                                }
                            }
                        }
                    }
                }
            }

            XmlHelper.XMLTransform(xmlTransformer, SiteUtils.GetXsltBasePath("news", "NewsSearchResults.xslt"), doc);
        }
Пример #5
0
        public void BuildNewsOtherXml(
            XmlDocument doc,
            XmlElement root,
            int zoneId,
            int pageNumber,
            int pageSize,
            out int totalPages)
        {
            XmlHelper.AddNode(doc, root, "NewsOtherText", NewsResources.OtherNewsLabel);
            XmlHelper.AddNode(doc, root, "ProductOtherText", NewsResources.OtherProductLabel);
            XmlHelper.AddNode(doc, root, "ProjectOtherText", NewsResources.OtherProjectLabel);

            List <News> lstNews = new List <News>();

            if (pageSize < 0)
            {
                pageSize   = -pageSize;
                totalPages = 1;
                int totalRows = News.GetCount(basePage.SiteId, zoneId, languageId, -1, -1);

                if (pageSize > 0)
                {
                    totalPages = totalRows / pageSize;
                }

                if (totalRows <= pageSize)
                {
                    totalPages = 1;
                }
                else if (pageSize > 0)
                {
                    int remainder;
                    Math.DivRem(totalRows, pageSize, out remainder);
                    if (remainder > 0)
                    {
                        totalPages += 1;
                    }
                }

                lstNews = News.GetPage(basePage.SiteId, zoneId, languageId, -1, -1, pageNumber, pageSize);
            }
            else
            {
                lstNews = News.GetPageNewsOther(zoneId, news.NewsID, languageId, config.NewsType, pageNumber, pageSize, out totalPages);
            }

            foreach (News news in lstNews)
            {
                XmlElement newsXml = doc.CreateElement("NewsOther");
                root.AppendChild(newsXml);

                NewsHelper.BuildNewsDataXml(doc, newsXml, news, timeZone, timeOffset, NewsHelper.BuildEditLink(news, basePage, userCanUpdate, currentUser));

                if (news.NewsID == newsId)
                {
                    XmlHelper.AddNode(doc, newsXml, "IsActive", "true");
                }
            }

            if (pageNumber < totalPages)
            {
                string pageUrl = NewsHelper.FormatNewsUrl(news.Url, news.NewsID, news.ZoneID);

                int iNewsId = WebUtils.ParseInt32FromQueryString("NewsId", -1);
                if (iNewsId == -1 && config.LoadFirstItem)
                {
                    pageUrl = SiteUtils.GetCurrentZoneUrl();
                }

                if (pageUrl.Contains("?"))
                {
                    pageUrl += "&pagenumber=" + (pageNumber + 1).ToString();
                }
                else
                {
                    pageUrl += "?pagenumber=" + (pageNumber + 1).ToString();
                }

                XmlHelper.AddNode(doc, root, "NextPageUrl", pageUrl);
            }
        }