private void InitializeCodeActivity_ExecuteCode(object sender, EventArgs e)
        {
            FormsWorkflow workflow = this.GetRoot <FormsWorkflow>();

            string parentFolderPath;
            string storeId;

            if (this.EntityToken is MediaRootFolderProviderEntityToken)
            {
                MediaRootFolderProviderEntityToken token = (MediaRootFolderProviderEntityToken)this.EntityToken;
                parentFolderPath = "/";
                storeId          = token.Id;
            }
            else
            {
                DataEntityToken  token        = (DataEntityToken)this.EntityToken;
                IMediaFileFolder parentFolder = (IMediaFileFolder)token.Data;
                parentFolderPath = parentFolder.Path;
                storeId          = parentFolder.StoreId;
            }

            string providerName = DataFacade.GetData <IMediaFileStore>().Where(x => x.Id == storeId).First().DataSourceId.ProviderName;

            UploadedFile file = new UploadedFile();

            workflow.Bindings.Add("UploadedFile", file);
            workflow.Bindings.Add("RecreateFolders", true);
            workflow.Bindings.Add("OverwriteExisting", false);
            workflow.Bindings.Add("ParentFolderPath", parentFolderPath);
            workflow.Bindings.Add("ProviderName", providerName);
        }
Пример #2
0
        private void deleteCodeActivity_ExecuteCode(object sender, EventArgs e)
        {
            DeleteTreeRefresher treeRefresher = this.CreateDeleteTreeRefresher(this.EntityToken);
            DataEntityToken     token         = (DataEntityToken)this.EntityToken;

            using (TransactionScope transactionScope = TransactionsFacade.CreateNewScope())
            {
                IMediaFileFolder folder = DataFacade.GetDataFromDataSourceId(token.DataSourceId, false) as IMediaFileFolder;

                // Media folder may already be deleted at this point
                if (folder != null)
                {
                    if (!DataFacade.WillDeleteSucceed(folder))
                    {
                        this.ShowMessage(
                            DialogType.Error,
                            StringResourceSystemFacade.GetString("Composite.Management", "DeleteMediaFolderWorkflow.CascadeDeleteErrorTitle"),
                            StringResourceSystemFacade.GetString("Composite.Management", "DeleteMediaFolderWorkflow.CascadeDeleteErrorMessage")
                            );

                        return;
                    }

                    DataFacade.Delete(folder);
                }

                transactionScope.Complete();
            }

            treeRefresher.PostRefreshMesseges();
        }
Пример #3
0
        private void codeActivity1_ExecuteCode(object sender, EventArgs e)
        {
            DataEntityToken  token  = (DataEntityToken)this.EntityToken;
            IMediaFileFolder folder = (IMediaFileFolder)token.Data;

            string storeId    = folder.StoreId;
            string parentPath = folder.Path;

            StoreIdFilterQueryable <IMediaFileFolder> folderQueryable = new StoreIdFilterQueryable <IMediaFileFolder>(DataFacade.GetData <IMediaFileFolder>(), storeId);
            StoreIdFilterQueryable <IMediaFile>       fileQueryable   = new StoreIdFilterQueryable <IMediaFile>(DataFacade.GetData <IMediaFile>(), storeId);

            string innerElementsPathPrefix = string.Format("{0}/", parentPath);

            bool anyFiles =
                (from item in fileQueryable
                 where item.FolderPath.StartsWith(innerElementsPathPrefix) || item.FolderPath == parentPath
                 select item).Any();

            bool anyFolders =
                (from item in folderQueryable
                 where item.Path.StartsWith(innerElementsPathPrefix)
                 select item).Any();


            if ((anyFiles == false) && (anyFolders == false))
            {
                this.Bindings.Add("MessageText", StringResourceSystemFacade.GetString("Composite.Management", "Website.Forms.Administrative.DeleteMediaFolder.Text"));
            }
            else
            {
                this.Bindings.Add("MessageText", StringResourceSystemFacade.GetString("Composite.Management", "Website.Forms.Administrative.DeleteMediaFolder.HasChildringText"));
            }
        }
Пример #4
0
        private void initializeAddNewfolderCodeActivity_ExecuteCode(object sender, EventArgs e)
        {
            FormsWorkflow workflow = this.GetRoot <FormsWorkflow>();
            string        parentFolderPath;
            string        storeId;

            if (this.EntityToken is MediaRootFolderProviderEntityToken)
            {
                MediaRootFolderProviderEntityToken token = (MediaRootFolderProviderEntityToken)this.EntityToken;
                storeId          = token.Id;
                parentFolderPath = "/";
            }
            else
            {
                DataEntityToken  token        = (DataEntityToken)this.EntityToken;
                IMediaFileFolder parentFolder = (IMediaFileFolder)token.Data;
                storeId          = parentFolder.StoreId;
                parentFolderPath = parentFolder.Path;
            }

            IMediaFileStore  store  = DataFacade.GetData <IMediaFileStore>(x => x.Id == storeId).First();
            IMediaFileFolder folder = DataFacade.BuildNew <IMediaFileFolder>();

            folder.Path = parentFolderPath;

            workflow.Bindings.Add("NewFolder", folder);
            workflow.Bindings.Add("FolderName", "");
            workflow.Bindings.Add("ProviderName", store.DataSourceId.ProviderName);
            workflow.Bindings.Add("ProvidesMetaData", false);

            workflow.BindingsValidationRules.Add("FolderName", new List <ClientValidationRule> {
                new NotNullClientValidationRule()
            });
        }
Пример #5
0
        private IWatermarkConfiguration GetWatermarkConfigOrDefault(NameValueCollection queryString)
        {
            try
            {
                IMediaFile mediaFile = MediaUrlHelper.GetFileFromQueryString(queryString);

                using (var connection = new DataConnection())
                {
                    IQueryable <IWatermarkConfiguration> configs = connection.Get <IWatermarkConfiguration>();

                    foreach (IWatermarkConfiguration config in configs)
                    {
                        IMediaFileFolder mediaFolder =
                            connection.Get <IMediaFileFolder>().SingleOrDefault(mf => mf.KeyPath == config.TargetMediaFolderPath);
                        if (mediaFolder != null && mediaFile.CompositePath.StartsWith(mediaFolder.CompositePath))
                        {
                            return(config);
                        }
                    }
                }
            }
            // ReSharper disable once EmptyGeneralCatchClause
            catch (Exception)
            {
            }

            return(null);
        }
Пример #6
0
        /*private string CreateFolderPath(IMediaFileFolder folder)
         * {
         *  string folderName = this.GetBinding<string>("FolderName");
         *
         *  string folderPath = folder.Path;
         *
         *  if (folderPath == "/")
         *  {
         *      folderPath = folderPath + folderName;
         *  }
         *  else
         *  {
         *      folderPath = folderPath + "/" + folderName;
         *  }
         *
         *  folderPath = folderPath.Replace('\\', '/');
         *  while (folderPath.Contains("//"))
         *  {
         *      folderPath.Replace("//", "/");
         *  }
         *
         *  if ((folderPath != "/") && (folderPath.StartsWith("/")))
         *  {
         *      folderPath.Remove(0, 1);
         *  }
         *
         *  return folderPath;
         * }*/


        private void finalizeCodeActivity_ExecuteCode(object sender, EventArgs e)
        {
            AddNewTreeRefresher addNewTreeRefresher = this.CreateAddNewTreeRefresher(this.EntityToken);

            IMediaFileFolder folder       = this.GetBinding <IMediaFileFolder>("NewFolder");
            string           folderName   = this.GetBinding <string>("FolderName");
            string           providerName = this.GetBinding <string>("ProviderName");

            string folderPath = folder.CreateFolderPath(folderName);

            folder.Path = folderPath;

            if (folder.Title == string.Empty)
            {
                folder.Title = folderPath.GetFolderName('/');
            }

            CreateParentFolder(folder.GetParentFolderPath(), providerName);

            folder = DataFacade.AddNew <IMediaFileFolder>(folder, providerName);

            addNewTreeRefresher.PostRefreshMesseges(folder.GetDataEntityToken());

            SelectElement(folder.GetDataEntityToken());
        }
        public IData GetParent(IData data)
        {
            IData parent = null;

            if (data is IMediaFile)
            {
                IMediaFile file = (IMediaFile)data;

                parent = (from item in DataFacade.GetData <IMediaFileFolder>()
                          where item.Path == file.FolderPath && item.StoreId == file.StoreId
                          select item).FirstOrDefault();
            }
            else if (data is IMediaFileFolder)
            {
                IMediaFileFolder folder = (IMediaFileFolder)data;

                int lastIndex = folder.Path.LastIndexOf('/');
                if (lastIndex == 0)
                {
                    return(null);
                }

                string parentPath = folder.Path.Substring(0, lastIndex);
                parent = (from item in DataFacade.GetData <IMediaFileFolder>()
                          where item.Path == parentPath && item.StoreId == folder.StoreId
                          select item).FirstOrDefault();
            }
            else
            {
                throw new ArgumentException("Must be either of type IMediaFile or IMediaFileFolder", "data");
            }


            return(parent);
        }
        private void ValidateInputs(object sender, ConditionalEventArgs e)
        {
            IMediaFileFolder folder = this.GetDataItemFromEntityToken <IMediaFileFolder>();

            string oldFolderPath = this.GetBinding <string>("OldFolderPath");
            string folderPath    = CreateFolderPath();

            if (oldFolderPath != folderPath)
            {
                Guid folderId = folder.Id;

                if (DataFacade.GetData <IMediaFileFolder>()
                    .Any(f => string.Compare(f.Path, folderPath, StringComparison.OrdinalIgnoreCase) == 0 &&
                         f.Id != folderId))
                {
                    ShowFieldMessage("FolderName", StringResourceSystemFacade.GetString("Composite.Management", "Website.Forms.Administrative.AddNewMediaFolder.FolderNameAlreadyUsed"));
                    e.Result = false;
                    return;
                }

                IEnumerable <string> filenames = DataFacade.GetData <IMediaFile>().Where(f => f.FolderPath == oldFolderPath).Select(f => f.FileName);
                foreach (string filename in filenames)
                {
                    string compositePath = IMediaFileExtensions.GetCompositePath(folder.StoreId, folderPath, filename);
                    if (compositePath.Length > 2048)
                    {
                        this.ShowFieldMessage("FolderName", "${Composite.Management, Website.Forms.Administrative.EditMediaFolder.TotalFilenameToLong.Message}");
                        e.Result = false;
                        return;
                    }
                }
            }

            e.Result = true;
        }
        public static IEnumerable <DataReferenceLabelPair <IImageFile> > GenerateSelectorOptions(DataReference <IMediaFileFolder> folderReference)
        {
            IMediaFileFolder folder = null;

            if (folderReference.IsSet)
            {
                try
                {
                    folder = folderReference.Data;
                }
                catch (Exception)
                {
                    string reference = folderReference.Serialize() ?? string.Empty;
                    LoggingService.LogError(LogTitle, "Failed to get media folder by referece: '{0}'".FormatWith(reference));
                }
            }

            if (folder != null)
            {
                int pathLength = folder.Path.Length;

                return
                    (from mediaFile in DataFacade.GetData <IImageFile>()
                     where mediaFile.StoreId == folder.StoreId && mediaFile.FolderPath.StartsWith(folder.Path)
                     orderby mediaFile.StoreId, mediaFile.FolderPath, mediaFile.FileName
                     select new DataReferenceLabelPair <IImageFile>(mediaFile, mediaFile.FolderPath.Substring(pathLength) + "/" + mediaFile.FileName));
            }

            // Returning all of the images
            return
                (from mediaFile in DataFacade.GetData <IImageFile>()
                 orderby mediaFile.StoreId, mediaFile.FolderPath, mediaFile.FileName
                 select new DataReferenceLabelPair <IImageFile>(mediaFile, mediaFile.StoreId + ":" + mediaFile.FolderPath + "/" + mediaFile.FileName));
        }
Пример #10
0
        public static IEnumerable <DataReferenceLabelPair <IMediaFile> > GenerateSelectorOptions(string key)
        {
            string folderString      = key.Split('?')[0];
            string extensionFilter   = key.Split('?')[1];
            bool   includeSubfolders = bool.Parse(key.Split('?')[2]);

            IQueryable <IMediaFile> queryable = DataFacade.GetData <IMediaFile>();

            bool filterByFolder = !folderString.IsNullOrEmpty();

            IMediaFileFolder folder = null;

            if (filterByFolder)
            {
                var folderReference = new DataReference <IMediaFileFolder>(folderString);
                folder = folderReference.Data;

                string storeId = folder.StoreId;

                queryable = queryable.Where(mediaFile => mediaFile.StoreId == storeId);

                string folderPath = folder.Path;
                if (!includeSubfolders)
                {
                    queryable = queryable.Where(mediaFile => mediaFile.FolderPath == folderPath);
                }
                else
                {
                    string descFolderPrefix = folderPath + "/";
                    queryable = queryable.Where(mediaFile => mediaFile.FolderPath == folderPath || mediaFile.FolderPath.StartsWith(descFolderPrefix));
                }
            }


            if (!extensionFilter.IsNullOrEmpty())
            {
                Expression <Func <IMediaFile, bool> > filter = GetExtensionFilter(extensionFilter);

                if (filter != null)
                {
                    queryable = queryable.Where(filter);
                }
            }

            // orderby mediaFile.StoreId, mediaFile.FolderPath, mediaFile.FileName
            queryable = queryable.OrderBy(file => file.StoreId).ThenBy(file => file.FolderPath).ThenBy(file => file.FileName);


            if (filterByFolder)
            {
                int pathLength = folder.Path.Length;

                return(from mediaFile in queryable
                       select new DataReferenceLabelPair <IMediaFile>(mediaFile, mediaFile.FolderPath.Substring(pathLength) + "/" + mediaFile.FileName));
            }

            return(from mediaFile in queryable
                   select new DataReferenceLabelPair <IMediaFile>(mediaFile, mediaFile.StoreId + ":" + mediaFile.FolderPath + "/" + mediaFile.FileName));
        }
Пример #11
0
        private static void CreateFolder(IList <IMediaFileFolder> folders, string parentPath, string directoryEntryName)
        {
            IMediaFileFolder folder = DataFacade.BuildNew <IMediaFileFolder>();

            folder.Title = directoryEntryName.GetFolderName('/');
            folder.Path  = parentPath.Combine(directoryEntryName, '/');

            folders.Add(folder);
        }
 private void ValidateFolderData(IMediaFileFolder mediaFolder)
 {
     if (!mediaFolder.Path.IsCorrectFolderName('/'))
     {
         throw new ArgumentException("Invalid folder name");
     }
     if (!DoesFolderExists(mediaFolder.GetParentFolderPath()))
     {
         throw new ArgumentException("Could not find any parents folders on path " + mediaFolder.GetParentFolderPath());
     }
     if (DoesFolderExists(mediaFolder.Path))
     {
         throw new ArgumentException("Folder already exists on path " + mediaFolder.Path);
     }
 }
Пример #13
0
        private void CreateParentFolder(string parentFolder, string providerName)
        {
            if (IMediaFileFolderUtils.DoesFolderExists(parentFolder))
            {
                return;
            }

            CreateParentFolder(IMediaFileFolderUtils.GetParentFolderPath(parentFolder), providerName);

            IMediaFileFolder folder = DataFacade.BuildNew <IMediaFileFolder>();

            folder.Path = parentFolder;

            DataFacade.AddNew <IMediaFileFolder>(folder, providerName);
        }
        private void saveCodeActivity_ExecuteCode(object sender, EventArgs e)
        {
            UpdateTreeRefresher updateTreeRefresher = this.CreateUpdateTreeRefresher(this.EntityToken);

            IMediaFileFolder folder = this.GetDataItemFromEntityToken <IMediaFileFolder>();

            folder.Path        = CreateFolderPath();
            folder.Title       = this.GetBinding <string>("FolderTitle");
            folder.Description = this.GetBinding <string>("FolderDescription");

            DataFacade.Update(folder);

            SetSaveStatus(true);

            updateTreeRefresher.PostRefreshMesseges(folder.GetDataEntityToken());
        }
Пример #15
0
 private void Initialize()
 {
     if (this.EntityToken is MediaRootFolderProviderEntityToken)
     {
         MediaRootFolderProviderEntityToken token = (MediaRootFolderProviderEntityToken)this.EntityToken;
         _storeId    = token.Id;
         _folderPath = "/";
     }
     else
     {
         DataEntityToken  token        = (DataEntityToken)this.EntityToken;
         IMediaFileFolder parentFolder = (IMediaFileFolder)token.Data;
         _storeId    = parentFolder.StoreId;
         _folderPath = parentFolder.Path;
     }
 }
        private void UpdateMediaFileFolder(IMediaFileFolder updatedFolder)
        {
            Guid             mediaFolderId     = updatedFolder.Id;
            IMediaFolderData currentFolderData = DataFacade.GetData <IMediaFolderData>(x => x.Id == mediaFolderId).First();

            if (updatedFolder.Path != currentFolderData.Path)
            {
                ValidateFolderData(updatedFolder);
            }

            string oldPath          = currentFolderData.Path;
            string oldPathWithSlash = oldPath + "/";
            List <IMediaFolderData> foldersToUpdatePath =
                (from item in DataFacade.GetData <IMediaFolderData>()
                 where item.Path.StartsWith(oldPathWithSlash) && item.Id != currentFolderData.Id
                 select item).ToList();

            if (foldersToUpdatePath.Count > 0)
            {
                foreach (IMediaFolderData item in foldersToUpdatePath)
                {
                    item.Path = updatedFolder.Path + item.Path.Substring(oldPath.Length);
                }

                DataFacade.Update(foldersToUpdatePath);
            }


            List <IMediaFileData> filesToUpdatePath =
                (from item in DataFacade.GetData <IMediaFileData>()
                 where item.FolderPath == oldPath ||
                 item.FolderPath.StartsWith(oldPathWithSlash)
                 select item).ToList();

            if (filesToUpdatePath.Count > 0)
            {
                foreach (IMediaFileData mediaFileData in filesToUpdatePath)
                {
                    mediaFileData.FolderPath = updatedFolder.Path + mediaFileData.FolderPath.Substring(oldPath.Length);
                }
                DataFacade.Update(filesToUpdatePath);
            }


            CopyFolderData(updatedFolder, currentFolderData);
            DataFacade.Update(currentFolderData);
        }
        private MediaFileFolder AddMediaFileFolder(IMediaFileFolder mediaFolder)
        {
            ValidateFolderData(mediaFolder);

            var folderData = DataFacade.BuildNew <IMediaFolderData>();

            folderData.Id = Guid.NewGuid();
            CopyFolderData(mediaFolder, folderData);
            folderData = DataFacade.AddNew <IMediaFolderData>(folderData);

            return(new MediaFileFolder(folderData, Store.Id, _context.CreateDataSourceId(
                                           new MediaDataId
            {
                MediaType = MediaElementType.Folder,
                Id = folderData.Id
            },
                                           typeof(IMediaFileFolder))));
        }
        private void initializeCodeActivity_ExecuteCode(object sender, EventArgs e)
        {
            IMediaFileFolder folder = this.GetDataItemFromEntityToken <IMediaFileFolder>();
            IMediaFileStore  store  = DataFacade.GetData <IMediaFileStore>(x => x.Id == folder.StoreId).First();

            this.Bindings.Add("FolderTitle", folder.Title);
            this.Bindings.Add("FolderDescription", folder.Description);
            this.Bindings.Add("FolderName", folder.Path.GetFolderName('/'));
            this.Bindings.Add("ProvidesMetaData", store.ProvidesMetadata);
            this.Bindings.Add("OldFolderPath", folder.Path);

            this.BindingsValidationRules.Add("FolderName", new List <ClientValidationRule> {
                new NotNullClientValidationRule()
            });
            this.BindingsValidationRules.Add("FolderTitle", new List <ClientValidationRule> {
                new StringLengthClientValidationRule(0, 256)
            });
        }
        public override object Execute(ParameterList parameters, FunctionContextContainer context)
        {
            var mediaFolderReference = parameters.GetParameter <DataReference <IMediaFileFolder> >("MediaFolder");

            Verify.ArgumentNotNull(mediaFolderReference, "mediaFolderReference");

            bool includeSubfolders = parameters.GetParameter <bool>("IncludeSubfolders");

            IMediaFileFolder mediaFolder = GetMediaFolder(mediaFolderReference);

            if (mediaFolder == null)
            {
                return((Expression <Func <TMedia, bool> >)(f => false));
            }

            string mediaFolderPath          = mediaFolder.Path;
            string mediaFolderPathWithSlash = mediaFolder.Path + "/";

            if (includeSubfolders)
            {
                //return (Expression<Func<TMedia, bool>>)
                //       (image => image.FolderPath == mediaFolderPath
                //            || image.FolderPath.StartsWith(mediaFolderPathWithSlash));

                var imageParam = Expression.Parameter(typeof(TMedia), "image");

                var orElse = Expression.OrElse(
                    Expression.Equal(Expression.Property(imageParam, MethodInfoGetFolderPath),
                                     Expression.Constant(mediaFolderPath)),
                    Expression.Call(Expression.Property(imageParam, MethodInfoGetFolderPath),
                                    MethodInfoStringStartsWith,
                                    new Expression[] { Expression.Constant(mediaFolderPathWithSlash) }));

                return(Expression.Lambda <Func <TMedia, bool> >(orElse, imageParam));
            }
            // return (Expression<Func<TMedia, bool>>)(imageParam1 => imageParam1.FolderPath == mediaFolderPath);

            var imageParam1 = Expression.Parameter(typeof(TMedia), "image");

            return(Expression.Lambda <Func <TMedia, bool> >(
                       Expression.Equal(Expression.Property(imageParam1, MethodInfoGetFolderPath),
                                        Expression.Constant(mediaFolderPath)),
                       imageParam1));
        }
        public List <T> AddNew <T>(IEnumerable <T> datas) where T : class, IData
        {
            List <T> result = new List <T>();

            foreach (IData data in datas)
            {
                if (data == null)
                {
                    throw new ArgumentException("Data in list to add must be non-null");
                }
                CheckInterface(typeof(T));
            }

            foreach (IData data in datas)
            {
                if (typeof(T) == typeof(IMediaFile))
                {
                    IMediaFile file     = (IMediaFile)data;
                    string     fullPath = Path.Combine(Path.Combine(_rootDir, file.FolderPath.Remove(0, 1)), file.FileName);

                    using (Stream readStream = file.GetReadStream())
                    {
                        using (Stream writeStream = C1File.Open(fullPath, FileMode.CreateNew))
                        {
                            readStream.CopyTo(writeStream);
                        }
                    }

                    result.Add(CreateFile(fullPath) as T);
                }
                else if (typeof(T) == typeof(IMediaFileFolder))
                {
                    IMediaFileFolder folder   = (IMediaFileFolder)data;
                    string           fullPath = Path.Combine(_rootDir, folder.Path.Remove(0, 1));

                    C1Directory.CreateDirectory(fullPath);
                    result.Add(CreateFolder(fullPath) as T);
                }
            }
            return(result);
        }
Пример #21
0
        private void HasDataReferences(object sender, ConditionalEventArgs e)
        {
            DataEntityToken  token  = (DataEntityToken)this.EntityToken;
            IMediaFileFolder folder = (IMediaFileFolder)token.Data;

            string storeId    = folder.StoreId;
            string parentPath = folder.Path;

            string innerElementsPathPrefix = string.Format("{0}/", parentPath);

            var fileQueryable = new StoreIdFilterQueryable <IMediaFile>(DataFacade.GetData <IMediaFile>(), storeId);
            IEnumerable <IMediaFile> childFiles =
                (from item in fileQueryable
                 where item.FolderPath.StartsWith(innerElementsPathPrefix) || item.FolderPath == parentPath
                 select item).Evaluate();

            var brokenReferences = new List <IData>();

            foreach (IMediaFile mediaFile in childFiles)
            {
                List <IData> references = DataReferenceFacade.GetNotOptionalReferences(mediaFile);
                foreach (IData reference in references)
                {
                    if (brokenReferences.Any(data => data.DataSourceId.Equals(reference.DataSourceId)))
                    {
                        continue;
                    }
                    brokenReferences.Add(reference);
                }
            }

            e.Result = brokenReferences.Count > 0;
            if (brokenReferences.Count == 0)
            {
                return;
            }

            Bindings.Add("ReferencedData", DataReferenceFacade.GetBrokenReferencesReport(brokenReferences));
        }
Пример #22
0
        private void ValidateInputs(object sender, ConditionalEventArgs e)
        {
            e.Result = true;

            IMediaFileFolder folder     = this.GetBinding <IMediaFileFolder>("NewFolder");
            string           folderName = this.GetBinding <string>("FolderName");
            string           folderPath = folder.CreateFolderPath(folderName);

            string tempFolderName = folderName.Replace('\\', '/').Trim();

            while (tempFolderName.Contains("//"))
            {
                tempFolderName = tempFolderName.Replace("//", "/");
            }

            if (tempFolderName == "/")
            {
                e.Result = false;
                ShowFieldMessage("FolderName", StringResourceSystemFacade.GetString("Composite.Management", "Website.Forms.Administrative.AddNewMediaFolder.FolderNotOnlySlash"));
                return;
            }

            if (DataFacade.GetData <IMediaFileFolder>().Any(f => string.Compare(f.Path, folderPath, StringComparison.InvariantCultureIgnoreCase) == 0))
            {
                e.Result = false;
                ShowFieldMessage("FolderName", StringResourceSystemFacade.GetString("Composite.Management", "Website.Forms.Administrative.AddNewMediaFolder.FolderNameAlreadyUsed"));
            }

            if (folderPath.Length > 2048)
            {
                e.Result = false;
                ShowFieldMessage("FolderName", StringResourceSystemFacade.GetString("Composite.Management", "Website.Forms.Administrative.AddNewMediaFolder.FolderNameTooLong"));
            }



            folderPath.IsCorrectFolderName('/');
        }
Пример #23
0
        private string ForceGetMediaFolderPath(string path)
        {
            if (path == "/")
            {
                return(path);
            }
            if (!path.IsCorrectFolderName('/'))
            {
                throw new ArgumentException("Invalid folder name");
            }
            IMediaFileFolder folder = (from item in DataFacade.GetData <IMediaFileFolder>()
                                       where item.Path == path
                                       select item).FirstOrDefault();

            if (folder == null)
            {
                ForceGetMediaFolderPath(GetParentFolderPath(path));
                folder      = DataFacade.BuildNew <IMediaFileFolder>();
                folder.Path = path;
                folder      = DataFacade.AddNew(folder);
            }
            return(folder.Path);
        }
        public void Update(IEnumerable <IData> datas)
        {
            foreach (IData data in datas)
            {
                if (data == null)
                {
                    throw new ArgumentException("Data in list to update must be non-null");
                }
            }

            foreach (IData data in datas)
            {
                MediaDataId dataId = data.DataSourceId.DataId as MediaDataId;
                if (dataId == null)
                {
                    throw new ArgumentException("Invalid IData");
                }

                if (dataId.MediaType == _fileType)
                {
                    IMediaFile updatedFile = (IMediaFile)data;

                    if (updatedFile.StoreId != this.Store.Id)
                    {
                        continue;
                    }
                    if (updatedFile.IsReadOnly)
                    {
                        throw new ArgumentException("Cannot update read only media file " + dataId.FileName);
                    }

                    if (updatedFile.FileName != dataId.FileName || updatedFile.FolderPath != dataId.Path)
                    {
                        string oldPos = GetAbsolutePath(dataId);
                        string newPos = GetAbsolutePath(updatedFile);
                        C1File.Move(oldPos, newPos);
                    }

                    using (Stream readStream = updatedFile.GetReadStream())
                    {
                        using (Stream writeStream = C1File.Open(GetAbsolutePath(updatedFile), FileMode.Create))
                        {
                            readStream.CopyTo(writeStream);
                        }
                    }
                }
                else
                {
                    IMediaFileFolder updatedFolder = (IMediaFileFolder)data;
                    if (updatedFolder.StoreId != this.Store.Id)
                    {
                        continue;
                    }
                    if (updatedFolder.IsReadOnly)
                    {
                        throw new ArgumentException("Cannot update read only media folder " + dataId.Path);
                    }
                    C1Directory.Move(GetAbsolutePath(dataId), GetAbsolutePath(updatedFolder));
                }
            }
        }
 private string GetAbsolutePath(IMediaFileFolder folder)
 {
     return(Path.Combine(_rootDir, folder.Path.Remove(0, 1)));
 }
Пример #26
0
 /// <summary>
 /// Returns true if the given media folders parent folder exists
 /// </summary>
 /// <param name="mediaFileFolder"></param>
 /// <returns></returns>
 public static bool DoesParentFolderExists(this IMediaFileFolder mediaFileFolder)
 {
     return(DoesFolderExists(mediaFileFolder.GetParentFolderPath()));
 }
Пример #27
0
 /// <summary>
 /// Returns true if the given media folder exists
 /// </summary>
 /// <param name="mediaFileFolder"></param>
 /// <returns></returns>
 public static bool DoesFolderExists(this IMediaFileFolder mediaFileFolder)
 {
     return(DoesFolderExists(mediaFileFolder.Path));
 }
Пример #28
0
 /// <summary>
 /// Returns the parent folder for the given media folder
 /// </summary>
 /// <param name="mediaFileFolder"></param>
 /// <returns></returns>
 public static string GetParentFolderPath(this IMediaFileFolder mediaFileFolder)
 {
     return(GetParentFolderPath(mediaFileFolder.Path));
 }
Пример #29
0
 /// <summary>
 /// Creates a folder path given folder path and the name of the folder
 /// </summary>
 /// <param name="parentMediaFolder"></param>
 /// <param name="folderName"></param>
 /// <returns></returns>
 public static string CreateFolderPath(this IMediaFileFolder parentMediaFolder, string folderName)
 {
     return(CreateFolderPath(parentMediaFolder.Path, folderName));
 }
 public static string GetCompositePath(this IMediaFileFolder mediaFileFolder)
 {
     return(string.Format("{0}:{1}", mediaFileFolder.StoreId, mediaFileFolder.Path));
 }