예제 #1
0
        protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
        {
            writer.Write("<div id=\"Poll_DataContent\">");
            writer.Write(@"<div>");

            if (poll != null)
            {
                writer.Write("<div style='padding-bottom:15px;'><a class=\"linkHeaderLightMedium\" href=\"" + FeedUrls.GetFeedUrl(poll.Id) + "\">" + pollForm.Name + "</a></div>");
                pollForm.RenderControl(writer);

                writer.Write("<div style=\"margin-top: 10px;\">");
                writer.Write("<a href=\"" + FeedUrls.GetFeedListUrl(FeedType.Poll) + "\">" + Resources.NewsResource.SeeAllPolls + "</a>");
                writer.Write("</div>");
            }
            else
            {
                writer.Write("<div class=\"empty-widget\" style=\"padding:40px; text-align: center;\">" +
                             String.Format(Resources.NewsResource.NoPollWidgetMessage,
                                           string.Format("<div style=\"padding-top:3px;\"><a class=\"promoAction\" href=\"{0}\">", VirtualPathUtility.ToAbsolute("~/products/community/modules/news/editpoll.aspx")),
                                           "</a></div>")
                             + "</div>");
            }

            writer.Write("</div>");
            writer.Write("</div>");
        }
예제 #2
0
 /// <summary>
 /// Remove feed url from list of Urls
 /// </summary>
 /// <param name="url"></param>
 public void RemoveFeed(string url)
 {
     if (FeedUrls.Contains(url))
     {
         FeedUrls.Remove(url);
     }
 }
예제 #3
0
 public StatisticItem GetMainStatistic(Guid userID)
 {
     return(new StatisticItem()
     {
         Count = GetPostCount(userID),
         URL = FeedUrls.GetFeedListUrl(userID),
         Name = Resources.NewsResource.PostCount
     });
 }
예제 #4
0
 public override SearchResultItem[] Search(string text)
 {
     return(FeedStorageFactory.Create()
            .SearchFeeds(text)
            .ConvertAll <SearchResultItem>(f => new SearchResultItem()
     {
         Name = f.Caption,
         Description = HtmlUtility.GetText(f.Text, 120),
         URL = FeedUrls.GetFeedUrl(f.Id),
         Date = f.Date
     })
            .ToArray());
 }
예제 #5
0
        internal static UserActivity ComposeActivityByFeed(Feed post)
        {
            var ua = new UserActivity();

            ua.TenantID  = TenantProvider.CurrentTenantID;
            ua.ContentID = GetContentID(post);
            ua.Date      = TenantUtil.DateTimeNow();
            ua.ModuleID  = NewsConst.ModuleId;
            ua.ProductID = Product.CommunityProduct.ID;
            ua.Title     = post.Caption;
            ua.URL       = FeedUrls.GetFeedVirtualPath(post.Id);

            return(ua);
        }
예제 #6
0
        public void WriteNavigation()
        {
            var usedFeedTypes = FeedStorageFactory.Create().GetUsedFeedTypes();

            if (usedFeedTypes.Count == 0)
            {
                NewsNavigator.Visible = false;
            }
            else
            {
                niTypeAllNews.URL  = FeedUrls.GetFeedListUrl(RequestedUserId);
                niTypeAllNews.Name = Resources.NewsResource.NewsBreadCrumbs;
                AddNewsTypes(usedFeedTypes);
            }
        }
예제 #7
0
 private void AddNewsTypes(IList <FeedType> usedFeedTypes)
 {
     foreach (var feedType in usedFeedTypes)
     {
         var feedTypeInfo = FeedTypeInfo.FromFeedType(feedType);
         NewsNavigator.Controls.Add(
             new NavigationItem()
         {
             Name = feedTypeInfo.TypeName,
             ID   = feedTypeInfo.TypeName,
             URL  = FeedUrls.GetFeedListUrl(feedType, RequestedUserId)
         }
             );
     }
 }
예제 #8
0
        private static string RenderWidget()
        {
            var widgetSettings = SettingsManager.Instance.LoadSettingsFor <FeedWidgetSettings>(SecurityContext.CurrentAccount.ID);
            var widget         = new StringBuilder();

            widget.Append("<div id=\"Feed_DataContent\">");

            var feeds = FeedStorageFactory.Create().GetFeeds(FeedType.AllNews, Guid.Empty, widgetSettings.NewsCount, 0);

            if (feeds.Count > 0)
            {
                foreach (var feed in feeds)
                {
                    widget.Append(@"<div style=""padding-bottom: 10px;"">");
                    widget.Append("<table cellspacing='0' cellpadding='0' border='0'><tr valign='top'><td width='25'>");
                    widget.AppendFormat(@"<span class=""textMediumDescribe"">{0}<br/>{1}</span>", feed.Date.ToShortDayMonth(), feed.Date.ToShortTimeString());
                    widget.Append("</td>");
                    widget.Append("<td>");
                    widget.Append("<div style=\"padding-left: 10px;\">");
                    widget.AppendFormat(@"<a href=""{0}"">{1}</a>", FeedUrls.GetFeedUrl(feed.Id), feed.Caption.HtmlEncode());
                    widget.Append("</div>");
                    widget.Append("</td>");
                    widget.Append("</tr>");
                    widget.Append("</table>");
                    widget.Append(@"</div>");
                }

                widget.Append(@"<div style=""margin-top: 10px;"">");
                widget.AppendFormat(@"<a href=""{1}"">{0}</a>", Resources.NewsResource.SeeAllNews, FeedUrls.MainPageUrl);
                widget.Append(@"</div>");
            }
            else
            {
                widget.Append("<div class=\"empty-widget\" style=\"padding:40px; text-align: center;\">" +
                              String.Format(Resources.NewsResource.NoFeedWidgetMessage,
                                            string.Format("<div style=\"padding-top:3px;\"><a class=\"promoAction\" href=\"{0}\">", VirtualPathUtility.ToAbsolute("~/products/community/modules/news/editnews.aspx")),
                                            "</a></div>")
                              + "</div>");
            }


            widget.Append("</div>");
            return(widget.ToString());
        }
예제 #9
0
        protected void SaveFeed()
        {
            if (string.IsNullOrEmpty(feedName.Text))
            {
                ((NewsMaster)Master).SetInfoMessage(NewsResource.RequaredFieldValidatorCaption, InfoType.Alert);
                return;
            }

            var storage = FeedStorageFactory.Create();
            var isEdit  = (FeedId != 0);
            var feed    = isEdit ? storage.GetFeed(FeedId) : new FeedNews();

            feed.Caption  = feedName.Text;
            feed.Text     = (Request["news_text"] ?? "");
            feed.FeedType = (FeedType)int.Parse(feedType.SelectedValue, CultureInfo.CurrentCulture);
            storage.SaveFeed(feed, isEdit, FeedType.News);

            CommonControlsConfigurer.FCKEditingComplete("news", feed.Id.ToString(), feed.Text, isEdit);

            Response.Redirect(FeedUrls.GetFeedUrl(feed.Id, Info.UserId));
        }
예제 #10
0
        /// <summary>
        /// Adding new feed if it exists.
        /// </summary>
        /// <param name="url">feed url</param>
        /// <returns></returns>
        public async Task SubscribeToFeedAsync(string url)
        {
            //getting feed links from HTML page
            string[] links = await HttpHelper.ParseFeedUrlsAsStringAsync(url);

            if (links.Length == 0)
            {
                try
                {
                    await AddNewFeedAsync(url);

                    FeedUrls.Add(url);
                }
                catch
                {
                    throw new Exception("Failed to find feed.\nTry checking the link.");
                }
            }
            else
            {
                //adding all feeds from found links
                foreach (string link in links)
                {
                    if (!FeedUrls.Contains(link))
                    {
                        try
                        {
                            await AddNewFeedAsync(link);
                        }
                        catch
                        {
                            throw new Exception("Couldn't find resource.");
                        }
                        FeedUrls.Add(link);
                    }
                }
            }
        }
예제 #11
0
        private List <SubscriptionObject> GetSubscriptionObjects(bool includeFeed, bool includeComments)
        {
            List <SubscriptionObject> subscriptionObjects = new List <SubscriptionObject>();

            IList <string> list = new List <string>();

            var currentAccount = SecurityContext.CurrentAccount;

            if (includeFeed)
            {
                list = new List <string>(
                    SubscriptionProvider.GetSubscriptions(
                        NewsConst.NewFeed,
                        new DirectRecipient(currentAccount.ID.ToString(), currentAccount.Name), false)
                    );
                if (list.Count > 0)
                {
                    foreach (string id in list)
                    {
                        if (!string.IsNullOrEmpty(id))
                        {
                            subscriptionObjects.Add(new SubscriptionObject()
                            {
                                ID               = id,
                                Name             = NewsResource.NotifyOnNewFeed,
                                URL              = string.Empty,
                                SubscriptionType = GetSubscriptionTypes()[0]
                            });
                        }
                    }
                }
            }

            if (includeComments)
            {
                list = new List <string>(
                    SubscriptionProvider.GetSubscriptions(
                        NewsConst.NewComment,
                        new DirectRecipient(currentAccount.ID.ToString(), currentAccount.Name), false)
                    );
                if (list.Count > 0)
                {
                    var storage = FeedStorageFactory.Create();
                    foreach (string id in list)
                    {
                        if (!string.IsNullOrEmpty(id))
                        {
                            try
                            {
                                var feedID = Int32.Parse(id);
                                var feed   = storage.GetFeed(feedID);
                                subscriptionObjects.Add(new SubscriptionObject()
                                {
                                    ID               = id,
                                    Name             = feed.Caption,
                                    URL              = FeedUrls.GetFeedAbsolutePath(feed.Id),
                                    SubscriptionType = GetSubscriptionTypes()[1]
                                });
                            }
                            catch { }
                        }
                    }
                }
            }
            return(subscriptionObjects);
        }
예제 #12
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (SetupInfo.WorkMode == WorkMode.Promo)
            {
                Response.Redirect(FeedUrls.MainPageUrl, true);
            }

            Utility.RegisterTypeForAjax(this.GetType());

            if (!CommunitySecurity.CheckPermissions(NewsConst.Action_Add))
            {
                Response.Redirect(FeedUrls.MainPageUrl, true);
            }

            _mobileVer = Core.Mobile.MobileDetector.IsRequestMatchesMobile(this.Context);

            Breadcrumb.Add(new BreadCrumb {
                NavigationUrl = FeedUrls.MainPageUrl, Caption = NewsResource.NewsBreadCrumbs
            });
            if (Info.HasUser)
            {
                Breadcrumb.Add(new BreadCrumb {
                    Caption = Info.User.DisplayUserName(false), NavigationUrl = FeedUrls.GetFeedListUrl(Info.UserId)
                });
            }

            var  storage = FeedStorageFactory.Create();
            Feed feed    = null;

            if (!string.IsNullOrEmpty(Request["docID"]))
            {
                long docID;
                if (long.TryParse(Request["docID"], out docID))
                {
                    feed = storage.GetFeed(docID);
                    Breadcrumb.Add(new BreadCrumb {
                        Caption = feed.Caption ?? string.Empty, NavigationUrl = FeedUrls.GetFeedUrl(docID, Info.UserId)
                    });
                    Breadcrumb.Add(new BreadCrumb {
                        Caption = NewsResource.NewsEditBreadCrumbsNews, NavigationUrl = FeedUrls.EditNewsUrl + "?docID=" + docID + Info.UserIdAttribute
                    });
                    _text = (feed != null ? feed.Text : "").HtmlEncode();
                }
            }
            else
            {
                Breadcrumb.Add(new BreadCrumb {
                    Caption = NewsResource.NewsAddBreadCrumbsNews, NavigationUrl = FeedUrls.EditNewsUrl + (string.IsNullOrEmpty(Info.UserIdAttribute) ? string.Empty : "?" + Info.UserIdAttribute.Substring(1))
                });
            }

            if (_mobileVer && IsPostBack)
            {
                _text = Request["mobiletext"] ?? "";
            }

            if (!IsPostBack)
            {
                //feedNameRequiredFieldValidator.ErrorMessage = NewsResource.RequaredFieldValidatorCaption;
                HTML_FCKEditor.BasePath      = VirtualPathUtility.ToAbsolute(CommonControlsConfigurer.FCKEditorBasePath);
                HTML_FCKEditor.ToolbarSet    = "NewsToolbar";
                HTML_FCKEditor.EditorAreaCSS = WebSkin.GetUserSkin().BaseCSSFileAbsoluteWebPath;
                HTML_FCKEditor.Visible       = !_mobileVer;
                BindNewsTypes();

                if (feed != null)
                {
                    if (!CommunitySecurity.CheckPermissions(feed, NewsConst.Action_Edit))
                    {
                        Response.Redirect(FeedUrls.MainPageName, true);
                    }
                    feedName.Text        = feed.Caption;
                    HTML_FCKEditor.Value = feed.Text;
                    FeedId = feed.Id;
                    feedType.SelectedIndex = (int)Math.Log((int)feed.FeedType, 2);
                }
            }
            else
            {
                var control = FindControl(Request.Params["__EVENTTARGET"]);
                if (lbCancel.Equals(control))
                {
                    CancelFeed(sender, e);
                }
                else
                {
                    SaveFeed();
                }
            }

            this.Title = HeaderStringHelper.GetPageTitle(NewsResource.AddonName, Breadcrumb);

            lbCancel.Attributes["name"] = HTML_FCKEditor.ClientID;
        }
예제 #13
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Utility.RegisterTypeForAjax(typeof(Default), Page);
            commentList.Visible = CommunitySecurity.CheckPermissions(NewsConst.Action_Comment);

            pgNavigator.EntryCount       = 1;
            pgNavigator.EntryCountOnPage = 1;
            Breadcrumb.Add(new BreadCrumb {
                Caption = NewsResource.NewsBreadCrumbs, NavigationUrl = FeedUrls.MainPageUrl
            });
            if (Info.HasUser)
            {
                Breadcrumb.Add(new BreadCrumb {
                    Caption = Info.User.DisplayUserName(false), NavigationUrl = FeedUrls.GetFeedListUrl(Info.UserId)
                });
            }

            if (!IsPostBack)
            {
                var storage = FeedStorageFactory.Create();
                if (!string.IsNullOrEmpty(Request["docID"]))
                {
                    long docID;
                    if (long.TryParse(Request["docID"], out docID))
                    {
                        //Show panel
                        ContentView.Visible = false;
                        FeedView.Visible    = true;

                        var feed = storage.GetFeed(docID);
                        if (feed != null)
                        {
                            if (!feed.Readed)
                            {
                                storage.ReadFeed(feed.Id, SecurityContext.CurrentAccount.ID.ToString());
                            }
                            FeedViewCtrl.Feed = feed;
                            hdnField.Value    = feed.Id.ToString(CultureInfo.CurrentCulture);
                            Title            += string.Format(CultureInfo.CurrentCulture, "-{0}", feed.Caption);
                            InitCommentsView(storage, feed);
                            FeedView.DataBind();
                            Breadcrumb.Add(new BreadCrumb {
                                Caption = feed.Caption, NavigationUrl = FeedUrls.GetFeedUrl(docID, Info.UserId)
                            });
                        }
                        else
                        {
                            ContentView.Visible  = true;
                            FeedView.Visible     = false;
                            FeedRepeater.Visible = true;
                        }
                    }
                }
                else
                {
                    PageNumber = string.IsNullOrEmpty(Request["page"]) ? 1 : Convert.ToInt32(Request["page"]);
                    LoadData();
                }
            }
            this.Title = HeaderStringHelper.GetPageTitle(Resources.NewsResource.AddonName, Breadcrumb);
        }
예제 #14
0
        private void LoadData()
        {
            var storage  = FeedStorageFactory.Create();
            var feedType = FeedType.All;

            if (!string.IsNullOrEmpty(Request["type"]))
            {
                feedType = (FeedType)Enum.Parse(typeof(FeedType), Request["type"], true);
                var feedTypeInfo = FeedTypeInfo.FromFeedType(feedType);
                Breadcrumb.Add(new BreadCrumb
                {
                    Caption       = feedTypeInfo.TypeName,
                    NavigationUrl = FeedUrls.GetFeedListUrl(feedType)
                });
                if (!string.IsNullOrEmpty(Request["search"]))
                {
                    Breadcrumb.Add(new BreadCrumb {
                        Caption = HeaderStringHelper.GetHTMLSearchHeader(Request["search"]), NavigationUrl = VirtualPathUtility.ToAbsolute("~/products/community/modules/news/") + "?type=" + Request["type"] + "&search=" + Request["search"] + Info.UserIdAttribute
                    });
                }
            }
            else if (!string.IsNullOrEmpty(Request["search"]))
            {
                Breadcrumb.Add(new BreadCrumb {
                    Caption = HeaderStringHelper.GetHTMLSearchHeader(Request["search"]), NavigationUrl = VirtualPathUtility.ToAbsolute("~/products/community/modules/news/") + "?search=" + Request["search"] + Info.UserIdAttribute
                });
            }

            var feedsCount = !string.IsNullOrEmpty(Request["search"]) ? storage.SearchFeedsCount(Request["search"], feedType, Info.UserId) : storage.GetFeedsCount(feedType, Info.UserId);

            if (feedsCount == 0)
            {
                FeedRepeater.Visible = false;
                MessageShow.Visible  = true;

                string buttonLink;
                string buttonName;
                var    emptyScreenControl = new EmptyScreenControl {
                    Describe = NewsResource.EmptyScreenText
                };

                switch (feedType)
                {
                case FeedType.News:
                    emptyScreenControl.ImgSrc = WebImageSupplier.GetAbsoluteWebPath("150x_news.png", NewsConst.ModuleId);
                    emptyScreenControl.Header = NewsResource.EmptyScreenNewsCaption;
                    buttonLink = FeedUrls.EditNewsUrl;
                    buttonName = NewsResource.EmptyScreenNewsLink;
                    break;

                case FeedType.Order:
                    emptyScreenControl.ImgSrc = WebImageSupplier.GetAbsoluteWebPath("150x_order.png", NewsConst.ModuleId);
                    emptyScreenControl.Header = NewsResource.EmptyScreenOrdersCaption;
                    buttonLink = FeedUrls.EditOrderUrl;
                    buttonName = NewsResource.EmptyScreenOrderLink;
                    break;

                case FeedType.Advert:
                    emptyScreenControl.ImgSrc = WebImageSupplier.GetAbsoluteWebPath("150x_advert.png", NewsConst.ModuleId);
                    emptyScreenControl.Header = NewsResource.EmptyScreenAdvertsCaption;
                    buttonLink = FeedUrls.EditAdvertUrl;
                    buttonName = NewsResource.EmptyScreenAdvertLink;
                    break;

                case FeedType.Poll:
                    emptyScreenControl.ImgSrc = WebImageSupplier.GetAbsoluteWebPath("150x_poll.png", NewsConst.ModuleId);
                    emptyScreenControl.Header = NewsResource.EmptyScreenPollsCaption;
                    buttonLink = FeedUrls.EditPollUrl;
                    buttonName = NewsResource.EmptyScreenPollLink;
                    break;

                default:
                    emptyScreenControl.ImgSrc = WebImageSupplier.GetAbsoluteWebPath("150x_newslogo.png", NewsConst.ModuleId);
                    emptyScreenControl.Header = NewsResource.EmptyScreenEventsCaption;
                    buttonLink = FeedUrls.EditNewsUrl;
                    buttonName = NewsResource.EmptyScreenEventLink;
                    break;
                }

                if (CommunitySecurity.CheckPermissions(NewsConst.Action_Add) && String.IsNullOrEmpty(Request["uid"]) && String.IsNullOrEmpty(Request["search"]))
                {
                    emptyScreenControl.ButtonHTML = String.Format("<a class='linkAddMediumText' href='{0}'>{1}</a>", buttonLink, buttonName);
                }


                MessageShow.Controls.Add(emptyScreenControl);
            }
            else
            {
                const int pageSize  = 20;
                var       pageCount = (int)(feedsCount / pageSize + 1);
                if (pageCount < PageNumber)
                {
                    PageNumber = pageCount;
                }

                var feeds = !string.IsNullOrEmpty(Request["search"]) ?
                            storage.SearchFeeds(Request["search"], feedType, Info.UserId, pageSize, (PageNumber - 1) * pageSize) :
                            storage.GetFeeds(feedType, Info.UserId, pageSize, (PageNumber - 1) * pageSize);

                pgNavigator.EntryCountOnPage  = pageSize;
                pgNavigator.EntryCount        = 0 < pageCount ? (int)feedsCount : pageSize;
                pgNavigator.CurrentPageNumber = PageNumber;

                pgNavigator.ParamName = "page";
                if (!string.IsNullOrEmpty(Request["search"]))
                {
                    pgNavigator.PageUrl = string.Format(CultureInfo.CurrentCulture, "{0}?search={1}", VirtualPathUtility.ToAbsolute("~/products/community/modules/news/"), Request["search"]);
                }
                else
                {
                    pgNavigator.PageUrl = string.IsNullOrEmpty(Request["type"]) ?
                                          string.Format(CultureInfo.CurrentCulture, "{0}?{1}", VirtualPathUtility.ToAbsolute("~/products/community/modules/news/"), (string.IsNullOrEmpty(Info.UserIdAttribute) ? string.Empty : "?" + Info.UserIdAttribute.Substring(1))) :
                                          string.Format(CultureInfo.CurrentCulture, "{0}?type={1}{2}", VirtualPathUtility.ToAbsolute("~/products/community/modules/news/"), Request["type"], Info.UserIdAttribute);
                }
                FeedRepeater.DataSource = feeds;
                FeedRepeater.DataBind();
            }
        }