Skip to content

Commit

Permalink
Changes to BlogRoll widget (still in progress) (3.2.1.7)
Browse files Browse the repository at this point in the history
  • Loading branch information
rxtur committed Mar 20, 2016
1 parent 31978ec commit b8016f7
Show file tree
Hide file tree
Showing 16 changed files with 283 additions and 1,196 deletions.
1 change: 1 addition & 0 deletions BlogEngine/BlogEngine.Core/BlogEngine.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@
<Compile Include="Data\Contracts\IWidgetsRepository.cs" />
<Compile Include="Data\Contracts\IDashboardRepository.cs" />
<Compile Include="Data\Services\TagCloud.cs" />
<Compile Include="Data\ViewModels\BlogRollVM.cs" />
<Compile Include="Data\WidgetsRepository.cs" />
<Compile Include="Data\DashboardRepository.cs" />
<Compile Include="Data\Models\EditorOptions.cs" />
Expand Down
312 changes: 18 additions & 294 deletions BlogEngine/BlogEngine.Core/BlogRollItem.cs
Original file line number Diff line number Diff line change
@@ -1,68 +1,23 @@
namespace BlogEngine.Core
{
using System;
using System.Collections.Generic;

using BlogEngine.Core.Providers;

/// <summary>
/// BlogRolls are links to outside blogs.
/// Blog roll item
/// </summary>
[Serializable]
public class BlogRollItem : BusinessBase<BlogRollItem, Guid>, IComparable<BlogRollItem>
public class BlogRollItem
{
#region Constants and Fields

/// <summary>
/// The sync root.
/// </summary>
private static readonly object SyncRoot = new object();

/// <summary>
/// The blog rolls.
/// </summary>
private static Dictionary<Guid, List<BlogRollItem>> blogRolls;

/// <summary>
/// The blog url.
/// </summary>
private Uri blogUrl;

/// <summary>
/// The description.
/// </summary>
private string description;

/// <summary>
/// The feed url.
/// </summary>
private Uri feedUrl;

/// <summary>
/// The sort index.
/// </summary>
private int sortIndex;

/// <summary>
/// The title.
/// </summary>
private string title;

/// <summary>
/// The xfn string.
/// </summary>
private string xfn;

#endregion

#region Constructors and Destructors

/// <summary>
/// Initializes a new instance of the <see cref = "BlogRollItem" /> class.
/// </summary>
public BlogRollItem()
{
this.Id = Guid.NewGuid();
Id = Guid.NewGuid();
Title = "";
Description = "";
Xfn = "";
}

/// <summary>
Expand All @@ -79,281 +34,50 @@ public BlogRollItem()
/// </param>
public BlogRollItem(string title, string description, Uri blogUrl)
{
this.Id = Guid.NewGuid();
this.Title = title;
this.Description = description;
this.BlogUrl = blogUrl;
}

static BlogRollItem()
{
Blog.Saved += (s, e) =>
{
if (e.Action == SaveAction.Delete)
{
Blog blog = s as Blog;
if (blog != null)
{
// remove deleted blog from static 'blogRolls'

if (blogRolls != null && blogRolls.ContainsKey(blog.Id))
blogRolls.Remove(blog.Id);
}
}
};
Id = Guid.NewGuid();
Title = title;
Description = description;
BlogUrl = blogUrl;
}

#endregion

#region Properties

/// <summary>
/// Gets all of the BlogRollItems from the data store.
/// Item ID
/// </summary>
public static List<BlogRollItem> BlogRolls
{
get
{
Blog blog = Blog.CurrentInstance;

if (blogRolls == null || !blogRolls.ContainsKey(blog.Id))
{
lock (SyncRoot)
{
if (blogRolls == null || !blogRolls.ContainsKey(blog.Id))
{
if (blogRolls == null)
blogRolls = new Dictionary<Guid, List<BlogRollItem>>();

blogRolls[blog.Id] = BlogService.FillBlogRolls();

if(blogRolls[blog.Id] != null)
blogRolls[blog.Id].Sort();
}
}
}

return blogRolls[blog.Id];
}
}
public Guid Id { get; set; }

/// <summary>
/// Gets or sets the BlogUrl of the object.
/// </summary>
public Uri BlogUrl
{
get
{
return this.blogUrl;
}

set
{
base.SetValue("BlogUrl", value, ref this.blogUrl);
}
}
public Uri BlogUrl { get; set; }

/// <summary>
/// Gets or sets the Description of the object.
/// </summary>
public string Description
{
get
{
return this.description;
}

set
{
base.SetValue("Description", value, ref this.description);
}
}
public string Description { get; set; }

/// <summary>
/// Gets or sets the FeedUrl of the object.
/// </summary>
public Uri FeedUrl
{
get
{
return this.feedUrl;
}

set
{
base.SetValue("FeedUrl", value, ref this.feedUrl);
}
}
public Uri FeedUrl { get; set; }

/// <summary>
/// Gets or sets the SortIndex of the object.
/// </summary>
public int SortIndex
{
get
{
return this.sortIndex;
}

set
{
base.SetValue("SortIndex", value, ref this.sortIndex);
}
}
public int SortIndex { get; set; }

/// <summary>
/// Gets or sets the Title of the object.
/// </summary>
public string Title
{
get
{
return this.title;
}

set
{
base.SetValue("Title", value, ref this.title);
}
}
public string Title { get; set; }

/// <summary>
/// Gets or sets the Xfn of the object.
/// </summary>
public string Xfn
{
get
{
return this.xfn;
}

set
{
base.SetValue("Xfn", value, ref this.xfn);
}
}

#endregion

#region Public Methods

/// <summary>
/// Gets the BlogRollItem from the data store.
/// </summary>
/// <param name="id">The blogroll item id.</param>
/// <returns>The blogroll item.</returns>
public static BlogRollItem GetBlogRollItem(Guid id)
{
return BlogRolls.Find(br => br.Id == id);
}

/// <summary>
/// Returns a <see cref="T:System.String"></see> that represents the current <see cref="T:System.Object"></see>.
/// </summary>
/// <returns>
/// A <see cref="T:System.String"></see> that represents the current <see cref="T:System.Object"></see>.
/// </returns>
public override string ToString()
{
return this.Title;
}

#endregion

#region Implemented Interfaces

#region IComparable<BlogRollItem>

/// <summary>
/// Compares the current object with another object of the same type.
/// </summary>
/// <param name="other">
/// An object to compare with this object.
/// </param>
/// <returns>
/// A 32-bit signed integer that indicates the relative order of the objects being compared.
/// The return value has the following meanings: Value Meaning Less than zero This object is
/// less than the other parameter.Zero This object is equal to other. Greater than zero This object is greater than other.
/// </returns>
public int CompareTo(BlogRollItem other)
{
return this.SortIndex.CompareTo(other.SortIndex);
}

#endregion

#endregion

#region Methods

/// <summary>
/// Deletes the object from the data store.
/// </summary>
protected override void DataDelete()
{
OnSaving(this, SaveAction.Delete);
if (this.Deleted)
{
BlogService.DeleteBlogRoll(this);
}

BlogRolls.Remove(this);
OnSaved(this, SaveAction.Delete);

this.Dispose();
}

/// <summary>
/// Inserts a new object to the data store.
/// </summary>
protected override void DataInsert()
{
OnSaving(this, SaveAction.Insert);
if (this.New)
{
BlogService.InsertBlogRoll(this);
}

OnSaved(this, SaveAction.Insert);
}

/// <summary>
/// Retrieves the object from the data store and populates it.
/// </summary>
/// <param name="id">
/// The unique identifier of the object.
/// </param>
/// <returns>
/// The object that was selected from the data store.
/// </returns>
protected override BlogRollItem DataSelect(Guid id)
{
return BlogService.SelectBlogRoll(id);
}

/// <summary>
/// Updates the object in its data store.
/// </summary>
protected override void DataUpdate()
{
OnSaving(this, SaveAction.Update);
if (this.IsChanged)
{
BlogService.UpdateBlogRoll(this);
}

OnSaved(this, SaveAction.Update);
}

/// <summary>
/// Reinforces the business rules by adding additional rules to the
/// broken rules collection.
/// </summary>
protected override void ValidationRules()
{
this.AddRule("Title", "Title must be set", string.IsNullOrEmpty(this.Title));
this.AddRule("BlogUrl", "BlogUrl must be set", this.BlogUrl == null);
}
public string Xfn { get; set; }

#endregion
}
Expand Down
1 change: 1 addition & 0 deletions BlogEngine/BlogEngine.Core/BlogSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1059,6 +1059,7 @@ public DateTime ToUtc(DateTime ? localTime = null)

var zone = string.IsNullOrEmpty(Instance.TimeZoneId) ? "UTC" : Instance.TimeZoneId;
var tz = TimeZoneInfo.FindSystemTimeZoneById(zone);
localTime = DateTime.SpecifyKind(localTime.Value, DateTimeKind.Unspecified);

return TimeZoneInfo.ConvertTimeToUtc(localTime.Value, tz);
}
Expand Down
Loading

0 comments on commit b8016f7

Please sign in to comment.