//public ViewMode Mode { get; set; }

        protected void AddItem_Click(object sender, EventArgs e)
        {
            var field = GetField();

            var media = MediasMapper.GetByID(field.MediaDetail.MediaID);

            var fieldAssociation = new FieldAssociation();

            fieldAssociation.MediaDetail = (MediaDetail)PagesMapper.CreateObject(MediaTypeID, MediasMapper.CreateObject(), media);
            fieldAssociation.MediaDetail.SectionTitle              = fieldAssociation.MediaDetail.ShortDescription = fieldAssociation.MediaDetail.MainContent = fieldAssociation.MediaDetail.LinkTitle;
            fieldAssociation.MediaDetail.PathToFile                = "/media/images/icons/File.jpg";
            fieldAssociation.MediaDetail.PublishDate               = DateTime.Now;
            fieldAssociation.MediaDetail.CreatedByUserID           = fieldAssociation.MediaDetail.LastUpdatedByUserID = FrameworkSettings.CurrentUser.ID;
            fieldAssociation.MediaDetail.CachedVirtualPath         = fieldAssociation.MediaDetail.CalculatedVirtualPath();
            fieldAssociation.MediaDetail.LanguageID                = AdminBasePage.CurrentLanguage.ID;
            fieldAssociation.MediaDetail.UseDefaultLanguageLayouts = false;

            var mediaType = MediaTypesMapper.GetByID(fieldAssociation.MediaDetail.MediaTypeID);

            if (mediaType != null)
            {
                fieldAssociation.MediaDetail.UseMediaTypeLayouts = mediaType.UseMediaTypeLayouts;
            }

            field.FieldAssociations.Add(fieldAssociation);
            var returnObj = BaseMapper.SaveDataModel();

            BindValues();
        }
        protected void UploadFilesNow_Click(object sender, EventArgs e)
        {
            try
            {
                var field = GetField();

                if (IsPostBack && Request.Files.Count > 0 && !hasRun)
                {
                    hasRun = true;

                    var index = 0;
                    for (int i = 0; i < Request.Files.Count; i++)
                    {
                        var file = Request.Files[i];

                        if (string.IsNullOrEmpty(file.FileName))
                        {
                            continue;
                        }

                        var fileInfo = (new System.IO.FileInfo(GetFolderPath() + file.FileName));

                        if (!fileInfo.Directory.Exists)
                        {
                            fileInfo.Directory.Create();
                        }

                        if (fileInfo.Directory.Exists)
                        {
                            file.SaveAs(fileInfo.FullName);

                            var filePath = URIHelper.ConvertAbsUrlToTilda(URIHelper.ConvertAbsPathToAbsUrl(fileInfo.FullName)).Replace("~", "");

                            if (!field.FieldAssociations.Any(j => j.MediaDetail.PathToFile == filePath))
                            {
                                var fieldAssociation = new FieldAssociation();
                                fieldAssociation.MediaDetail                   = (MediaDetail)PagesMapper.CreateObject(MediaTypeID, MediasMapper.CreateObject(), AdminBasePage.SelectedMedia);
                                fieldAssociation.MediaDetail.LinkTitle         = fieldAssociation.MediaDetail.SectionTitle = fieldAssociation.MediaDetail.ShortDescription = fieldAssociation.MediaDetail.MainContent = fileInfo.Name;
                                fieldAssociation.MediaDetail.PathToFile        = filePath;
                                fieldAssociation.MediaDetail.PublishDate       = DateTime.Now;
                                fieldAssociation.MediaDetail.CreatedByUser     = fieldAssociation.MediaDetail.LastUpdatedByUser = FrameworkSettings.CurrentUser;
                                fieldAssociation.MediaDetail.CachedVirtualPath = fieldAssociation.MediaDetail.CalculatedVirtualPath();
                                fieldAssociation.MediaDetail.LanguageID        = SettingsMapper.GetSettings().DefaultLanguage.ID;

                                field.FieldAssociations.Add(fieldAssociation);

                                index++;

                                var returnObj = BaseMapper.SaveDataModel();
                            }
                        }
                    }
                }
                SetValue(GetValue());
            }
            catch (Exception ex)
            {
            }
        }
Exemplo n.º 3
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 UsageDialogController(string title, string subjectName, string subjectType, FieldAssociation association)
        {
            if (association == null)
            {
                throw new ArgumentNullResourceException("association", Resources.General_Given_Parameter_Cannot_Be_Null);
            }

            DefaultButtonCaption = "Close";
            ImageSource = "../Assets/MainIcon.png";
            DialogTitle = title;
            HeadingCaption = BuildHeadingCaption(subjectName, subjectType, association);
            DataList = association.UsageDescriptors;
        }
        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);
        }
Exemplo n.º 6
0
 public void ShowDialog(string title, string subjectName, string subjectType, FieldAssociation association)
 {
     DataContext = new UsageDialogController(title, subjectName, subjectType, association);
     ShowDialog();
 }
        public static string BuildHeadingCaption(string subjectName, string subjectType, FieldAssociation association)
        {
            if (association == null)
            {
                throw new ArgumentNullResourceException("association", Resources.General_Given_Parameter_Cannot_Be_Null);
            }

            if (association is ConsumeAssociation)
            {
                return string.Format(
                    CultureInfo.CurrentCulture,
                    "The following methods in the {0} {1} consume the {2} {3}:",
                    subjectName,
                    subjectType,
                    association.AssociatedTo.Name,
                    association.AssociatedTo.Modifiers.TypeTextName);
            }

            if (association.UsageDescriptors.Any(x => x.Kind == MemberKind.Method))
            {
                return string.Format(
                    CultureInfo.CurrentCulture,
                    "{0} fields in the {1} {2} and other methods that consume the {0} {3}:",
                    association.AssociatedTo.Name,
                    subjectName,
                    subjectType,
                    association.AssociatedTo.Modifiers.TypeTextName);
            }

            return string.Format(
                CultureInfo.CurrentCulture,
                "{0} fields in the {1} {2}:",
                association.AssociatedTo.Name,
                subjectName,
                subjectType);
        }
        /// <summary>
        /// Dehydrates a runtime object model <see cref="FieldAssociation"/> to a persistence object.
        /// </summary>
        /// <param name="association">
        /// The association.
        /// </param>
        /// <returns>
        /// The <see cref="FieldAssociationData"/>.
        /// </returns>
        private static FieldAssociationData ConvertAndCache(FieldAssociation association)
        {
            if (association == null)
            {
                throw new ArgumentNullResourceException("association", Resources.General_Given_Parameter_Cannot_Be_Null);
            }

            FieldAssociationData converted;
            if (association is StaticAssociation)
            {
                converted = new StaticAssociationData();
            }
            else if (association is ConsumeAssociation)
            {
                converted = new ConsumeAssociationData();
            }
            else
            {
                converted = new FieldAssociationData();
            }

            converted.Name = association.Name;
            VisualisableTypeDataContainer typeData;
            if (!FieldDataCache.TryGetValue(association.AssociatedTo.Id, out typeData))
            {
                typeData = new VisualisableTypeDataContainer();
                FieldDataCache.Add(association.AssociatedTo.Id, typeData); // Stack Overflow potential, be sure to cache converted types to ensure no circular references.
                typeData.Data = association.AssociatedTo.ExtractPersistentData();
            }

            if (typeData.Data == null)
            {
                // Should be free from memory leaks being a private class
                typeData.DataReady += (s, e) => converted.AssociatedTo = typeData.Data;
            }

            converted.AssociatedTo = typeData.Data;
            converted.UsageCount = association.UsageCount;
            return converted;
        }