protected void MediaTypeChange_Click(object sender, System.EventArgs e) { var mewMediaTypeId = long.Parse(MediaTypes.SelectedValue); var newMediaType = MediaTypesMapper.GetDataModel().MediaTypes.FirstOrDefault(i => i.ID == mewMediaTypeId); if ((newMediaType != null) && (newMediaType.ID != selectedItem.MediaType.ID)) { selectedItem.MediaTypeID = newMediaType.ID; selectedItem.ShowInMenu = newMediaType.ShowInMenu; selectedItem.ShowInSearchResults = newMediaType.ShowInSearchResults; foreach (var mediaTypeField in newMediaType.Fields) { var foundField = selectedItem.Fields.SingleOrDefault(i => i.FieldCode == mediaTypeField.FieldCode); if (foundField != null) { foundField.MediaTypeField = mediaTypeField; continue; } var newField = new MediaDetailField(); newField.CopyFrom(mediaTypeField); newField.UseMediaTypeFieldFrontEndLayout = true; newField.DateCreated = DateTime.Now; newField.DateLastModified = DateTime.Now; selectedItem.Fields.Add(newField); } if (selectedItem.UseMediaTypeLayouts) { selectedItem.MainLayout = newMediaType.MainLayout; selectedItem.FeaturedLayout = newMediaType.FeaturedLayout; selectedItem.SummaryLayout = newMediaType.SummaryLayout; } foreach (var field in selectedItem.Fields) { if (field.MediaTypeField != null && field.MediaTypeField.MediaType != newMediaType) { field.MediaTypeField = null; } } var returnObj = MediaDetailsMapper.Update(selectedItem); if (returnObj.IsError) { BasePage.DisplayErrorMessage("Error", returnObj.Error); } else { var url = AdminBasePage.GetAdminUrl(selectedItem.MediaTypeID, selectedItem.MediaID); Response.Redirect(url); } } }
protected void CopyFields_Click(object sender, EventArgs e) { var otherMediaType = MediaTypeSelector.GetSelectedMediaType(); foreach (var otherMediaTypeField in otherMediaType.Fields) { if (!mediaType.Fields.Any(i => i.FieldCode == otherMediaTypeField.FieldCode)) { var mediaTypeField = new MediaTypeField(); mediaTypeField.CopyFrom(otherMediaTypeField); mediaTypeField.DateCreated = mediaTypeField.DateLastModified = DateTime.Now; mediaType.Fields.Add(mediaTypeField); foreach (var mediaDetail in mediaType.MediaDetails) { var mediaDetailField = new MediaDetailField(); mediaDetailField.CopyFrom(mediaTypeField); if (string.IsNullOrEmpty(mediaDetailField.UsageExample)) { mediaDetailField.UsageExample = "{Field:" + mediaDetailField.FieldCode + "} OR {{Load:" + mediaDetail.MediaID + "}.Field:" + mediaDetailField.FieldCode + "}"; } mediaDetailField.UseMediaTypeFieldFrontEndLayout = true; mediaDetailField.UseMediaTypeFieldDescription = true; if (mediaDetailField.FrontEndSubmissions == null) { mediaDetailField.FrontEndSubmissions = ""; } if (mediaDetailField.FieldSettings == null) { mediaDetailField.FieldSettings = ""; } mediaDetailField.MediaTypeField = mediaTypeField; mediaDetailField.DateCreated = mediaDetailField.DateLastModified = DateTime.Now; mediaDetailField.OrderIndex = mediaDetail.Fields.Count; mediaDetail.Fields.Add(mediaDetailField); } } } var returnObj = MediaTypesMapper.Update(mediaType); if (!returnObj.IsError) { Bind(); } else { BasePage.DisplayErrorMessage("Error", returnObj.Error); } }
private void ImportNewFields(IEnumerable <MediaTypeField> importFields) { foreach (var field in importFields) { if (!mediaType.Fields.Any(i => i.FieldCode == field.FieldCode)) { var mediaTypeField = new MediaTypeField(); mediaTypeField.CopyFrom(field); mediaTypeField.DateCreated = mediaTypeField.DateLastModified = DateTime.Now; mediaType.Fields.Add(mediaTypeField); foreach (var mediaDetail in mediaType.MediaDetails) { var mediaDetailField = new MediaDetailField(); mediaDetailField.CopyFrom(mediaTypeField); if (string.IsNullOrEmpty(mediaDetailField.UsageExample)) { mediaDetailField.UsageExample = "{Field:" + mediaDetailField.FieldCode + "} OR {{Load:" + mediaDetail.MediaID + "}.Field:" + mediaDetailField.FieldCode + "}"; } mediaDetailField.UseMediaTypeFieldFrontEndLayout = true; mediaDetailField.UseMediaTypeFieldDescription = true; if (mediaDetailField.FrontEndSubmissions == null) { mediaDetailField.FrontEndSubmissions = ""; } if (mediaDetailField.FieldSettings == null) { mediaDetailField.FieldSettings = ""; } mediaDetailField.MediaTypeField = mediaTypeField; mediaDetailField.DateCreated = mediaDetailField.DateLastModified = DateTime.Now; mediaDetailField.OrderIndex = mediaDetail.Fields.Count; mediaDetail.Fields.Add(mediaDetailField); } } } var returnObj = MediaTypesMapper.Update(mediaType); if (!returnObj.IsError) { Bind(); } else { BasePage.DisplayErrorMessage("Error", returnObj.Error); } }
public void CopyProperties(IMediaDetail toItem, IMediaDetail fromItem) { foreach (var field in fromItem.Fields) { var newField = new MediaDetailField(); var foundField = toItem.Fields.FirstOrDefault(i => i.FieldCode == field.FieldCode); if (foundField != null) { newField = foundField; } newField.CopyFrom(field); foreach (var fieldAssociation in field.FieldAssociations) { var newFieldAssociation = new FieldAssociation(); newFieldAssociation.CopyFrom(fieldAssociation); var associatedMediaDetail = (MediaDetail)MediaDetailsMapper.GetByID(newFieldAssociation.AssociatedMediaDetailID); if (associatedMediaDetail == null) { continue; } if (!associatedMediaDetail.MediaType.ShowInSiteTree) { newFieldAssociation.MediaDetail = (MediaDetail)MediaDetailsMapper.CreateObject(associatedMediaDetail.MediaType.ID, MediasMapper.CreateObject(), associatedMediaDetail.Media.ParentMedia); newFieldAssociation.MediaDetail.CopyFrom(associatedMediaDetail); newFieldAssociation.MediaDetail.DateCreated = newFieldAssociation.MediaDetail.DateLastModified = DateTime.Now; newFieldAssociation.MediaDetail.CreatedByUser = newFieldAssociation.MediaDetail.LastUpdatedByUser = FrameworkSettings.CurrentUser; CopyProperties(newFieldAssociation.MediaDetail, associatedMediaDetail); } /*if (newFieldAssociation.MediaDetail != null) * { * newFieldAssociation.MediaDetail.HistoryForMediaDetailID = fieldAssociation.AssociatedMediaDetailID; * newFieldAssociation.MediaDetail.HistoryVersionNumber = newFieldAssociation.MediaDetail.HistoryVersionNumber + 1; * }*/ newField.FieldAssociations.Add(newFieldAssociation); } if (newField.ID == 0) { toItem.Fields.Add(newField); } } }
public IMediaDetail HandleDuplicate(IMediaDetail detail, Media parentMedia, bool duplicateChildren = false, string newName = "", bool autoPublish = true) { var duplicatedItem = MediaDetailsMapper.CreateObject(detail.MediaTypeID, null, parentMedia, false); duplicatedItem.CopyFrom(detail, new List <string> { "MediaID", "Media" }); if (newName != "") { duplicatedItem.Title = duplicatedItem.LinkTitle = newName; } duplicatedItem.CachedVirtualPath = duplicatedItem.CalculatedVirtualPath(); /*if (duplicatedItem.ID == 0) * { * var mediaType = MediaTypesMapper.GetByID(detail.MediaTypeID); * var createdItems = mediaType.MediaDetails.Where(i => !i.IsHistory && i.ParentMediaID == detail.ParentMediaID && i.LanguageID == detail.LanguageID).Select(i => i); * * var newIndex = createdItems.Count() + 1; * * duplicatedItem.LinkTitle = detail.Language.DisplayName + " - " + mediaType.Name + " " + newIndex; * }*/ duplicatedItem.Media.OrderIndex = parentMedia.ChildMedias.Count(i => i.ID != 0); duplicatedItem.PublishDate = duplicatedItem.DateCreated = duplicatedItem.DateLastModified = DateTime.Now; //var fields = detail.Fields.ToList(); foreach (var item in detail.Fields) { var mediaDetailField = new MediaDetailField(); mediaDetailField.CopyFrom(item); if (newName != "" && mediaDetailField.FieldCode == "SectionTitle") { mediaDetailField.FieldValue = newName; } mediaDetailField.DateCreated = mediaDetailField.DateLastModified = DateTime.Now; foreach (var association in item.FieldAssociations) { var fieldAssociation = new FieldAssociation(); fieldAssociation.CopyFrom(association); if (item.AdminControl.Contains("MultiFile")) { var associatedMediaDetail = MediaDetailsMapper.GetByID(fieldAssociation.AssociatedMediaDetailID); fieldAssociation.AssociatedMediaDetailID = 0; fieldAssociation.MediaDetail = (MediaDetail)HandleDuplicate(associatedMediaDetail, associatedMediaDetail.Media.ParentMedia, true); } mediaDetailField.FieldAssociations.Add(fieldAssociation); } duplicatedItem.Fields.Add(mediaDetailField); } if (!autoPublish) { duplicatedItem.PublishDate = null; } var returnObj = MediaDetailsMapper.Insert(duplicatedItem); if (returnObj.IsError) { throw returnObj.Error.Exception; } else { if (duplicateChildren) { var childMediaDetails = detail.ChildMediaDetails; foreach (var childDetail in childMediaDetails) { HandleDuplicate(childDetail, duplicatedItem.Media); } /*foreach (var child in detail.Media.ChildMedias) * { * var mediaDetailsToCopy = child.MediaDetails.Where(i => !i.IsDraft && !i.IsHistory); * * foreach (var childDetail in mediaDetailsToCopy) * { * HandleDuplicate(childDetail, duplicatedItem.Media); * } * }*/ } } return(duplicatedItem); }
protected void Update_Click(object sender, EventArgs e) { if (mediaType.ID == 0) { BasePage.DisplayErrorMessage("You can only add fields once you have created the page"); return; } if (FieldCode.Text == "") { BasePage.DisplayErrorMessage("'FieldCode' cannot be blank"); return; } var fieldId = long.Parse(FieldID.Value); if (fieldId == 0) { var mediaTypeField = new MediaTypeField(); UpdatedObjectFromFields(mediaTypeField); mediaType.Fields.Add(mediaTypeField); foreach (var mediaDetail in mediaType.MediaDetails) { var mediaDetailField = new MediaDetailField(); mediaDetailField.CopyFrom(mediaTypeField); if (string.IsNullOrEmpty(mediaDetailField.UsageExample)) { mediaDetailField.UsageExample = "{Field:" + mediaDetailField.FieldCode + "} OR {{Load:" + mediaDetail.MediaID + "}.Field:" + mediaDetailField.FieldCode + "}"; } mediaDetailField.UseMediaTypeFieldFrontEndLayout = true; mediaDetailField.UseMediaTypeFieldDescription = true; if (mediaDetailField.FrontEndSubmissions == null) { mediaDetailField.FrontEndSubmissions = ""; } if (mediaDetailField.FieldSettings == null) { mediaDetailField.FieldSettings = ""; } mediaDetailField.MediaTypeField = mediaTypeField; mediaDetailField.DateCreated = mediaDetailField.DateLastModified = DateTime.Now; mediaDetailField.OrderIndex = mediaDetail.Fields.Count; mediaDetail.Fields.Add(mediaDetailField); } } else { var mediaTypeField = mediaType.Fields.SingleOrDefault(i => i.ID == fieldId); var oldFieldCode = mediaTypeField.FieldCode; UpdatedObjectFromFields(mediaTypeField); foreach (var mediaDetailField in mediaTypeField.MediaDetailFields) { var mediaDetailFieldValue = mediaDetailField.FieldValue; mediaDetailField.CopyFrom(mediaTypeField); if (string.IsNullOrEmpty(mediaDetailField.UsageExample)) { mediaDetailField.UsageExample = "{Field:" + mediaDetailField.FieldCode + "} OR {{Load:" + mediaDetailField.MediaDetail.MediaID + "}.Field:" + mediaDetailField.FieldCode + "}"; } if (mediaDetailField.UseMediaTypeFieldDescription) { mediaDetailField.FieldDescription = mediaTypeField.FieldDescription; } if (mediaDetailField.UseMediaTypeFieldFrontEndLayout) { mediaDetailField.FrontEndLayout = mediaTypeField.FrontEndLayout; } if (string.IsNullOrEmpty(mediaDetailFieldValue)) { mediaDetailField.FieldValue = mediaTypeField.FieldValue; } else { mediaDetailField.FieldValue = mediaDetailFieldValue; } mediaDetailField.DateLastModified = DateTime.Now; } } var returnObj = MediaTypesMapper.Update(mediaType); if (!returnObj.IsError) { Bind(); /*var liveMediaDetails = mediaType.MediaDetails.Where(i => i.HistoryVersionNumber == 0); * * foreach (var item in liveMediaDetails) * { * item.RemoveFromCache(); * }*/ } else { BasePage.DisplayErrorMessage("Error", returnObj.Error); } }
protected void Page_Init(object sender, EventArgs e) { long id; long parentId; long.TryParse(Request["historyVersion"], out historyVersion); long.TryParse(Request["mediaTypeId"], out mediaTypeId); if (long.TryParse(Request["selectedMediaId"], out id)) { selectedMediaItem = MediasMapper.GetByID(id); SelectedMedia = selectedMediaItem; if (selectedMediaItem != null) { selectedItem = MediaDetailsMapper.GetByMedia(selectedMediaItem, CurrentLanguage); if (historyVersion > 0) { selectedItem = BaseMapper.GetObjectFromContext((MediaDetail)selectedItem); historyVersionItem = BaseMapper.GetObjectFromContext((MediaDetail)MediaDetailsMapper.GetByMedia(selectedMediaItem, CurrentLanguage, historyVersion)); } if ((selectedItem != null) && (historyVersionItem != null)) { tmpSelectedItem = BaseMapper.GetObjectFromContext((MediaDetail)selectedItem); selectedItem = historyVersionItem; } } } if (long.TryParse(Request["parentMediaId"], out parentId)) { parentMediaItem = MediasMapper.GetByID(parentId); } if (selectedItem == null) { if (parentMediaItem != null) { SelectedMedia = parentMediaItem; } /*if (parentMediaItem == null) * return;*/ selectedItem = MediaDetailsMapper.CreateObject(mediaTypeId, selectedMediaItem, parentMediaItem); } Return canAccessReturnObj = BaseMapper.GenerateReturn(); if (selectedItem.ID != 0) { canAccessReturnObj = MediaDetailsMapper.CanAccessMediaDetail(selectedItem, CurrentUser); if (canAccessReturnObj.IsError) { DisplayErrorMessage("Cannot edit item", canAccessReturnObj.Error); CanAccessItem = canAccessReturnObj; return; } else { KeyValuePair <IMediaDetail, User> checkedOutItem = IsCheckedOut(selectedItem); if (checkedOutItem.Key == null) { CheckOut(selectedItem); } else { if (checkedOutItem.Value.ID != CurrentUser.ID) { Return returnObj = BaseMapper.GenerateReturn("Cannot edit item", "The item has been checked out by user: ( " + checkedOutItem.Value.UserName + " )"); CanAccessItem = returnObj; DisplayErrorMessage("Error", returnObj.Error); return; } } } } SelectedMediaDetail = selectedItem; SelectedMedia = selectedMediaItem; if (selectedMediaItem == null) { SelectedMedia = parentMediaItem; } if (selectedItem.ID == 0) { Save.Text = "Create"; SaveAndPublish.Text = "Create And Publish"; LoadLatestDraft.Visible = false; CreateDraft.Visible = false; var mediaType = MediaTypesMapper.GetByID(selectedItem.MediaTypeID); if (mediaType == null) { return; } selectedItem.MainLayout = mediaType.MainLayout; selectedItem.SummaryLayout = mediaType.SummaryLayout; selectedItem.FeaturedLayout = mediaType.FeaturedLayout; selectedItem.UseMediaTypeLayouts = mediaType.UseMediaTypeLayouts; var liveMediaDetail = selectedItem.Media?.GetLiveMediaDetail(); if (liveMediaDetail != null) { selectedItem.CopyFrom(liveMediaDetail); var fieldsNotInMediaType = liveMediaDetail.Fields.Where(i => i.MediaTypeFieldID == null); if (fieldsNotInMediaType != null) { foreach (var field in fieldsNotInMediaType) { var newField = new MediaDetailField(); newField.CopyFrom(field); if (field.FieldAssociations.Count > 0) { newField.FieldValue = ""; } else { newField.FieldValue = field.FieldValue; } newField.DateCreated = DateTime.Now; newField.DateLastModified = DateTime.Now; selectedItem.Fields.Add(newField); } } var fieldsThatCanBeCopied = liveMediaDetail.Fields.Where(i => !i.FieldAssociations.Any()); foreach (var field in fieldsThatCanBeCopied) { var foundField = selectedItem.Fields.FirstOrDefault(i => i.FieldCode == field.FieldCode); if (foundField != null) { foundField.CopyFrom(field); } } } } else { Save.Text = "Save Page"; SaveAndPublish.Text = "Save And Publish"; } if ((historyVersion > 0) && (historyVersionItem != null) && (!historyVersionItem.IsDraft)) { //SavePanel.Visible = false; } else { var draftItems = selectedItem.History.Where(i => i.IsDraft); if (draftItems.Count() > 0) { LoadLatestDraft.Visible = true; CreateDraft.Visible = false; } SaveAndPublish.Visible = true; SavePanel.Visible = true; HistoryPanel.Visible = false; } if (historyVersion > 0) { SavePanel.Visible = true; if (!selectedItem.IsDraft) { Save.Visible = false; } CreateDraft.Visible = false; PublishNow.Visible = false; PublishLive.Visible = true; HistoryPanel.Visible = true; HistoryVersionNumber.Text = historyVersion.ToString(); } if (CurrentUser.IsInRole(RoleEnum.Developer)) { EditMediaType.NavigateUrl = "~/Admin/Views/PageHandlers/MediaTypes/Detail.aspx?id=" + SelectedMediaDetail.MediaTypeID; EditMediaType.Visible = true; } Panel.SetObject(SelectedMediaDetail); if (Request.QueryString["masterFilePath"] != null) { PreviewPanel.Visible = false; RemovePreviewPanelScript.Visible = true; } else { PreviewPanel.Visible = true; RemovePreviewPanelScript.Visible = false; } UpdateSectionTitles(); }