Beispiel #1
0
        public string EditUrl(CommentViewModel feedback)
        {
            string url = AdminUrl.FeedbackEdit(feedback.Id);

            return(VirtualPathUtility.ToAbsolute(StringHelper.LeftBefore(url, "?")) + "?" +
                   url.RightAfter("?"));
        }
Beispiel #2
0
        // If the user is an admin AND the the skin
        // contains an edit Hyperlink control, this
        // will display the edit control.
        protected virtual void BindEditLink(Entry entry, RepeaterItemEventArgs e)
        {
            var editLink      = e.Item.FindControl("editLink") as HyperLink;
            var editInWlwLink = e.Item.FindControl("editInWlwLink") as HyperLink;

            ExecDisplayEditLink(editLink, AdminUrl.PostsEdit(entry.Id).ToString(), Url.EditIconUrl().ToString());
            ExecDisplayEditLink(editInWlwLink, Url.WindowsLiveWriterEditUrl(entry.Id, this.Blog), Url.EditInWlwIconUrl().ToString());
        }
Beispiel #3
0
 protected void btnOpenIdLogin_LoggedIn(object sender, OpenIdEventArgs e)
 {
     e.Cancel = true;
     if (e.Response.Status == AuthenticationStatus.Authenticated &&
         SecurityHelper.Authenticate(e.ClaimedIdentifier, btnOpenIdLogin.RememberMe))
     {
         ReturnToUrl(AdminUrl.Home());
     }
     else
     {
         openIdMessage.Text = Resources.Login_AuthenticationFailed;
     }
 }
Beispiel #4
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            if (Context != null)
            {
                if (HomeLink != null)
                {
                    HomeLink.NavigateUrl = Url.BlogUrl();
                    ControlHelper.SetTitleIfNone(HomeLink, "Link to the home page.");
                }

                if (ContactLink != null)
                {
                    ContactLink.NavigateUrl = Url.ContactFormUrl();
                    ControlHelper.SetTitleIfNone(ContactLink, "Contact form.");
                }

                if (Archives != null)
                {
                    Archives.NavigateUrl = Url.ArchivesUrl();
                    ControlHelper.SetTitleIfNone(Archives, "View Archives.");
                }

                if (Admin != null)
                {
                    if (Request.IsAuthenticated && SecurityHelper.IsAdmin)
                    {
                        Admin.Text        = "Admin";
                        Admin.NavigateUrl = AdminUrl.Home();
                        ControlHelper.SetTitleIfNone(Admin, "Admin Section.");
                    }
                    else
                    {
                        Admin.Text        = "Login";
                        Admin.NavigateUrl = Url.LoginUrl();
                        ControlHelper.SetTitleIfNone(Admin, "Login Form.");
                    }
                }

                if (Syndication != null)
                {
                    Syndication.NavigateUrl = Url.RssUrl(Blog).ToString();
                    if (Syndication.ImageUrl.StartsWith("~/"))
                    {
                        Syndication.ImageUrl = Url.ResolveUrl(Syndication.ImageUrl);
                    }
                    ControlHelper.SetTitleIfNone(Syndication, "Subscribe to this feed.");
                }
            }
        }
Beispiel #5
0
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            string returnUrl = Request.QueryString["ReturnURL"];
            string username  = tbUserName.Text;
            string password  = tbPassword.Text;
            bool   persist   = chkRememberMe.Checked;

            bool isAdmin = false;

            var blog = Blog;

            if (blog == null || blog.Password == null)
            {
                blog = null;
            }

            if (blog != null)
            {
                isAdmin   = blog.IsValidUser(username, password);
                returnUrl = String.IsNullOrEmpty(returnUrl) ? (string)AdminUrl.Home() : returnUrl;
            }
            else
            {
                returnUrl = String.IsNullOrEmpty(returnUrl) ? "~/HostAdmin/Default.aspx" : returnUrl;
            }

            bool isHostAdmin = HostInfo.ValidateHostAdminPassword(username, password);

            if (!isAdmin && !isHostAdmin)
            {
                Message.Text = LoginFailedMessage;
                return;
            }

            var roles = new string[2];

            if (isAdmin)
            {
                roles[0] = "Admins";
                SubtextContext.HttpContext.SetAuthenticationTicket(blog, username, persist, roles.Where(s => s != null).ToArray());
            }
            if (isHostAdmin)
            {
                roles[1] = "HostAdmins";
                SubtextContext.HttpContext.SetAuthenticationTicket(null, username, persist, forceHostAdmin: true, roles: roles.Where(s => s != null).ToArray());
            }

            ReturnToUrl(returnUrl);
        }
        private void BindCategoriesRepeater()
        {
            //NEED TO USE ROUTING
            string baseUrl = null;

            if (CategoryType != CategoryType.None)
            {
                if (CategoryType == CategoryType.ImageCollection)
                {
                    categoryLinks.Add(new LinkCategoryLink("All Galleries", AdminUrl.EditGalleries()));
                    baseUrl = "EditGalleries.aspx";
                }
                else if (CategoryType == CategoryType.LinkCollection)
                {
                    categoryLinks.Add(new LinkCategoryLink("All Categories", AdminUrl.EditLinks()));
                    baseUrl = "EditLinks.aspx";
                }
                else if (CategoryType == CategoryType.PostCollection)
                {
                    categoryLinks.Add(new LinkCategoryLink("All Categories", AdminUrl.PostsList()));
                    baseUrl = "posts/default.aspx";
                }
                else if (CategoryType == CategoryType.StoryCollection)
                {
                    categoryLinks.Add(new LinkCategoryLink("All Categories", AdminUrl.ArticlesList()));
                    baseUrl = "articles/default.aspx";
                }

                ICollection <LinkCategory> categories = Repository.GetCategories(CategoryType, ActiveFilter.None);
                foreach (LinkCategory current in categories)
                {
                    string url = string.Format(CultureInfo.InvariantCulture, "{0}?{1}={2}&{3}={4}",
                                               Url.AdminUrl(baseUrl),
                                               Keys.QRYSTR_CATEGORYID,
                                               current.Id,
                                               Keys.QRYSTR_CATEGORYTYPE,
                                               CategoryType
                                               );
                    categoryLinks.Add(new LinkCategoryLink(current.Title, url));
                }
            }
            rptCategories.DataSource = categoryLinks;
            rptCategories.DataBind();
        }
Beispiel #7
0
        private void BindLocalUI()
        {
            var newPostLink = new HyperLink {
                Text = Resources.Label_NewPost, NavigateUrl = AdminUrl.PostsEdit()
            };

            AdminMasterPage.AddToActions(newPostLink);

            HyperLink lnkEditCategories = Utilities.CreateHyperLink(Resources.Label_EditCategories,
                                                                    AdminUrl.EditCategories(categoryLinks.CategoryType));

            AdminMasterPage.AddToActions(lnkEditCategories);

            LinkButton lkbRebuildTags = Utilities.CreateLinkButton(Resources.Label_RebuildAllTags);

            lkbRebuildTags.CausesValidation = false;
            lkbRebuildTags.Click           += OnRebuildTagsClick;
            AdminMasterPage.AddToActions(lkbRebuildTags);
        }
Beispiel #8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Config.Settings.AllowImages)
            {
                Response.Redirect(AdminUrl.Home());
            }

            if (!IsPostBack)
            {
                HideImages();
                ShowResults();
                BindList();
                ckbIsActiveImage.Checked = Preferences.AlwaysCreateIsActive;
                ckbNewIsActive.Checked   = Preferences.AlwaysCreateIsActive;

                if (null != Request.QueryString[Keys.QRYSTR_CATEGORYID])
                {
                    CategoryId = Convert.ToInt32(Request.QueryString[Keys.QRYSTR_CATEGORYID]);
                    BindGallery(CategoryId);
                }
            }
        }
Beispiel #9
0
        // If the user is an admin AND the the skin
        // contains an edit Hyperlink control, this
        // will display the edit control.
        private void DisplayEditLink(IIdentifiable entry)
        {
            if (editLink != null)
            {
                if (SecurityHelper.IsAdmin)
                {
                    editLink.Visible     = true;
                    editLink.NavigateUrl = AdminUrl.PostsEdit(entry.Id);
                    ControlHelper.SetTitleIfNone(editLink, Resources.ViewPost_EditThisEntry);

                    if (String.IsNullOrEmpty(editLink.Text) && String.IsNullOrEmpty(editLink.ImageUrl))
                    {
                        //We'll slap on our little pencil icon.
                        editLink.ImageUrl = Url.EditIconUrl();
                    }
                }
                else
                {
                    editLink.Visible = false;
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            InstallationManager.ResetInstallationStatusCache();

            if (paraBlogLink != null)
            {
                paraBlogLink.Visible = false;
            }
            if (paraBlogAdminLink != null)
            {
                paraBlogAdminLink.Visible = false;
            }
            if (paraBlogmlImport != null)
            {
                paraBlogmlImport.Visible = false;
            }

            if (Config.CurrentBlog != null)
            {
                if (lnkBlog != null && paraBlogLink != null)
                {
                    paraBlogLink.Visible = true;
                    lnkBlog.HRef         = Url.BlogUrl();
                }

                if (lnkBlogAdmin != null && paraBlogAdminLink != null)
                {
                    paraBlogAdminLink.Visible = true;
                    lnkBlogAdmin.HRef         = AdminUrl.Home();
                }

                if (lnkBlogMl != null && paraBlogmlImport != null)
                {
                    paraBlogmlImport.Visible = true;
                    lnkBlogMl.HRef           = AdminUrl.ImportExport();
                }
            }
        }
        // If the user is an admin AND the the skin
        // contains an edit Hyperlink control, this
        // will display the edit control.
        protected virtual void BindEditLink(Entry entry, RepeaterItemEventArgs e)
        {
            var editLink = e.Item.FindControl("editLink") as HyperLink;

            if (editLink != null)
            {
                if (SecurityHelper.IsAdmin)
                {
                    editLink.Visible = true;
                    if (editLink.Text.Length == 0 && editLink.ImageUrl.Length == 0)
                    {
                        //We'll slap on our little pencil icon.
                        editLink.ImageUrl = Url.EditIconUrl();
                        ControlHelper.SetTitleIfNone(editLink, Resources.EntryList_ClickToView);
                        editLink.NavigateUrl = AdminUrl.PostsEdit(entry.Id);
                    }
                }
                else
                {
                    editLink.Visible = false;
                }
            }
        }
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            string returnUrl = Request.QueryString["ReturnURL"];

            if (Blog == null ||
                (returnUrl != null && returnUrl.Contains("HostAdmin", StringComparison.OrdinalIgnoreCase)))
            {
                if (!AuthenticateHostAdmin())
                {
                    Log.Warn("HostAdmin login failure for " + tbUserName.Text);
                    Message.Text = LoginFailedMessage;
                    return;
                }
                ReturnToUrl("~/HostAdmin/Default.aspx");
                return;
            }
            if (SubtextContext.HttpContext.Authenticate(Blog, tbUserName.Text, tbPassword.Text, chkRememberMe.Checked))
            {
                ReturnToUrl(AdminUrl.Home());
                return;
            }
            Log.Warn("Admin login failure for " + tbUserName.Text);
            Message.Text = LoginFailedMessage;
        }
Beispiel #13
0
 // If the user is an admin AND the the skin
 // contains an edit Hyperlink control, this
 // will display the edit control.
 private void DisplayEditLink(IIdentifiable entry)
 {
     ExecDisplayEditLink(editLink, AdminUrl.PostsEdit(entry.Id).ToString(), Url.EditIconUrl().ToString());
     ExecDisplayEditLink(editInWlwLink, Url.WindowsLiveWriterEditUrl(entry.Id, this.Blog), Url.EditInWlwIconUrl().ToString());
 }
Beispiel #14
0
        // Customizes the display row for each comment.
        protected void CommentsCreated(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                var feedbackItem = (FeedbackItem)e.Item.DataItem;
                _comment = new CommentViewModel(feedbackItem, SubtextContext);
                if (feedbackItem != null)
                {
                    var title = (Literal)(e.Item.FindControl("Title"));
                    if (title != null)
                    {
                        // we should probably change skin format to dynamically wire up to
                        // skin located title and permalinks at some point
                        title.Text = string.Format(CultureInfo.InvariantCulture, "{2}&nbsp;{0}{1}",
                                                   Anchor(feedbackItem.Id),
                                                   feedbackItem.Title,
                                                   Link(feedbackItem.Title, Url.FeedbackUrl(feedbackItem)));
                    }

                    //Shows the name of the commenter with a link if provided.
                    var namelink = (HyperLink)e.Item.FindControl("NameLink");
                    if (namelink != null)
                    {
                        if (feedbackItem.SourceUrl != null)
                        {
                            namelink.NavigateUrl = feedbackItem.SourceUrl.ToString();
                            ControlHelper.SetTitleIfNone(namelink, feedbackItem.SourceUrl.ToString());
                        }

                        if (feedbackItem.FeedbackType == FeedbackType.Comment)
                        {
                            namelink.Text = feedbackItem.Author;
                            ControlHelper.SetTitleIfNone(namelink, feedbackItem.Author);
                        }
                        else if (feedbackItem.FeedbackType == FeedbackType.PingTrack)
                        {
                            namelink.Text = !String.IsNullOrEmpty(feedbackItem.Author)
                                                ? feedbackItem.Author
                                                : "Pingback/TrackBack";
                            ControlHelper.SetTitleIfNone(namelink, "PingBack/TrackBack");
                        }

                        if (feedbackItem.IsBlogAuthor)
                        {
                            HtmlHelper.AppendCssClass(namelink, "author");
                        }
                    }

                    var postDate = (Literal)(e.Item.FindControl("PostDate"));
                    if (postDate != null)
                    {
                        postDate.Text = feedbackItem.DateCreated.ToShortDateString() + " " +
                                        feedbackItem.DateCreated.ToShortTimeString();
                    }

                    var post = e.Item.FindControl("PostText") as Literal;
                    if (post != null)
                    {
                        if (feedbackItem.Body.Length > 0)
                        {
                            post.Text = feedbackItem.Body;
                            if (feedbackItem.Body.Length == 0 && feedbackItem.FeedbackType == FeedbackType.PingTrack)
                            {
                                post.Text = "Pingback / Trackback";
                            }
                        }
                    }

                    if (_gravatarService.Enabled)
                    {
                        var gravatarImage = e.Item.FindControl("GravatarImg") as Image;
                        if (gravatarImage != null)
                        {
                            //This allows per-skin configuration of the default gravatar image.
                            string defaultGravatarImage = gravatarImage.Attributes["PlaceHolderImage"];

                            string ip;
                            if (feedbackItem.IpAddress != null)
                            {
                                ip = feedbackItem.IpAddress.ToString();
                            }
                            else
                            {
                                ip = string.Format("{0} {1}", DateTime.Now.Millisecond, DateTime.Now.Second);
                            }

                            //This allows a host-wide setting of the default gravatar image.
                            string gravatarUrl = null;
                            if (!String.IsNullOrEmpty(feedbackItem.Email))
                            {
                                if (!String.IsNullOrEmpty(defaultGravatarImage))
                                {
                                    string host             = Request.Url.Host;
                                    string scheme           = Request.Url.Scheme;
                                    string port             = Request.Url.Port == 80 ? string.Empty : string.Format(":{0}", Request.Url.Port);
                                    string defaultImagePath = HttpHelper.ExpandTildePath(defaultGravatarImage);
                                    defaultGravatarImage = string.Format(CultureInfo.InvariantCulture, "{0}://{1}{2}{3}",
                                                                         scheme, host, port, defaultImagePath);
                                    defaultGravatarImage = HttpUtility.UrlEncode(defaultGravatarImage);
                                }
                                gravatarUrl = _gravatarService.GenerateUrl(feedbackItem.Email, defaultGravatarImage);
                            }
                            if (!String.IsNullOrEmpty(gravatarUrl))
                            {
                                gravatarImage.Attributes.Remove("PlaceHolderImage");
                                if (gravatarUrl.Length != 0)
                                {
                                    gravatarImage.ImageUrl = gravatarUrl;
                                    gravatarImage.Visible  = true;
                                }
                            }
                            else
                            {
                                string identiconUrl = Url.IdenticonUrl(IdenticonUtil.Code(ip));
                                gravatarImage.ImageUrl = identiconUrl;
                                gravatarImage.Visible  = true;
                            }
                        }
                    }

                    if (Request.IsAuthenticated && SecurityHelper.IsAdmin)
                    {
                        var editCommentTextLink = (HyperLink)(e.Item.FindControl("EditCommentTextLink"));
                        if (editCommentTextLink != null)
                        {
                            editCommentTextLink.NavigateUrl = AdminUrl.FeedbackEdit(feedbackItem.Id);
                            if (String.IsNullOrEmpty(editCommentTextLink.Text))
                            {
                                editCommentTextLink.Text = "Edit Comment " +
                                                           feedbackItem.Id.ToString(CultureInfo.InstalledUICulture);
                            }
                            ControlHelper.SetTitleIfNone(editCommentTextLink, "Click to edit this entry.");
                        }
                        var editCommentImgLink = (HyperLink)(e.Item.FindControl("EditCommentImgLink"));
                        if (editCommentImgLink != null)
                        {
                            editCommentImgLink.NavigateUrl = AdminUrl.FeedbackEdit(feedbackItem.Id);
                            if (String.IsNullOrEmpty(editCommentImgLink.ImageUrl))
                            {
                                editCommentImgLink.ImageUrl = Url.EditIconUrl();
                            }
                            ControlHelper.SetTitleIfNone(editCommentImgLink,
                                                         "Click to edit comment " +
                                                         feedbackItem.Id.ToString(CultureInfo.InstalledUICulture));
                        }
                    }
                }
            }
        }
Beispiel #15
0
 protected void btnSave_Click(object sender, EventArgs e)
 {
     Response.Redirect(AdminUrl.Export(chkEmbedAttach.Checked));
 }
Beispiel #16
0
        // Customizes the display row for each comment.
        protected void CommentsCreated(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                var feedbackItem = (FeedbackItem)e.Item.DataItem;
                _comment = new CommentViewModel(feedbackItem, SubtextContext);
                if (feedbackItem != null)
                {
                    var title = (Literal)(e.Item.FindControl("Title"));
                    if (title != null)
                    {
                        // we should probably change skin format to dynamically wire up to
                        // skin located title and permalinks at some point
                        title.Text = string.Format(CultureInfo.InvariantCulture, "{2}&nbsp;{0}{1}",
                                                   Anchor(feedbackItem.Id),
                                                   feedbackItem.Title,
                                                   Link(feedbackItem.Title, Url.FeedbackUrl(feedbackItem)));
                    }

                    //Shows the name of the commenter with a link if provided.
                    var namelink = (HyperLink)e.Item.FindControl("NameLink");
                    if (namelink != null)
                    {
                        if (feedbackItem.SourceUrl != null)
                        {
                            namelink.NavigateUrl = feedbackItem.SourceUrl.ToString();
                            ControlHelper.SetTitleIfNone(namelink, feedbackItem.SourceUrl.ToString());
                        }

                        if (feedbackItem.FeedbackType == FeedbackType.Comment)
                        {
                            namelink.Text = feedbackItem.Author;
                            ControlHelper.SetTitleIfNone(namelink, feedbackItem.Author);
                        }
                        else if (feedbackItem.FeedbackType == FeedbackType.PingTrack)
                        {
                            namelink.Text = !String.IsNullOrEmpty(feedbackItem.Author)
                                                ? feedbackItem.Author
                                                : "Pingback/TrackBack";
                            ControlHelper.SetTitleIfNone(namelink, "PingBack/TrackBack");
                        }

                        if (feedbackItem.IsBlogAuthor)
                        {
                            HtmlHelper.AppendCssClass(namelink, "author");
                        }
                    }

                    var postDate = (Literal)(e.Item.FindControl("PostDate"));
                    if (postDate != null)
                    {
                        var dateCreated = feedbackItem.DateCreated;

                        postDate.Text = dateCreated.ToShortDateString() + " " +
                                        dateCreated.ToShortTimeString();
                    }

                    var post = e.Item.FindControl("PostText") as Literal;
                    if (post != null)
                    {
                        if (!String.IsNullOrEmpty(feedbackItem.Body))
                        {
                            post.Text = feedbackItem.Body;
                            if (feedbackItem.Body.Length == 0 && feedbackItem.FeedbackType == FeedbackType.PingTrack)
                            {
                                post.Text = "Pingback / Trackback";
                            }
                        }
                    }

                    if (_gravatarService.Enabled)
                    {
                        var gravatarImage = e.Item.FindControl("GravatarImg") as Image;
                        if (gravatarImage != null)
                        {
                            string ip;
                            if (feedbackItem.IpAddress != null)
                            {
                                ip = feedbackItem.IpAddress.ToString();
                            }
                            else
                            {
                                ip = string.Format("{0} {1}", DateTime.UtcNow.Millisecond, DateTime.UtcNow.Second);
                            }

                            string gravatarUrl = gravatarUrl = _gravatarService.GenerateUrl(feedbackItem.Email);
                            gravatarImage.Attributes.Remove("PlaceHolderImage");
                            gravatarImage.ImageUrl = gravatarUrl;
                            gravatarImage.Visible  = true;
                        }
                    }

                    if (Request.IsAuthenticated && User.IsAdministrator())
                    {
                        var editCommentTextLink = (HyperLink)(e.Item.FindControl("EditCommentTextLink"));
                        if (editCommentTextLink != null)
                        {
                            editCommentTextLink.NavigateUrl = AdminUrl.FeedbackEdit(feedbackItem.Id);
                            if (String.IsNullOrEmpty(editCommentTextLink.Text))
                            {
                                editCommentTextLink.Text = "Edit Comment " +
                                                           feedbackItem.Id.ToString(CultureInfo.InstalledUICulture);
                            }
                            ControlHelper.SetTitleIfNone(editCommentTextLink, "Click to edit this entry.");
                        }
                        var editCommentImgLink = (HyperLink)(e.Item.FindControl("EditCommentImgLink"));
                        if (editCommentImgLink != null)
                        {
                            editCommentImgLink.NavigateUrl = AdminUrl.FeedbackEdit(feedbackItem.Id);
                            if (String.IsNullOrEmpty(editCommentImgLink.ImageUrl))
                            {
                                editCommentImgLink.ImageUrl = Url.EditIconUrl();
                            }
                            ControlHelper.SetTitleIfNone(editCommentImgLink,
                                                         "Click to edit comment " +
                                                         feedbackItem.Id.ToString(CultureInfo.InstalledUICulture));
                        }
                    }
                }
            }
        }
Beispiel #17
0
        public string ReferrersUrl(object item)
        {
            var entry = (Entry)item;

            return(AdminUrl.Referrers(entry.Id));
        }
Beispiel #18
0
        public string ArticlesEditUrl(object item)
        {
            var entry = (Entry)item;

            return(AdminUrl.ArticlesEdit(entry.Id));
        }
Beispiel #19
0
        public string PostsEditUrl(object item)
        {
            var entry = (Entry)item;

            return(AdminUrl.PostsEdit(entry.Id));
        }
 public string AjaxServicesUrl()
 {
     return(AdminUrl.AjaxServices() + "?proxy");
 }