Esempio n. 1
0
        public static void Save(DayExtra dayExtra, IBlogDataService dataService)
        {
            FileStream fileStream = FileUtils.OpenForWrite(Path.Combine(ContentPath, dayExtra.FileName));

            if (fileStream != null)
            {
                try
                {
                    XmlSerializer ser = new XmlSerializer(typeof(DayExtra), "urn:newtelligence-com:dasblog:runtime:data");
                    using (StreamWriter writer = new StreamWriter(fileStream))
                    {
                        ser.Serialize(writer, dayExtra);
                    }
                }
                catch (Exception ex)
                {
                    WriteLine(String.Format("ERROR: Cannot write file: {0}", dayExtra.FileName));
                    WriteLine(ex.ToString());
                }
                finally
                {
                    fileStream.Close();
                }
            }
        }
Esempio n. 2
0
        public DayExtra GetDayExtra(DateTime date)
        {
            DayExtra ex = data.GetDayExtra(date);

            ex.Load();
            return(ex);
        }
        private void downloadMenu_Click(object sender, System.EventArgs e)
        {
            ResolveFileCallback old = BlogXData.Resolver;

            BlogXData.Resolver = new ResolveFileCallback(ResolvePathToCache);

            Debug.WriteLine("Begin GetDaysWithEntries");
            DateTime[] dates = browse.GetDaysWithEntries();
            Debug.WriteLine("End GetDaysWithEntries");

            foreach (DateTime date in dates)
            {
                Debug.WriteLine("Begin GetDayEntry");
                DayEntry dayEntry = browse.GetDayEntry(date);
                Debug.WriteLine("End GetDayEntry");
                dayEntry.Save();

                Debug.WriteLine("Begin GetDayExtra");
                DayExtra dayExtra = browse.GetDayExtra(date);
                Debug.WriteLine("End GetDayExtra");
                if (dayExtra.Comments.Count > 0)
                {
                    dayExtra.Save();
                }
            }

            BlogXData.Resolver = old;
        }
Esempio n. 4
0
        private void WebForm1_PreRender(object sender, System.EventArgs e)
        {
            Control            root       = blogContent;
            int                entryCount = 0;
            int                dayCount   = 0;
            DateTime           start      = StartDate;
            HtmlGenericControl date       = null;

            SiteConfig config = SiteConfig.GetSiteConfig();

            categoryList.Data = data;

            bool needHeader = true;

            foreach (DayEntry day in data.Days)
            {
                if (day.Date <= start)
                {
                    if (dayCount < 7)
                    {
                        day.Load();
                        day.Entries.Sort(new EntrySorter());
                        dayCount++;
                        DayExtra extra = data.GetDayExtra(day.Date);
                        needHeader = true;

                        foreach (Entry entry in day.Entries)
                        {
                            if (needHeader)
                            {
                                date = new HtmlGenericControl("div");
                                date.Attributes["class"] = "date";
                                date.ID = day.Date.ToString("yyyy-MM-dd");

                                HtmlGenericControl dateHeader = new HtmlGenericControl("h2");
                                dateHeader.Attributes["class"] = "dateHeader";
                                dateHeader.Controls.Add(new LiteralControl(day.Date.ToString("MMM dd, yyyy")));
                                date.Controls.Add(dateHeader);

                                root.Controls.Add(date);
                                needHeader = false;
                            }
                            entryCount++;

                            EntryView view = (EntryView)LoadControl("EntryView.ascx");
                            view.Data             = data;
                            view.EntryTitleAsLink = config.EntryTitleAsLink;
                            view.Extra            = extra;
                            view.Entry            = entry;
                            date.Controls.Add(view);
                        }
                    }
                }
            }
        }
        private void Page_Load(object sender, System.EventArgs e)
        {
            BlogXUtils.TrackReferrer(Request, Server);

            EntryIdCache ecache = new EntryIdCache();

            ecache.Ensure(data);

            Control root    = content;
            string  entryId = Request.QueryString["guid"];

            if (entryId != null && entryId.Length > 0)
            {
                entryId = entryId.ToUpper();
            }
            else
            {
                entryId = Request.PathInfo.Substring(1).ToUpper();
            }
            DateTime found = new DateTime();

            foreach (EntryIdCacheEntry ece in ecache.Entries)
            {
                if (ece.EntryId.ToUpper() == entryId)
                {
                    found = ece.Date;
                    break;
                }
            }

            foreach (DayEntry day in data.Days)
            {
                if (day.Date == found)
                {
                    day.Load();
                    DayExtra extra = data.GetDayExtra(day.Date);
                    foreach (Entry entry in day.Entries)
                    {
                        if (entryId.ToUpper() == entry.EntryId.ToUpper())
                        {
                            EntryView view = (EntryView)LoadControl("EntryView.ascx");
                            view.DateFormat = "MM/dd/yyyy h:mm tt";
                            view.Data       = data;
                            view.Extra      = extra;
                            view.Entry      = entry;
                            root.Controls.Add(view);

                            break;
                        }
                    }
                }
            }
        }
        void ViewingDayChangedUICallback(DayExtra extra)
        {
            EndOperation();
            Debug.WriteLine("End GetDayExtra");
            viewingDayExtra = extra;

            foreach (Entry entry in viewingDay.Entries)
            {
                ListViewItem item = new ListViewItem();
                item.Text = entry.Created.ToString("hh:mm tt");
                item.SubItems.Add(entry.Categories);
                item.SubItems.Add(entry.Title);
                item.SubItems.Add(viewingDayExtra.GetCommentsFor(entry.EntryId).Count.ToString());
                item.SubItems.Add(entry.EntryId);
                item.Tag = entry;
                entryList.Items.Add(item);
            }
        }
Esempio n. 7
0
        public static void RepairComments(DayExtra dayExtra, IBlogDataService dataService)
        {
            //SDH: Corruption or poorly imported comments can have no entry id!
            // Create one if it's missing. This will slowly repair the damage
            for (int i = 0; i < dayExtra.Comments.Count; i++)
            {
                if (dayExtra.Comments[i].EntryId == null)
                {
                    dayExtra.Comments[i].EntryId = Guid.NewGuid().ToString();

                    Entry entry = dataService.GetEntry(dayExtra.Comments[i].TargetEntryId);
                    if (entry != null)
                    {
                        dayExtra.Comments[i].TargetTitle = entry.Title;
                    }

                    WriteLine(String.Format("...Repaired Comments in {0}", dayExtra.FileName));
                }
            }
        }
        private void add_Click(object sender, System.EventArgs e)
        {
            if (SiteConfig.GetSiteConfig().CommentSpamGuard)
            {
                string word = SiteConfig.GetCommentWords()[(int)ViewState["spamCode"]];
                if (!word.Equals(securityWord.Text))
                {
                    // UNDONE : Should show an error page...
                    //
                    return;
                }
            }

            string entryId = ViewState["entryId"].ToString().ToUpper();

            if (rememberMe.Checked)
            {
                Response.Cookies.Add(new HttpCookie("name", name.Text));
                Response.Cookies.Add(new HttpCookie("email", email.Text));
                Response.Cookies.Add(new HttpCookie("homepage", homepage.Text));
            }
            EntryIdCache ecache = new EntryIdCache();

            ecache.Ensure(data);

            DateTime dateFound = new DateTime();
            bool     found     = false;

            foreach (EntryIdCacheEntry ece in ecache.Entries)
            {
                if (ece.EntryId.ToUpper() == entryId)
                {
                    dateFound = ece.Date;
                    entryId   = ece.EntryId;
                    found     = true;
                    break;
                }
            }

            if (found)
            {
                if (SiteConfig.GetSiteConfig().AllowComments)
                {
                    DayExtra extra = data.GetDayExtra(dateFound);
                    extra.Load();
                    Comment c = new Comment();
                    c.Initialize();
                    c.Author         = name.Text;
                    c.AuthorEmail    = email.Text;
                    c.AuthorHomepage = homepage.Text;
                    c.Content        = Server.HtmlEncode(comment.Text);
                    c.TargetEntryId  = entryId;
                    extra.Comments.Add(c);
                    extra.Save();

                    data.IncrementExtraChange();
                }

                name.Text     = "";
                email.Text    = "";
                homepage.Text = "";
                comment.Text  = "";
                Response.Redirect("default.aspx", false);
            }
        }
        private void CommentView_PreRender(object sender, System.EventArgs e)
        {
            string       entryId = (string)ViewState["entryId"];
            EntryIdCache ecache  = new EntryIdCache();

            ecache.Ensure(data);
            Control root = comments;

            DateTime found = new DateTime();

            foreach (EntryIdCacheEntry ece in ecache.Entries)
            {
                if (ece.EntryId.ToUpper() == entryId)
                {
                    found   = ece.Date;
                    entryId = ece.EntryId;
                    break;
                }
            }

            bool     obfuscateEmail = SiteConfig.GetSiteConfig().ObfuscateEmail;
            DayExtra extra          = data.GetDayExtra(found);

            extra.Load();

            foreach (DayEntry day in data.Days)
            {
                if (day.Date == found)
                {
                    day.Load();
                    foreach (Entry entry in day.Entries)
                    {
                        if (entry.EntryId == entryId)
                        {
                            EntryView entryView = (EntryView)LoadControl("EntryView.ascx");
                            entryView.Data  = data;
                            entryView.Entry = entry;
                            entryView.Extra = extra;
                            comments.Controls.Add(entryView);
                        }
                    }
                }
            }

            commentSpamGuard.Visible = SiteConfig.GetSiteConfig().CommentSpamGuard;
            if (SiteConfig.GetSiteConfig().CommentSpamGuard)
            {
                System.Security.Cryptography.RandomNumberGenerator r = System.Security.Cryptography.RandomNumberGenerator.Create();
                byte[] randomData = new byte[4];
                r.GetBytes(randomData);
                int code = 0;
                for (int i = 0; i < randomData.Length; i++)
                {
                    code += randomData[i];
                }
                code = code % SiteConfig.GetCommentWords().Length;
                securityWordImage.ImageUrl = BlogXUtils.RelativeToRoot("verifyimagegen.ashx?code=" + code);
                ViewState["spamCode"]      = code;
            }


            foreach (Comment c in extra.GetCommentsFor(entryId))
            {
                SingleCommentView view = (SingleCommentView)LoadControl("SingleCommentView.ascx");
                view.Comment        = c;
                view.ObfuscateEmail = obfuscateEmail;
                root.Controls.Add(view);
            }
        }
        void ViewingDayChangedCallback(IAsyncResult result)
        {
            DayExtra extra = ((BlogXBrowsing)result.AsyncState).EndGetDayExtra(result);

            BeginInvoke(new UICallbackDayExtra(ViewingDayChangedUICallback), new object[] { extra });
        }