|
using System; |
|
using System.Collections.Generic; |
|
using System.Linq; |
|
using System.Web; |
|
using System.Web.UI; |
|
using System.Web.UI.WebControls; |
|
using Telerik.Sitefinity.Configuration; |
|
using Telerik.Sitefinity.Model; |
|
using Telerik.Sitefinity.ModuleEditor.Web.Services.Model; |
|
using Telerik.Sitefinity.Modules.Libraries.Configuration; |
|
using Telerik.Sitefinity.Modules.News.Web.UI; |
|
using Telerik.Sitefinity.News.Model; |
|
using Telerik.Sitefinity.Services; |
|
using Telerik.Sitefinity.Web.UI.Fields; |
|
|
|
namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Modules |
|
{ |
|
public partial class RelatedMediaSnippets |
|
{ |
|
private readonly string newsType = "Telerik.Sitefinity.News.Model.NewsItem,Telerik.Sitefinity.ContentModules"; |
|
|
|
protected void Page_Load(object sender, EventArgs e) |
|
{ |
|
var relationFieldName = "Avatar"; |
|
this.AddRelatedMediaFieldToContext(this.newsType, |
|
new Dictionary<string, string>() |
|
{ |
|
{relationFieldName, string.Empty }, |
|
}); |
|
} |
|
|
|
private void AddRelatedMediaFieldToContext(string contentTypeFullName, Dictionary<string, string> relatedFields) |
|
{ |
|
Type contentType = Type.GetType(contentTypeFullName); |
|
if (contentType == null) |
|
{ |
|
throw new Exception(string.Format("{0} type can't be resolved.", contentTypeFullName)); |
|
} |
|
|
|
var cfContext = new CustomFieldsContext(contentType); |
|
var relatedDataFields = new Dictionary<string, WcfField>(); |
|
UserFriendlyDataType userFriendlyDataType = UserFriendlyDataType.RelatedMedia; |
|
var allowedImageExtension = Config.Get<LibrariesConfig>().Images.AllowedExensionsSettings; |
|
var provider = "OpenAccessDataProvider"; |
|
|
|
foreach (var relatedField in relatedFields) |
|
{ |
|
var field = new WcfField() |
|
{ |
|
Name = relatedField.Key, |
|
ContentType = contentTypeFullName, |
|
FieldTypeKey = userFriendlyDataType.ToString(), |
|
IsCustom = true, |
|
|
|
//Field definition |
|
Definition = new WcfFieldDefinition() |
|
{ |
|
Title = relatedField.Key, |
|
FieldName = relatedField.Key, |
|
FieldType = typeof(RelatedMediaField).FullName, |
|
AllowMultipleSelection = true, |
|
FrontendWidgetTypeName = typeof(NewsView).FullName, |
|
RelatedDataProvider = provider, |
|
RelatedDataType = typeof(NewsItem).FullName, |
|
MediaType = "image", |
|
ValidatorDefinition = new Telerik.Sitefinity.Web.UI.Validation.Definitions.ValidatorDefinition(), |
|
FileExtensions = allowedImageExtension |
|
} |
|
}; |
|
|
|
relatedDataFields.Add(relatedField.Key, field); |
|
} |
|
|
|
cfContext.AddOrUpdateCustomFields(relatedDataFields, contentType.Name); |
|
cfContext.SaveChanges(); |
|
|
|
SystemManager.RestartApplication(OperationReason.KnownKeys.StaticModulesUpdate); |
|
} |
|
} |
|
} |