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);
                }
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
        }
Example #6
0
        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);
            }
        }
Example #7
0
        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();
        }