Example #1
0
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                String inputStr = context.Request["k"];
                if (String.IsNullOrEmpty(inputStr)) return; // Backspace

                IRepositoryController repositoryController = new RepositoryController();
                var allTags = repositoryController.LoadAllTags();
                var relativeTags = from t in allTags
                                   where t.Name.Equals(inputStr,StringComparison.InvariantCultureIgnoreCase)
                                   || t.Name.IndexOf(inputStr,StringComparison.InvariantCultureIgnoreCase) != -1
                                   || inputStr.IndexOf(t.Name, StringComparison.InvariantCultureIgnoreCase) != -1
                                   select t;

                if (relativeTags.ToList().Count == 0) return;

                context.Response.AddHeader("Cache-Control", "No-Cache");
                context.Response.AddHeader("Pragma", "no-Cache");
                context.Response.AddHeader("Last-Modified", DateTime.UtcNow.ToString("r"));
                context.Response.Expires = -1;
                context.Response.ContentType = "plain/text";

                StringBuilder sb = new StringBuilder();
                foreach (Tag tag in relativeTags)
                    sb.AppendFormat("{0},", tag.Name);
                sb.Remove(sb.Length - 1, 1);

                context.Response.Write(sb.ToString());
            }
            catch (Exception e)
            {
                WayneLogger.WriteLog(e);
            }
        }
Example #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Master.SubTitle = Resources.WayneBlogMaster.NavTags;

            IRepositoryController repositoryController = new RepositoryController();
            IList<Tag> allTags = repositoryController.LoadAllTags();

            const float BASEFOUNTSIZE = 14f;
            int maxQuoteCount = allTags[0].QuoteTime, minQuoteCount = allTags[allTags.Count - 1].QuoteTime;

            StringBuilder sb = new StringBuilder();
            foreach (var t in allTags.OrderBy(t => t.Name))
            {
                float fontSize = ((float)(t.QuoteTime - minQuoteCount) / (float)(maxQuoteCount - minQuoteCount)) * BASEFOUNTSIZE;

                sb.AppendFormat("<a href=\"{0}{1}\" style=\"font-size:{2}px;\">{3}[{4}]</a>  ",
                            ResolveClientUrl("~/Tag/"),
                            // SInce IIS 7(.5) does not allow "+" in the URL except config it, I replace + with "20%", both are right URL encode for a whiteblank.
                            // Refer: http://blogs.iis.net/thomad/archive/2007/12/17/iis7-rejecting-urls-containing.aspx
                            Server.UrlEncode(t.Name).Replace("+", "%20"),
                            Math.Round(fontSize + BASEFOUNTSIZE, 3),
                            t.Name,
                            t.QuoteTime);
            }

            ltrTags.Text = sb.ToString();
        }
Example #3
0
        protected void btnGenerate_Click(object sender, EventArgs e)
        {
            IRepositoryController repositoryController = new RepositoryController();
            System.Collections.Generic.IList<Blog> allBlogs = repositoryController.LoadAllBlogEntries();

            String[] blogIds = txtBlogs.Text.Split(',');

            System.Collections.Generic.IEnumerable<Blog> technicalBlogs =
                allBlogs.Where((b) => blogIds.Contains(b.Id.ToString())).ToList();

            RSSOperator rssOperator = new RSSOperator();
            rssOperator.GenerateCodeProjectFeed(technicalBlogs);
        }
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                String pageNo = context.Request.QueryString["p"];
                //String keyWord = Request.QueryString["k"];

                if (String.IsNullOrEmpty(pageNo)) return;

                int recordCount = 0;
                ClientJsonObj clientJsonObj = new ClientJsonObj();
                IRepositoryController m_RepositoryController = new RepositoryController();
                clientJsonObj.CurPageBlogs = m_RepositoryController.LoadBlogEntries(WebUtil.ConvertToNumber(pageNo), out recordCount);
                foreach (Blog b in clientJsonObj.CurPageBlogs)
                {
                    b.HyperLink = WebUtil.GetBlogHyperLink(b.Id);
                    b.CatBread = m_RepositoryController.LoadCatBreadCrumbsById(b.CategoryId);
                }
                clientJsonObj.TotalBlogCount = recordCount;
                clientJsonObj.PageSize = WayneBlogConstraint.PageSize;

                JavaScriptSerializer serializer = new JavaScriptSerializer();
                String jsonStr = clientJsonObj.CurPageBlogs == null ? "" : serializer.Serialize(clientJsonObj);

                context.Response.Clear();
                //context.Response.CacheControl = "Public";
                //context.Response.Expires = 30; // Content will be expired after 30 minutes.
                //Response.ExpiresAbsolute = DateTime.UtcNow.Subtract(TimeSpan.FromMinutes(1));
                WebUtil.WriteAjaxContentWithGZip(context, "application/json", jsonStr);    // Approximate 12.6 kb:)
                //WebUtil.WriteAjaxContent(context, "application/json", jsonStr);          // Approximate 77.4 kb
                //context.Response.End();
            }
            catch (Exception ex)
            {
                WayneLogger.WriteLog(ex);
            }
        }
Example #5
0
        private bool Validation()
        {
            string title = txtTitle.Text.Trim();
            string permalink = txtPermalink.Text.Trim();
            string tags = txtTag.Text.Trim();
            string content = txtContent.Text.Trim();
            string postTime = txtPostTime.Text;

            List<string> errs = new List<string>();

            if (!WebUtil.CheckLength(title, 50))
                errs.Add("标题超过限制长度50.");
            if (!WebUtil.CheckLength(permalink, 100))
                errs.Add("Permalink超过限制长度100.");
            if (!WebUtil.CheckLength(tags, 500))
                errs.Add("Tag超过限制长度500.");
            if (!WebUtil.CheckLength(content, 200000))
                errs.Add("内容超过限制长度200000.");
            if (!WebUtil.CheckDateTime(postTime))
                errs.Add("发表时间不对.");
            if (!String.IsNullOrEmpty(permalink))
            {
                IRepositoryController iRepositoryController = new RepositoryController();
                bool permlinkExists =
                    iRepositoryController.LoadAllBlogEntries().Any((b) => b.Permalink.Equals(permalink));

                if (permlinkExists)
                {
                    if (toBeEditBlogId == 0) // Create new blog
                        errs.Add("Permalink已经存在了!");
                    else if (permalink != curBlog.Permalink)
                        errs.Add("Permalink已经存在了!");
                }
            }

            if (errs.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("<tr><td bgcolor=\"#FFFFFF\" colspan=\"2\"><dd style=\"color:#FF0000;\">出现下列错误:");

                foreach (string err in errs)
                    sb.AppendFormat("<dl>->{0}</dl>", err);

                sb.Append("</dd></td></tr>");

                ltrErrInfo.Text = sb.ToString();

                return false;
            }
            else
                return true;
        }
Example #6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string condition = Request.QueryString["Condition"];

            if (String.IsNullOrWhiteSpace(condition))
                Master.ReturnIndex();

            try
            {
                IList<Blog> blogList = new List<Blog>();

                if (condition == "Time")
                {
                    int year = Convert.ToInt32(Request.QueryString["Year"]);
                    int month = Convert.ToInt32(Request.QueryString["Month"] == null ? "0" : Request.QueryString["Month"]);
                    int day = Convert.ToInt32(Request.QueryString["Day"] == null ? "0" : Request.QueryString["Day"]);

                    blogList = Blog.LoadByPostDate(year, month, day);

                    String archivePeriod = String.Empty;
                    if (month == 0)
                        archivePeriod = CultureInfo.CurrentUICulture.IetfLanguageTag == "zh-CN" ? year + "年" : year.ToString();
                    else if (day == 0)
                        archivePeriod = (new DateTime(year, month, 1)).ToString("y", CultureInfo.CurrentUICulture);
                    else
                        archivePeriod = (new DateTime(year, month, day)).ToString("D", CultureInfo.CurrentUICulture);

                    Master.SubTitle = archivePeriod + Resources.BlogRenderer.ArchivePostedBlogsText;
                    Master.MetaKeywords.Content = "Blog Archives, " + archivePeriod + ", Wayne Ye";
                    Master.MetaDescription.Content = "List of blogs archives within " + archivePeriod;
                    lblInfo.Text = String.Format("<br /><span class=\"HighlightWords\" style=\"font-weight:bold;\">"
                        + Resources.BlogRenderer.ShowArchiveBlogsText + "</span><p>&nbsp;</p>", archivePeriod, blogList.Count);

                    br.WordsForNoRecords = Resources.BlogRenderer.SearchBlogNoRecord;
                    br.DataSource = blogList;
                    br.AdminMode = Master.IsAdminMode();
                    br.DataBind();
                }
                else if (condition == "Category")
                {
                    IRepositoryController repositoryController = new RepositoryController();
                    String catPermalink = Request.QueryString["Cat"];

                    if (String.IsNullOrWhiteSpace(catPermalink))
                    {
                        Master.ReturnIndex();
                        return;
                    }

                    if (catPermalink.EndsWith("/"))  // Indicates request URI is end with a slash
                        catPermalink = catPermalink.Remove(catPermalink.Length - 1);

                    int catId = repositoryController.LoadCatIdByPermalink(catPermalink);

                    // Cannot find the specified category, throw exception for logging
                    if (catId == 0)
                        Master.Return404();

                    Master.SubTitle = String.Format(Resources.BlogRenderer.CategoryPageTitle, catPermalink.Replace("/", "»"));
                    Master.MetaKeywords.Content = "Blog Category, " + catPermalink.Replace("/", ", ");
                    Master.MetaDescription.Content = "List of blogs under category: " + catPermalink.Replace("/", "->");

                    int totalCount = 0;
                    repositoryController.LoadCategoryBlogs(1, catId, out totalCount);
                    String catBreadcrumbs = repositoryController.LoadCatBreadCrumbsById(catId);

                    lblInfo.Text =
                        String.Format("<br /><span style=\"font-weight:bold;\">" + Resources.BlogRenderer.ShowCategorizedBlogsText
                        + "</span><p>&nbsp;</p>", catBreadcrumbs, totalCount);

                    br.CatId = catId;
                    br.CatPermalink = catPermalink;
                    br.AdminMode = Master.IsAdminMode();
                    br.LoadCategoryBlogs();
                }
            }
            catch (CategoryNotFoundException cne)
            {
                WayneLogger.WriteLog(cne.Message, "CategoryNotFound.log");
                Master.Return404();
            }
            //catch(NullReferenceException nre)
            //{
            //    WayneLogger.WriteLog("Null reference!" + nre.Message + ", categoryNames: " + categoryNames.VisuallyPrint()
            //        , "NullRefBug.log");
            //}
            catch (Exception ex)
            {
                WayneLogger.WriteLog(ex);
                Master.ReturnIndex();
            }
        }
Example #7
0
        public static String GetFullBlogLink(int blogId)
        {
            IRepositoryController repositoryController = new RepositoryController();
            Blog b = repositoryController.LoadBlogById(blogId);

            return String.IsNullOrEmpty(b.Permalink)
                       ? WebUtil.GetBlogHyperLink(b.Id)
                       : WebUtil.GetBlogPermalink(b.Permalink);
        }