using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.SharePoint.Linq; using Microsoft.SharePoint; using Microsoft.SharePoint.Publishing.Fields; namespace ExtendSPLink.SPData { public partial class CustomersItem : ExtendSPLink.SPData.Item, ICustomMapping { #region "Attachments" private const string CONTENT_FIELD = "Attachments"; private SPAttachmentCollection _contentAttachments; public SPAttachmentCollection ContentAttachments { get { return _contentAttachments; } set { if (value != _contentAttachments) { this.OnPropertyChanging(CONTENT_FIELD, _contentAttachments); _contentAttachments = value; this.OnPropertyChanged(CONTENT_FIELD); } } } #endregion #region "PublishImage" private const string CONTENT_FIELD_IMG = "MyPublishingImage"; private ImageFieldValue _contentMyPublishingImage; public ImageFieldValue ContentMyPublishingImage { get { return _contentMyPublishingImage; } set { if (value != _contentMyPublishingImage) { this.OnPropertyChanging(CONTENT_FIELD, _contentAttachments); _contentMyPublishingImage = value; this.OnPropertyChanged(CONTENT_FIELD); } } } #endregion #region "PublishHTML" private const string CONTENT_FIELD_HTML = "PublishingHtml"; private HtmlField _contentMyPublishingHtml; public HtmlField ContentMyPublishingHtml { get { return _contentMyPublishingHtml; } set { if (value != _contentMyPublishingHtml) { this.OnPropertyChanging(CONTENT_FIELD_HTML, _contentMyPublishingHtml); _contentMyPublishingHtml = value; this.OnPropertyChanged(CONTENT_FIELD_HTML); } } } #endregion #region "CreatedBy (Hidden field)" string _CreatedBy; [Microsoft.SharePoint.Linq.ColumnAttribute(Name = "Author", Storage = "_CreatedBy", ReadOnly = true, FieldType = "User", IsLookupValue = true)] public string CreatedBy { get { return this._CreatedBy; } set { if ((value != this._CreatedBy)) { this.OnPropertyChanging("CreatedBy", this._CreatedBy); this._CreatedBy = value; this.OnPropertyChanged("CreatedBy"); } } } #endregion /// /// Read only data is retrieved in this method for each extended SPMetal field /// Used to Read - CRUD operation performed by SPMetal /// /// [CustomMapping(Columns = new string[] { CONTENT_FIELD, CONTENT_FIELD_IMG, CONTENT_FIELD_HTML })] public void MapFrom(object listItem) { SPListItem item = (SPListItem)listItem; if ((bool)item[CONTENT_FIELD] != false) { this.ContentAttachments = (SPAttachmentCollection)item.Attachments; } this.ContentMyPublishingImage = item[CONTENT_FIELD_IMG] as ImageFieldValue; this.ContentMyPublishingHtml = item[CONTENT_FIELD_HTML] as HtmlField; } /// /// Used to Insert & Update - CRUD operation performed by SPMetal /// /// public void MapTo(object listItem) { SPListItem item = (SPListItem)listItem; item[CONTENT_FIELD_IMG] = this.ContentMyPublishingImage; item[CONTENT_FIELD_HTML] = this.ContentMyPublishingHtml; } public void Resolve(RefreshMode mode, object originalListItem, object updatedlistItem) { //SPListItem originalItem = originalListItem as SPListItem; //SPListItem updateItem = updatedlistItem as SPListItem; //ImageFieldValue originalValue = originalItem[CONTENT_FIELD_IMG] as ImageFieldValue; //ImageFieldValue updateValue = updateItem[CONTENT_FIELD_IMG] as ImageFieldValue; //switch (mode) //{ // case RefreshMode.OverwriteCurrentValues: // this.ContentMyPublishingImage = updateValue; // break; // case RefreshMode.KeepCurrentValues: // updateItem[CONTENT_FIELD_IMG] = this.ContentMyPublishingImage; // break; // case RefreshMode.KeepChanges: // if (this.ContentMyPublishingImage != originalValue) // updateItem[CONTENT_FIELD_IMG] = this.ContentMyPublishingImage; // else if (this.ContentMyPublishingImage == originalValue && this.ContentMyPublishingImage != updateValue) // this.ContentMyPublishingImage = updateValue; // break; //} } } }