Exemple #1
0
        public string GetHTMLLog(List <ChangeSet> change_sets)
        {
            if (change_sets == null || change_sets.Count == 0)
            {
                return(SparkleShare.Controller.EventLogHTML.Replace("<!-- $event-log-content -->",
                                                                    "<div class='day-entry'><div class='day-entry-header'>This project does not keep a history.</div></div>"));
            }

            List <ActivityDay> activity_days = new List <ActivityDay> ();

            change_sets.Sort((x, y) => (x.Timestamp.CompareTo(y.Timestamp)));
            change_sets.Reverse();

            foreach (ChangeSet change_set in change_sets)
            {
                bool change_set_inserted = false;

                foreach (ActivityDay stored_activity_day in activity_days)
                {
                    if (stored_activity_day.Date.Year == change_set.Timestamp.Year &&
                        stored_activity_day.Date.Month == change_set.Timestamp.Month &&
                        stored_activity_day.Date.Day == change_set.Timestamp.Day)
                    {
                        stored_activity_day.Add(change_set);

                        change_set_inserted = true;
                        break;
                    }
                }

                if (!change_set_inserted)
                {
                    ActivityDay activity_day = new ActivityDay(change_set.Timestamp);
                    activity_day.Add(change_set);
                    activity_days.Add(activity_day);
                }
            }

            string event_log_html   = SparkleShare.Controller.EventLogHTML;
            string day_entry_html   = SparkleShare.Controller.DayEntryHTML;
            string event_entry_html = SparkleShare.Controller.EventEntryHTML;
            string event_log        = "";

            foreach (ActivityDay activity_day in activity_days)
            {
                string event_entries = "";

                foreach (ChangeSet change_set in activity_day)
                {
                    string event_entry = "<dl>";

                    foreach (Change change in change_set.Changes)
                    {
                        if (change.Type != ChangeType.Moved)
                        {
                            event_entry += "<dd class='" + change.Type.ToString().ToLower() + "'>";

                            if (!change.IsFolder)
                            {
                                event_entry += "<small><a href=\"history://" + change_set.Folder.Name + "/" +
                                               change.Path + "\" title=\"View revisions\">" + change.Timestamp.ToString("HH:mm") +
                                               " &#x25BE;</a></small> &nbsp;";
                            }
                            else
                            {
                                event_entry += "<small>" + change.Timestamp.ToString("HH:mm") + "</small> &nbsp;";
                            }

                            event_entry += FormatBreadCrumbs(change_set.Folder.FullPath, change.Path);
                            event_entry += "</dd>";
                        }
                        else
                        {
                            event_entry += "<dd class='moved'>";
                            event_entry += "<small>" + change.Timestamp.ToString("HH:mm") + "</small> &nbsp;";
                            event_entry += FormatBreadCrumbs(change_set.Folder.FullPath, change.Path);
                            event_entry += "<br>";
                            event_entry += "<small>" + change.Timestamp.ToString("HH:mm") + "</small> &nbsp;";
                            event_entry += FormatBreadCrumbs(change_set.Folder.FullPath, change.MovedToPath);
                            event_entry += "</dd>";
                        }
                    }

                    event_entry += "</dl>";

                    string timestamp = change_set.Timestamp.ToString("H:mm");

                    if (!change_set.FirstTimestamp.Equals(new DateTime()) &&
                        !change_set.Timestamp.ToString("H:mm").Equals(change_set.FirstTimestamp.ToString("H:mm")))
                    {
                        timestamp = change_set.FirstTimestamp.ToString("H:mm") + " – " + timestamp;
                    }

                    // TODO: List commit messages if there are any
                    event_entries += event_entry_html.Replace("<!-- $event-entry-content -->", event_entry)
                                     .Replace("<!-- $event-user-name -->", change_set.User.Name)
                                     .Replace("<!-- $event-user-email -->", change_set.User.Email)
                                     .Replace("<!-- $event-avatar-url -->", GetAvatarFilePath(change_set.User))
                                     .Replace("<!-- $event-url -->", change_set.RemoteUrl.ToString())
                                     .Replace("<!-- $event-revision -->", change_set.Revision);

                    if (this.selected_folder == null)
                    {
                        event_entries = event_entries.Replace("<!-- $event-folder -->", " @ " + change_set.Folder.Name);
                        event_entries = event_entries.Replace("<!-- $event-folder-url -->", change_set.Folder.FullPath);
                    }
                }

                string   day_entry = "";
                DateTime today     = DateTime.Now;
                DateTime yesterday = DateTime.Now.AddDays(-1);

                if (today.Day == activity_day.Date.Day &&
                    today.Month == activity_day.Date.Month &&
                    today.Year == activity_day.Date.Year)
                {
                    day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                       "<span id='today' name='" +
                                                       activity_day.Date.ToString("dddd, MMMM d", CultureInfo.InvariantCulture) + "'>" + "Today" +
                                                       "</span>");
                }
                else if (yesterday.Day == activity_day.Date.Day &&
                         yesterday.Month == activity_day.Date.Month &&
                         yesterday.Year == activity_day.Date.Year)
                {
                    day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                       "<span id='yesterday' name='" + activity_day.Date.ToString("dddd, MMMM d", CultureInfo.InvariantCulture) + "'>" +
                                                       "Yesterday" +
                                                       "</span>");
                }
                else
                {
                    if (activity_day.Date.Year != DateTime.Now.Year)
                    {
                        day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                           activity_day.Date.ToString("dddd, MMMM d, yyyy", CultureInfo.InvariantCulture));
                    }
                    else
                    {
                        day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                           activity_day.Date.ToString("dddd, MMMM d", CultureInfo.InvariantCulture));
                    }
                }

                event_log += day_entry.Replace("<!-- $day-entry-content -->", event_entries);
            }

            int midnight = (int)(DateTime.Today.AddDays(1) - new DateTime(1970, 1, 1)).TotalSeconds;

            string html = event_log_html.Replace("<!-- $event-log-content -->", event_log);

            html = html.Replace("<!-- $midnight -->", midnight.ToString());

            return(html);
        }
        public string GetHTMLLog(string name)
        {
            List <SparkleCommit> commits       = GetLog(name);
            List <ActivityDay>   activity_days = new List <ActivityDay> ();

            if (commits.Count == 0)
            {
                return(null);
            }

            foreach (SparkleCommit commit in commits)
            {
                GetAvatar(commit.UserEmail, 36);

                bool commit_inserted = false;
                foreach (ActivityDay stored_activity_day in activity_days)
                {
                    if (stored_activity_day.DateTime.Year == commit.DateTime.Year &&
                        stored_activity_day.DateTime.Month == commit.DateTime.Month &&
                        stored_activity_day.DateTime.Day == commit.DateTime.Day)
                    {
                        stored_activity_day.Add(commit);
                        commit_inserted = true;
                        break;
                    }
                }

                if (!commit_inserted)
                {
                    ActivityDay activity_day = new ActivityDay(commit.DateTime);
                    activity_day.Add(commit);
                    activity_days.Add(activity_day);
                }
            }


            string event_log_html   = EventLogHTML;
            string day_entry_html   = DayEntryHTML;
            string event_entry_html = EventEntryHTML;


            string event_log = "";

            foreach (ActivityDay activity_day in activity_days)
            {
                string event_entries = "";

                foreach (SparkleCommit change_set in activity_day)
                {
                    string event_entry = "<dl>";

                    if (change_set.IsMerge)
                    {
                        event_entry += "<dt>Merged a branch</dt>";
                    }
                    else
                    {
                        if (change_set.Edited.Count > 0)
                        {
                            event_entry += "<dt>Edited</dt>";

                            foreach (string file_path in change_set.Edited)
                            {
                                string absolute_file_path = SparkleHelpers.CombineMore(SparklePaths.SparklePath,
                                                                                       name, file_path);

                                if (File.Exists(absolute_file_path))
                                {
                                    event_entry += "<dd><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
                                }
                                else
                                {
                                    event_entry += "<dd>" + file_path + "</dd>";
                                }
                            }
                        }

                        if (change_set.Added.Count > 0)
                        {
                            event_entry += "<dt>Added</dt>";

                            foreach (string file_path in change_set.Added)
                            {
                                string absolute_file_path = SparkleHelpers.CombineMore(SparklePaths.SparklePath,
                                                                                       name, file_path);

                                if (File.Exists(absolute_file_path))
                                {
                                    event_entry += "<dd><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
                                }
                                else
                                {
                                    event_entry += "<dd>" + file_path + "</dd>";
                                }
                            }
                        }

                        if (change_set.Deleted.Count > 0)
                        {
                            event_entry += "<dt>Deleted</dt>";

                            foreach (string file_path in change_set.Deleted)
                            {
                                string absolute_file_path = SparkleHelpers.CombineMore(SparklePaths.SparklePath,
                                                                                       name, file_path);

                                if (File.Exists(absolute_file_path))
                                {
                                    event_entry += "<dd><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
                                }
                                else
                                {
                                    event_entry += "<dd>" + file_path + "</dd>";
                                }
                            }
                        }

                        if (change_set.MovedFrom.Count > 0)
                        {
                            event_entry += "<dt>Moved</dt>";

                            int i = 0;
                            foreach (string file_path in change_set.MovedFrom)
                            {
                                string to_file_path       = change_set.MovedTo [i];
                                string absolute_file_path = SparkleHelpers.CombineMore(SparklePaths.SparklePath,
                                                                                       name, file_path);
                                string absolute_to_file_path = SparkleHelpers.CombineMore(SparklePaths.SparklePath,
                                                                                          name, to_file_path);

                                if (File.Exists(absolute_file_path))
                                {
                                    event_entry += "<dd><a href='" + absolute_file_path + "'>" + file_path + "</a><br/><span class='moved-arrow'>&rarr;</span> ";
                                }
                                else
                                {
                                    event_entry += "<dd>" + file_path + "<br/><span class='moved-arrow'>&rarr;</span> ";
                                }

                                if (File.Exists(absolute_to_file_path))
                                {
                                    event_entry += "<a href='" + absolute_to_file_path + "'>" + to_file_path + "</a></dd>";
                                }
                                else
                                {
                                    event_entry += to_file_path + "</dd>";
                                }

                                i++;
                            }
                        }
                    }

                    event_entry += "</dl>";

                    event_entries += event_entry_html.Replace("<!-- $event-entry-content -->", event_entry)
                                     .Replace("<!-- $event-user-name -->", change_set.UserName)
                                     .Replace("<!-- $event-avatar-url -->", "file://" + GetAvatar(change_set.UserEmail, 36))
                                     .Replace("<!-- $event-time -->", change_set.DateTime.ToString("H:mm"));
                }


                string day_entry = "";

                DateTime today     = DateTime.Now;
                DateTime yesterday = DateTime.Now.AddDays(-1);

                if (today.Day == activity_day.DateTime.Day &&
                    today.Month == activity_day.DateTime.Month &&
                    today.Year == activity_day.DateTime.Year)
                {
                    day_entry = day_entry_html.Replace("<!-- $day-entry-header -->", "<b>Today</b>");
                }
                else if (yesterday.Day == activity_day.DateTime.Day &&
                         yesterday.Month == activity_day.DateTime.Month &&
                         yesterday.Year == activity_day.DateTime.Year)
                {
                    day_entry = day_entry_html.Replace("<!-- $day-entry-header -->", "<b>Yesterday</b>");
                }
                else
                {
                    if (activity_day.DateTime.Year != DateTime.Now.Year)
                    {
                        // TRANSLATORS: This is the date in the event logs
                        day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                           "<b>" + activity_day.DateTime.ToString(_("ddd MMM d, yyyy")) + "</b>");
                    }
                    else
                    {
                        // TRANSLATORS: This is the date in the event logs, without the year
                        day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                           "<b>" + activity_day.DateTime.ToString(_("ddd MMM d")) + "</b>");
                    }
                }

                event_log += day_entry.Replace("<!-- $day-entry-content -->", event_entries);
            }


            string html = event_log_html.Replace("<!-- $event-log-content -->", event_log);

            return(html);
        }
Exemple #3
0
        public string GetHTMLLog(List <SparkleChangeSet> change_sets)
        {
            if (change_sets.Count == 0)
            {
                return("");
            }

            List <ActivityDay> activity_days = new List <ActivityDay> ();

            change_sets.Sort((x, y) => (x.Timestamp.CompareTo(y.Timestamp)));
            change_sets.Reverse();

            foreach (SparkleChangeSet change_set in change_sets)
            {
                bool change_set_inserted = false;

                foreach (ActivityDay stored_activity_day in activity_days)
                {
                    if (stored_activity_day.Date.Year == change_set.Timestamp.Year &&
                        stored_activity_day.Date.Month == change_set.Timestamp.Month &&
                        stored_activity_day.Date.Day == change_set.Timestamp.Day)
                    {
                        stored_activity_day.Add(change_set);

                        change_set_inserted = true;
                        break;
                    }
                }

                if (!change_set_inserted)
                {
                    ActivityDay activity_day = new ActivityDay(change_set.Timestamp);
                    activity_day.Add(change_set);
                    activity_days.Add(activity_day);
                }
            }

            string event_log_html   = Program.Controller.EventLogHTML;
            string day_entry_html   = Program.Controller.DayEntryHTML;
            string event_entry_html = Program.Controller.EventEntryHTML;
            string event_log        = "";

            foreach (ActivityDay activity_day in activity_days)
            {
                string event_entries = "";

                foreach (SparkleChangeSet change_set in activity_day)
                {
                    string event_entry = "<dl>";

                    foreach (SparkleChange change in change_set.Changes)
                    {
                        if (change.Type != SparkleChangeType.Moved)
                        {
                            event_entry += "<dd class='" + change.Type.ToString().ToLower() + "'>";
                            event_entry += "<small>" + change.Timestamp.ToString("HH:mm") + "</small> &nbsp;";
                            event_entry += FormatBreadCrumbs(change_set.Folder.FullPath, change.Path);
                            event_entry += "</dd>";
                        }
                        else
                        {
                            event_entry += "<dd class='moved'>";
                            event_entry += FormatBreadCrumbs(change_set.Folder.FullPath, change.Path);
                            event_entry += "<br>";
                            event_entry += "<small>" + change.Timestamp.ToString("HH:mm") + "</small> &nbsp;";
                            event_entry += FormatBreadCrumbs(change_set.Folder.FullPath, change.MovedToPath);
                            event_entry += "</dd>";
                        }
                    }

                    string change_set_avatar = Program.Controller.GetAvatar(change_set.User.Email, 48);

                    if (change_set_avatar != null)
                    {
                        change_set_avatar = "file://" + change_set_avatar.Replace("\\", "/");
                    }
                    else
                    {
                        change_set_avatar = "file://<!-- $pixmaps-path -->/" +
                                            Program.Controller.AssignAvatar(change_set.User.Email);
                    }

                    event_entry += "</dl>";

                    string timestamp = change_set.Timestamp.ToString("H:mm");

                    if (!change_set.FirstTimestamp.Equals(new DateTime()) &&
                        !change_set.Timestamp.ToString("H:mm").Equals(change_set.FirstTimestamp.ToString("H:mm")))
                    {
                        timestamp = change_set.FirstTimestamp.ToString("H:mm") + " – " + timestamp;
                    }

                    event_entries += event_entry_html.Replace("<!-- $event-entry-content -->", event_entry)
                                     .Replace("<!-- $event-user-name -->", change_set.User.Name)
                                     .Replace("<!-- $event-avatar-url -->", change_set_avatar)
                                     .Replace("<!-- $event-url -->", change_set.RemoteUrl.ToString())
                                     .Replace("<!-- $event-revision -->", change_set.Revision);

                    if (this.selected_folder == null)
                    {
                        event_entries = event_entries.Replace("<!-- $event-folder -->", " @ " + change_set.Folder.Name);
                    }
                }

                string   day_entry = "";
                DateTime today     = DateTime.Now;
                DateTime yesterday = DateTime.Now.AddDays(-1);

                if (today.Day == activity_day.Date.Day &&
                    today.Month == activity_day.Date.Month &&
                    today.Year == activity_day.Date.Year)
                {
                    day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                       "<span id='today' name='" +
                                                       activity_day.Date.ToString("dddd, MMMM d") + "'>" + "Today" +
                                                       "</span>");
                }
                else if (yesterday.Day == activity_day.Date.Day &&
                         yesterday.Month == activity_day.Date.Month &&
                         yesterday.Year == activity_day.Date.Year)
                {
                    day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                       "<span id='yesterday' name='" + activity_day.Date.ToString("dddd, MMMM d") + "'>" +
                                                       "Yesterday" +
                                                       "</span>");
                }
                else
                {
                    if (activity_day.Date.Year != DateTime.Now.Year)
                    {
                        day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                           activity_day.Date.ToString("dddd, MMMM d, yyyy"));
                    }
                    else
                    {
                        day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                           activity_day.Date.ToString("dddd, MMMM d"));
                    }
                }

                event_log += day_entry.Replace("<!-- $day-entry-content -->", event_entries);
            }

            int midnight = (int)(DateTime.Today.AddDays(1) - new DateTime(1970, 1, 1)).TotalSeconds;

            string html = event_log_html.Replace("<!-- $event-log-content -->", event_log);

            html = html.Replace("<!-- $midnight -->", midnight.ToString());

            return(html);
        }
        public string GetHTMLLog(List <SparkleChangeSet> change_sets)
        {
            List <ActivityDay> activity_days = new List <ActivityDay> ();
            List <string>      emails        = new List <string> ();

            change_sets.Sort((x, y) => (x.Timestamp.CompareTo(y.Timestamp)));
            change_sets.Reverse();

            if (change_sets.Count == 0)
            {
                return(null);
            }

            foreach (SparkleChangeSet change_set in change_sets)
            {
                if (!emails.Contains(change_set.User.Email))
                {
                    emails.Add(change_set.User.Email);
                }

                bool change_set_inserted = false;
                foreach (ActivityDay stored_activity_day in activity_days)
                {
                    if (stored_activity_day.DateTime.Year == change_set.Timestamp.Year &&
                        stored_activity_day.DateTime.Month == change_set.Timestamp.Month &&
                        stored_activity_day.DateTime.Day == change_set.Timestamp.Day)
                    {
                        bool squash = false;
                        foreach (SparkleChangeSet existing_set in stored_activity_day)
                        {
                            if (change_set.User.Name.Equals(existing_set.User.Name) &&
                                change_set.User.Email.Equals(existing_set.User.Email) &&
                                change_set.Folder.Equals(existing_set.Folder))
                            {
                                existing_set.Added.AddRange(change_set.Added);
                                existing_set.Edited.AddRange(change_set.Edited);
                                existing_set.Deleted.AddRange(change_set.Deleted);
                                existing_set.MovedFrom.AddRange(change_set.MovedFrom);
                                existing_set.MovedTo.AddRange(change_set.MovedTo);
                                existing_set.Notes.AddRange(change_set.Notes);

                                existing_set.Added   = existing_set.Added.Distinct().ToList();
                                existing_set.Edited  = existing_set.Edited.Distinct().ToList();
                                existing_set.Deleted = existing_set.Deleted.Distinct().ToList();

                                if (DateTime.Compare(existing_set.Timestamp, change_set.Timestamp) < 1)
                                {
                                    existing_set.FirstTimestamp = existing_set.Timestamp;
                                    existing_set.Timestamp      = change_set.Timestamp;
                                    existing_set.Revision       = change_set.Revision;
                                }
                                else
                                {
                                    existing_set.FirstTimestamp = change_set.Timestamp;
                                }

                                squash = true;
                            }
                        }

                        if (!squash)
                        {
                            stored_activity_day.Add(change_set);
                        }

                        change_set_inserted = true;
                        break;
                    }
                }

                if (!change_set_inserted)
                {
                    ActivityDay activity_day = new ActivityDay(change_set.Timestamp);
                    activity_day.Add(change_set);
                    activity_days.Add(activity_day);
                }
            }

            new Thread(new ThreadStart(delegate {
                FetchAvatars(emails, 48);
                FetchAvatars(emails, 36);
            })).Start();

            string event_log_html   = EventLogHTML;
            string day_entry_html   = DayEntryHTML;
            string event_entry_html = EventEntryHTML;
            string event_log        = "";

            foreach (ActivityDay activity_day in activity_days)
            {
                string event_entries = "";

                foreach (SparkleChangeSet change_set in activity_day)
                {
                    string event_entry = "<dl>";

                    if (change_set.IsMagical)
                    {
                        event_entry += "<dd>Did something magical</dd>";
                    }
                    else
                    {
                        if (change_set.Edited.Count > 0)
                        {
                            foreach (string file_path in change_set.Edited)
                            {
                                string absolute_file_path = new string [] { SparkleConfig.DefaultConfig.FoldersPath,
                                                                            change_set.Folder, file_path }.Combine();

                                if (File.Exists(absolute_file_path))
                                {
                                    event_entry += "<dd class='document edited'><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
                                }
                                else
                                {
                                    event_entry += "<dd class='document edited'>" + file_path + "</dd>";
                                }
                            }
                        }

                        if (change_set.Added.Count > 0)
                        {
                            foreach (string file_path in change_set.Added)
                            {
                                string absolute_file_path = new string [] { SparkleConfig.DefaultConfig.FoldersPath,
                                                                            change_set.Folder, file_path }.Combine();

                                if (File.Exists(absolute_file_path))
                                {
                                    event_entry += "<dd class='document added'><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
                                }
                                else
                                {
                                    event_entry += "<dd class='document added'>" + file_path + "</dd>";
                                }
                            }
                        }

                        if (change_set.Deleted.Count > 0)
                        {
                            foreach (string file_path in change_set.Deleted)
                            {
                                string absolute_file_path = new string [] { SparkleConfig.DefaultConfig.FoldersPath,
                                                                            change_set.Folder, file_path }.Combine();

                                if (File.Exists(absolute_file_path))
                                {
                                    event_entry += "<dd class='document deleted'><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
                                }
                                else
                                {
                                    event_entry += "<dd class='document deleted'>" + file_path + "</dd>";
                                }
                            }
                        }

                        if (change_set.MovedFrom.Count > 0)
                        {
                            int i = 0;
                            foreach (string file_path in change_set.MovedFrom)
                            {
                                string to_file_path = change_set.MovedTo [i];

                                string absolute_file_path = new string [] { SparkleConfig.DefaultConfig.FoldersPath,
                                                                            change_set.Folder, file_path }.Combine();

                                string absolute_to_file_path = new string [] { SparkleConfig.DefaultConfig.FoldersPath,
                                                                               change_set.Folder, to_file_path }.Combine();

                                if (File.Exists(absolute_file_path))
                                {
                                    event_entry += "<dd class='document moved'><a href='" + absolute_file_path + "'>" + file_path + "</a><br/>";
                                }
                                else
                                {
                                    event_entry += "<dd class='document moved'>" + file_path + "<br/>";
                                }

                                if (File.Exists(absolute_to_file_path))
                                {
                                    event_entry += "<a href='" + absolute_to_file_path + "'>" + to_file_path + "</a></dd>";
                                }
                                else
                                {
                                    event_entry += to_file_path + "</dd>";
                                }

                                i++;
                            }
                        }
                    }

                    string comments = "";
                    comments = "<div class=\"comments\">";

                    if (change_set.Notes != null)
                    {
                        change_set.Notes.Sort((x, y) => (x.Timestamp.CompareTo(y.Timestamp)));

                        foreach (SparkleNote note in change_set.Notes)
                        {
                            string note_avatar = GetAvatar(note.User.Email, 48);
                            if (File.Exists(note_avatar))
                            {
                                note_avatar = "file://" + note_avatar;
                            }
                            else
                            {
                                note_avatar = "<!-- $no-buddy-icon-background-image -->";
                            }

                            comments += "<div class=\"comment-text\">" +
                                        "<p class=\"comment-author\"" +
                                        " style=\"background-image: url('" + note_avatar + "');\">" +
                                        note.User.Name + "</p>" +
                                        note.Body +
                                        "</div>";
                        }
                    }

                    comments += "</div>";

                    string change_set_avatar = GetAvatar(change_set.User.Email, 48);
                    if (File.Exists(change_set_avatar))
                    {
                        change_set_avatar = "file://" + change_set_avatar;
                    }
                    else
                    {
                        change_set_avatar = "<!-- $no-buddy-icon-background-image -->";
                    }

                    event_entry += "</dl>";

                    string timestamp = change_set.Timestamp.ToString("H:mm");

                    if (!change_set.FirstTimestamp.Equals(new DateTime()))
                    {
                        timestamp = change_set.FirstTimestamp.ToString("H:mm") +
                                    " – " + timestamp;
                    }

                    event_entries += event_entry_html.Replace("<!-- $event-entry-content -->", event_entry)
                                     .Replace("<!-- $event-user-name -->", change_set.User.Name)
                                     .Replace("<!-- $event-avatar-url -->", change_set_avatar)
                                     .Replace("<!-- $event-time -->", timestamp)
                                     .Replace("<!-- $event-folder -->", change_set.Folder)
                                     .Replace("<!-- $event-revision -->", change_set.Revision)
                                     .Replace("<!-- $event-folder-color -->", AssignColor(change_set.Folder))
                                     .Replace("<!-- $event-comments -->", comments);
                }

                string   day_entry = "";
                DateTime today     = DateTime.Now;
                DateTime yesterday = DateTime.Now.AddDays(-1);

                if (today.Day == activity_day.DateTime.Day &&
                    today.Month == activity_day.DateTime.Month &&
                    today.Year == activity_day.DateTime.Year)
                {
                    day_entry = day_entry_html.Replace("<!-- $day-entry-header -->", "Today");
                }
                else if (yesterday.Day == activity_day.DateTime.Day &&
                         yesterday.Month == activity_day.DateTime.Month &&
                         yesterday.Year == activity_day.DateTime.Year)
                {
                    day_entry = day_entry_html.Replace("<!-- $day-entry-header -->", "Yesterday");
                }
                else
                {
                    if (activity_day.DateTime.Year != DateTime.Now.Year)
                    {
                        // TRANSLATORS: This is the date in the event logs
                        day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                           activity_day.DateTime.ToString(_("dddd, MMMM d, yyyy")));
                    }
                    else
                    {
                        // TRANSLATORS: This is the date in the event logs, without the year
                        day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                           activity_day.DateTime.ToString(_("dddd, MMMM d")));
                    }
                }

                event_log += day_entry.Replace("<!-- $day-entry-content -->", event_entries);
            }

            string html = event_log_html.Replace("<!-- $event-log-content -->", event_log)
                          .Replace("<!-- $username -->", UserName)
                          .Replace("<!-- $user-avatar-url -->", "file://" + GetAvatar(UserEmail, 48));

            return(html);
        }
Exemple #5
0
        public string GetHTMLLog(List <SparkleChangeSet> change_sets)
        {
            List <ActivityDay> activity_days = new List <ActivityDay> ();
            List <string>      emails        = new List <string> ();

            change_sets.Sort((x, y) => (x.Timestamp.CompareTo(y.Timestamp)));
            change_sets.Reverse();

            if (change_sets.Count == 0)
            {
                return(null);
            }

            foreach (SparkleChangeSet change_set in change_sets)
            {
                if (!emails.Contains(change_set.User.Email))
                {
                    emails.Add(change_set.User.Email);
                }

                bool change_set_inserted = false;
                foreach (ActivityDay stored_activity_day in activity_days)
                {
                    if (stored_activity_day.Date.Year == change_set.Timestamp.Year &&
                        stored_activity_day.Date.Month == change_set.Timestamp.Month &&
                        stored_activity_day.Date.Day == change_set.Timestamp.Day)
                    {
                        stored_activity_day.Add(change_set);

                        change_set_inserted = true;
                        break;
                    }
                }

                if (!change_set_inserted)
                {
                    ActivityDay activity_day = new ActivityDay(change_set.Timestamp);
                    activity_day.Add(change_set);
                    activity_days.Add(activity_day);
                }
            }

            string event_log_html   = EventLogHTML;
            string day_entry_html   = DayEntryHTML;
            string event_entry_html = EventEntryHTML;
            string event_log        = "";

            foreach (ActivityDay activity_day in activity_days)
            {
                string event_entries = "";

                foreach (SparkleChangeSet change_set in activity_day)
                {
                    string event_entry = "<dl>";

                    if (change_set.IsMagical)
                    {
                        event_entry += "<dd>Did something magical</dd>";
                    }
                    else
                    {
                        foreach (SparkleChange change in change_set.Changes)
                        {
                            if (change.Type != SparkleChangeType.Moved)
                            {
                                event_entry += "<dd class='document " + change.Type.ToString().ToLower() + "'>";
                                event_entry += "<small>" + change.Timestamp.ToString("HH:mm") + "</small> &nbsp;";
                                event_entry += FormatBreadCrumbs(change_set.Folder.FullPath, change.Path);
                                event_entry += "</dd>";
                            }
                            else
                            {
                                event_entry += "<dd class='document moved'>";
                                event_entry += FormatBreadCrumbs(change_set.Folder.FullPath, change.Path);
                                event_entry += "<br>";
                                event_entry += "<small>" + change.Timestamp.ToString("HH:mm") + "</small> &nbsp;";
                                event_entry += FormatBreadCrumbs(change_set.Folder.FullPath, change.MovedPath);
                                event_entry += "</dd>";
                            }
                        }
                    }

                    string change_set_avatar = GetAvatar(change_set.User.Email, 48);

                    if (File.Exists(change_set_avatar))
                    {
                        change_set_avatar = "file://" + change_set_avatar.Replace("\\", "/");
                    }
                    else
                    {
                        change_set_avatar = "file://<!-- $pixmaps-path -->/" +
                                            AssignAvatar(change_set.User.Email);
                    }

                    event_entry += "</dl>";

                    string timestamp = change_set.Timestamp.ToString("H:mm");

                    if (!change_set.FirstTimestamp.Equals(new DateTime()) &&
                        !change_set.Timestamp.ToString("H:mm").Equals(change_set.FirstTimestamp.ToString("H:mm")))
                    {
                        timestamp = change_set.FirstTimestamp.ToString("H:mm") + " – " + timestamp;
                    }

                    event_entries += event_entry_html.Replace("<!-- $event-entry-content -->", event_entry)
                                     .Replace("<!-- $event-user-name -->", change_set.User.Name)
                                     .Replace("<!-- $event-avatar-url -->", change_set_avatar)
                                     .Replace("<!-- $event-folder -->", change_set.Folder.Name)
                                     .Replace("<!-- $event-url -->", change_set.RemoteUrl.ToString())
                                     .Replace("<!-- $event-revision -->", change_set.Revision);
                }

                string   day_entry = "";
                DateTime today     = DateTime.Now;
                DateTime yesterday = DateTime.Now.AddDays(-1);

                if (today.Day == activity_day.Date.Day &&
                    today.Month == activity_day.Date.Month &&
                    today.Year == activity_day.Date.Year)
                {
                    day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                       "<span id='today' name='" + activity_day.Date.ToString(_("dddd, MMMM d")) + "'>"
                                                       + _("Today") + "</span>");
                }
                else if (yesterday.Day == activity_day.Date.Day &&
                         yesterday.Month == activity_day.Date.Month &&
                         yesterday.Year == activity_day.Date.Year)
                {
                    day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                       "<span id='yesterday' name='" + activity_day.Date.ToString(_("dddd, MMMM d")) + "'>"
                                                       + _("Yesterday") + "</span>");
                }
                else
                {
                    if (activity_day.Date.Year != DateTime.Now.Year)
                    {
                        // TRANSLATORS: This is the date in the event logs
                        day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                           activity_day.Date.ToString(_("dddd, MMMM d, yyyy")));
                    }
                    else
                    {
                        // TRANSLATORS: This is the date in the event logs, without the year
                        day_entry = day_entry_html.Replace("<!-- $day-entry-header -->",
                                                           activity_day.Date.ToString(_("dddd, MMMM d")));
                    }
                }

                event_log += day_entry.Replace("<!-- $day-entry-content -->", event_entries);
            }


            int midnight = (int)(DateTime.Today.AddDays(1) - new DateTime(1970, 1, 1)).TotalSeconds;

            string html = event_log_html.Replace("<!-- $event-log-content -->", event_log)
                          .Replace("<!-- $username -->", CurrentUser.Name)
                          .Replace("<!-- $user-avatar-url -->", "file://" + GetAvatar(CurrentUser.Email, 48))
                          .Replace("<!-- $midnight -->", midnight.ToString());

            new Thread(
                new ThreadStart(delegate {
                FetchAvatars(emails, 48);
            })
                ).Start();

            return(html);
        }