109 lines
3.2 KiB
C#
109 lines
3.2 KiB
C#
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Globalization;
|
|
|
|
namespace ScrewTurn.Wiki.PluginFramework {
|
|
|
|
/// <summary>
|
|
/// Contains basic information about a Page.
|
|
/// </summary>
|
|
public class PageInfo {
|
|
|
|
/// <summary>
|
|
/// The namespace of the Page.
|
|
/// </summary>
|
|
protected string nspace;
|
|
/// <summary>
|
|
/// The Name of the Page.
|
|
/// </summary>
|
|
protected string name;
|
|
/// <summary>
|
|
/// The Provider that handles the Page.
|
|
/// </summary>
|
|
protected IPagesStorageProviderV30 provider;
|
|
/// <summary>
|
|
/// A value specifying whether the Page should NOT be cached by the engine.
|
|
/// </summary>
|
|
protected bool nonCached;
|
|
/// <summary>
|
|
/// The Page creation Date/Time.
|
|
/// </summary>
|
|
protected DateTime creationDateTime;
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="T:PageInfo" /> class.
|
|
/// </summary>
|
|
/// <param name="fullName">The Full Name of the Page.</param>
|
|
/// <param name="provider">The Pages Storage Provider that manages this Page.</param>
|
|
/// <param name="creationDateTime">The Page creation Date/Time.</param>
|
|
public PageInfo(string fullName, IPagesStorageProviderV30 provider, DateTime creationDateTime) {
|
|
NameTools.ExpandFullName(fullName, out nspace, out name);
|
|
this.provider = provider;
|
|
this.creationDateTime = creationDateTime;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the full name of the Page, such as 'Namespace.Page' or 'Page'.
|
|
/// </summary>
|
|
public string FullName {
|
|
get { return NameTools.GetFullName(nspace, name); }
|
|
set { NameTools.ExpandFullName(value, out nspace, out name); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the Pages Storage Provider.
|
|
/// </summary>
|
|
public IPagesStorageProviderV30 Provider {
|
|
get { return provider; }
|
|
set { provider = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets a value specifying whether the Page should NOT be cached by the engine.
|
|
/// </summary>
|
|
public bool NonCached {
|
|
get { return nonCached; }
|
|
set { nonCached = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the creation Date/Time.
|
|
/// </summary>
|
|
public DateTime CreationDateTime {
|
|
get { return creationDateTime; }
|
|
set { creationDateTime = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Converts the current PageInfo to a string.
|
|
/// </summary>
|
|
/// <returns>The string.</returns>
|
|
public override string ToString() {
|
|
string result = NameTools.GetFullName(nspace, name);
|
|
result += " [" + provider.Information.Name + "]";
|
|
return result;
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Compares two <see cref="T:PageInfo" /> objects, using the FullName as parameter.
|
|
/// </summary>
|
|
/// <remarks>The comparison is <b>case insensitive</b>.</remarks>
|
|
public class PageNameComparer : IComparer<PageInfo> {
|
|
|
|
/// <summary>
|
|
/// Compares two <see cref="T:PageInfo" /> objects, using the FullName as parameter.
|
|
/// </summary>
|
|
/// <param name="x">The first object.</param>
|
|
/// <param name="y">The second object.</param>
|
|
/// <returns>The comparison result (-1, 0 or 1).</returns>
|
|
public int Compare(PageInfo x, PageInfo y) {
|
|
return StringComparer.OrdinalIgnoreCase.Compare(x.FullName, y.FullName);
|
|
}
|
|
|
|
}
|
|
|
|
}
|