public void CanAccessFrontEndEditorForMediaDetail(long id) { var returnObj = new Return(); var mediaDetail = MediaDetailsMapper.GetByID(id); if (mediaDetail != null && FrameworkSettings.CurrentUser != null) { returnObj = MediaDetailsMapper.CanAccessMediaDetail(mediaDetail, FrameworkSettings.CurrentUser); WriteJSON(StringHelper.ObjectToJson(returnObj)); } returnObj = new Return() { Error = new Elmah.Error(new Exception("Cannot access")) }; WriteJSON(StringHelper.ObjectToJson(returnObj)); }
private void UpdateTreeNode(JsTreeNode node, IMediaDetail detail) { if (detail == null) { return; } node.id = detail.MediaID.ToString(); node.parent = (detail.Media.ParentMediaID == null) ? "#" : detail.Media.ParentMediaID.ToString(); node.text = detail.SectionTitle; //node.children =( MediaDetailsMapper.GetAtleastOneChildByMedia(detail.Media, AdminBasePage.CurrentLanguage).Where(i => i.MediaType.ShowInSiteTree).Count() > 0); node.children = (BaseMapper.GetDataModel().MediaDetails.Count(i => i.MediaType.ShowInSiteTree && i.HistoryVersionNumber == 0 && i.Media.ParentMediaID == detail.MediaID) > 0); node.text = detail.SectionTitle.ToString(); //node.Attributes.Add("FrontEndUrl", detail.AbsoluteUrl); var nodeText = ""; if (detail.LanguageID != AdminBasePage.CurrentLanguage.ID) { nodeText = $"{detail.LinkTitle} - {LanguagesMapper.GetByID(detail.Language.ID).Name} ({node.id})"; node.li_attr._class = "doesNotExistInLanguage"; } else { nodeText = $"{detail.LinkTitle} <small>({detail.MediaID})</small>"; } if (detail.IsDeleted) { node.li_attr._class += " isDeleted"; } if (detail.WillPublish) { node.li_attr._class += " willPublish"; var autoPublishCode = $"<i class='fa fa-clock-o' aria-hidden='true' title='This page is set to auto-publish at: {detail.PublishDate}'></i> "; nodeText += $"<small class='willPublishWrapper'>{autoPublishCode}Will Publish</small>"; } if (detail.IsPublished && detail.WillExpire) { node.li_attr._class += " willExpire"; var autoPublishCode = $"<i class='fa fa-clock-o' aria-hidden='true' title='This page is set to auto-expire at: {detail.ExpiryDate}'></i> "; nodeText += $"<small class='willExpireWrapper'>{autoPublishCode}Will Expire</small>"; } if ((!detail.ShowInMenu) && (!detail.RenderInFooter)) { node.li_attr._class += " isHidden"; } if (detail.HasExpired) { node.li_attr._class += " hasExpired"; nodeText += $"<small class='hasExpiredWrapper'>Has Expired</small>"; } else { if (!detail.IsPublished && !detail.WillPublish) { node.li_attr._class += " unPublished"; nodeText += $"<small class='unPublishedWrapper'>UnPublished</small>"; } } if (AdminBasePage.SelectedMediaDetail != null && AdminBasePage.SelectedMediaDetail.ID == detail.ID) { node.li_attr._class += " selected"; } var draft = detail.GetLatestDraft(); if (detail.HasDraft && draft != null) { node.li_attr._class += " hasDraft"; var autoPublishCode = ""; if (draft.DateLastModified > detail.DateLastModified) { node.li_attr._class += " draftIsNewer"; } if ((draft.PublishDate - detail.PublishDate) > TimeSpan.FromSeconds(10)) { autoPublishCode = $"<i class='fa fa-clock-o' aria-hidden='true' title='This draft is set to auto-publish at: {draft.PublishDate}'></i> "; } nodeText += $"<small class='hasDraftWrapper'>{autoPublishCode}Has Draft</small>"; } var pendingComments = detail.Media.Comments.Count(i => i.Status == StatusEnum.Pending.ToString() && i.LanguageID == detail.LanguageID); if (pendingComments > 0) { node.li_attr._class += " hasPendingComments"; nodeText += $"<small class='hasPendingCommentsWrapper'>Pending Comments</small>"; } if (detail.MediaType.GetRoles().Count > 0 || detail.Media.RolesMedias.Count > 0) { var fontAwsomeClasses = "fa"; node.li_attr._class += " restricted"; if (MediaDetailsMapper.CanAccessMediaDetail(detail, FrameworkSettings.CurrentUser).IsError) { fontAwsomeClasses += " fa-lock"; } else { fontAwsomeClasses += " fa-unlock"; } nodeText += $"<small class='restrictedWrapper'><i class='fa {fontAwsomeClasses}' aria-hidden='true'></i></small>"; } node.text = nodeText; //node.LinkAttributes.Add("data-frontendurl", detail.Media.PermaLink); node.a_attr.frontendurl = detail.AbsoluteUrl; node.li_attr.mediaDetailId = detail.ID.ToString(); node.a_attr.href = URIHelper.ConvertToAbsUrl(WebApplication.BasePage.GetAdminUrl(detail.MediaTypeID, detail.MediaID)); if (detail?.MediaType?.Name == "Website" || detail?.MediaType?.Name == "RootPage") { node.state.opened = true; } IEnumerable <Media> parentItems = new List <Media>(); if (AdminBasePage.SelectedMedia != null) { parentItems = MediaDetailsMapper.GetAllParentMedias(AdminBasePage.SelectedMedia); if (parentItems.Any(i => i.ID == detail.MediaID)) { node.state.opened = true; } } if (detail.MediaID == AdminBasePage.SelectedMedia?.ID) { node.state.opened = true; node.state.selected = true; } }
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(); }