Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Some sample helper extension methods to be used in custom Episerver import processing to get Episerver properties.
/// <summary>
/// Sets the content status to draft.
/// </summary>
/// <param name="rawProperties">Import raw properties</param>
/// <returns>True if the status was set to draft otherwise false.</returns>
public static bool SetAsDraft(this Dictionary<string, RawProperty> rawProperties)
{
bool isSet = false;
// TODO: should we add the properties if missing?
// should we remove the return value and just log a message?
if (rawProperties.HasEntries())
{
// set pending publish
if (rawProperties.ContainsKey(MetaDataProperties.PagePendingPublish))
{
rawProperties[MetaDataProperties.PagePendingPublish].Value = bool.TrueString;
isSet = true;
}
if (rawProperties.ContainsKey(MetaDataProperties.PageWorkStatus))
{
// value 2, CheckOut, The version is currently in progress
// valie 3, CheckedIn, A writer has checked in the version and waits for the version to be approved and published
// the import doesn't actually at the moment care about this value, only the PagePendingPublish
// set it CheckOut and if someday the import uses VersionStatus this should be changed to 3, so that the page is in Ready for publish status
rawProperties[MetaDataProperties.PageWorkStatus].Value = ((int)VersionStatus.CheckedOut).ToString(CultureInfo.InvariantCulture);
}
if (rawProperties.ContainsKey(MetaDataProperties.PageDeleted))
{
rawProperties[MetaDataProperties.PagePendingPublish].Value = bool.TrueString;
}
if (rawProperties.ContainsKey(MetaDataProperties.PageDeletedBy))
{
rawProperties[MetaDataProperties.PageDeletedBy].Value = null;
}
if (rawProperties.ContainsKey(MetaDataProperties.PageDeletedDate))
{
rawProperties[MetaDataProperties.PageDeletedDate].Value = null;
}
if (rawProperties.ContainsKey(MetaDataProperties.PageStartPublish))
{
rawProperties[MetaDataProperties.PageStartPublish].Value = null;
}
if (rawProperties.ContainsKey(MetaDataProperties.PageStopPublish))
{
rawProperties[MetaDataProperties.PageStopPublish].Value = null;
}
}
return isSet;
}
/// <summary>
/// Sets the content type id.
/// </summary>
/// <param name="rawProperties">Raw properties dictionary.</param>
/// <param name="guidString">Value for the content type id.</param>
/// <returns>True if the property was set otherwise false.</returns>
public static bool SetContentTypeId(this Dictionary<string, RawProperty> rawProperties, string guidString)
{
// we don't validate the "arguments", done by the SetRawPropertyValue method
return rawProperties.SetRawPropertyValue(MetaDataProperties.PageTypeID, guidString);
}
/// <summary>
/// Gets the content name value.
/// </summary>
/// <param name="rawProperties">Raw properties dictionary.</param>
/// <returns>Content name value or null if the property doesn't exist..</returns>
public static string GetContentName(this Dictionary<string, RawProperty> rawProperties)
{
string contentName = null;
if (rawProperties.HasEntries() && rawProperties.ContainsKey(MetaDataProperties.PageName))
{
contentName = rawProperties[MetaDataProperties.PageName].Value;
}
return contentName;
}
/// <summary>
/// Gets the content type name value.
/// </summary>
/// <param name="rawProperties">Raw properties dictionary.</param>
/// <returns>Content type name value or null if the property doesn't exist..</returns>
public static string GetContentTypeName(this Dictionary<string, RawProperty> rawProperties)
{
string contentTypeName = null;
if (rawProperties.HasEntries() && rawProperties.ContainsKey(MetaDataProperties.PageTypeName))
{
contentTypeName = rawProperties[MetaDataProperties.PageTypeName].Value;
}
return contentTypeName;
}
/// <summary>
/// Gets the language branch identifier (like en, sv, fi, etc) value.
/// </summary>
/// <param name="rawProperties">Raw properties dictionary.</param>
/// <returns>Language branch identifier value or null if the property doesn't exist</returns>
public static string GetLanguageId(this Dictionary<string, RawProperty> rawProperties)
{
string languageId = null;
if (rawProperties.HasEntries() && rawProperties.ContainsKey(MetaDataProperties.PageLanguageBranch))
{
languageId = rawProperties[MetaDataProperties.PageLanguageBranch].Value;
}
return languageId;
}
/// <summary>
/// Gets the content guid value.
/// </summary>
/// <param name="rawProperties">Raw properties dictionary.</param>
/// <returns>Content guid value or null if the property doesn't exist.</returns>
public static string GetContentGuid(this Dictionary<string, RawProperty> rawProperties)
{
string contentGuid = null;
if (rawProperties.HasEntries() && rawProperties.ContainsKey(MetaDataProperties.PageGUID))
{
contentGuid = rawProperties[MetaDataProperties.PageGUID].Value;
}
return contentGuid;
}
/// <summary>
/// Gets the content type id value.
/// </summary>
/// <param name="rawProperties">Raw properties dictionary.</param>
/// <returns>Content type id value or null if the property doesn't exist.</returns>
public static string GetContentTypeId(this Dictionary<string, RawProperty> rawProperties)
{
string contentTypeId = null;
if (rawProperties.HasEntries() && rawProperties.ContainsKey(MetaDataProperties.PageTypeID))
{
contentTypeId = rawProperties[MetaDataProperties.PageTypeID].Value;
}
return contentTypeId;
}
/// <summary>
/// Gets the content url segment value.
/// </summary>
/// <param name="rawProperties">Raw properties dictionary.</param>
/// <returns>Content url segment value or null if the property doesn't exist.</returns>
public static string GetUrlSegment(this Dictionary<string, RawProperty> rawProperties)
{
string urlSegement = null;
if (rawProperties.HasEntries() && rawProperties.ContainsKey(MetaDataProperties.PageURLSegment))
{
urlSegement = rawProperties[MetaDataProperties.PageURLSegment].Value;
}
return urlSegement;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment