/// <summary> /// Gets the ACL mask of the <paramref name="folder"/>. /// </summary> /// <param name="folder">The <see cref="AssetFolder"/> for which to generate the ACL mask.</param> /// <returns>Returns the mask code.</returns> protected static int GetACLMask(AssetFolder folder) { // validate arguments if (folder == null) throw new ArgumentNullException("folder"); return (int) (AccessControlRules.FolderView | AccessControlRules.FileView | AccessControlRules.FolderCreate | AccessControlRules.FileUpload); }
/// <summary> /// Builds the asset path of the specified <paramref name="folder"/>. /// </summary> /// <param name="folder">The <see cref="AssetFolder"/> for which to create the path.</param> /// <returns>Returns the path.</returns> public static string GetPath(AssetFolder folder) { // validate arguments if (folder == null) throw new ArgumentNullException("folder"); // build the url return GetPath(folder.AssetType.Node, folder.Node); }
/// <summary> /// Creates an <see cref="AssetEntry"/> instance from <paramref name="node"/>. /// </summary> /// <param name="context">The <see cref="IMansionContext"/>.</param> /// <param name="folder">The <see cref="AssetFolder"/>.</param> /// <param name="node">The <see cref="Node"/>.</param> /// <returns>Returns the created <see cref="AssetEntry"/> instance.</returns> public static AssetEntry Create(IMansionContext context, AssetFolder folder, Node node) { //validate arguments if (context == null) throw new ArgumentNullException("context"); if (folder == null) throw new ArgumentNullException("folder"); if (node == null) throw new ArgumentNullException("node"); return new AssetEntry { AssetFolder = folder, Name = node.Pointer.Name, Size = node.Get<long>(context, "size", 0), ModificationDate = node.Get(context, "modified", DateTime.MinValue) }; }
/// <summary> /// Retrieves all the <see cref="AssetFolder"/>s underneath the <paramref name="folder"/>. /// </summary> /// <param name="context">The <see cref="IMansionContext"/>.</param> /// <param name="folder">The <see cref="AssetFolder"/> from which to get the children.</param> /// <returns>Returns all the <see cref="AssetFolder"/>s.</returns> public IEnumerable<AssetFolder> RetrieveFolders(IMansionContext context, AssetFolder folder) { // validate arguments if (context == null) throw new ArgumentNullException("context"); if (folder == null) throw new ArgumentNullException("folder"); // retrieve all the asset type nodes var nodeset = RetrieveFolderNodeset(context, folder.Node); // loop over all the nodes and turn them into asset type return nodeset.Nodes.Select(node => AssetFolder.Create(context, folder.AssetType, node)); }
/// <summary> /// Stores the resource in the specified <paramref name="folder"/>. /// </summary> /// <param name="context">The <see cref="IMansionContext"/>.IMansionContext</param> /// <param name="folder">The <see cref="AssetFolder"/> in which to store the resource.</param> /// <param name="filename">The filename of the resource.</param> /// <param name="inputStream">The input <see cref="Stream"/> containg the content of the resource.</param> /// <returns>Returns the stored <see cref="AssetEntry"/>.</returns> public AssetEntry StoreResource(IMansionContext context, AssetFolder folder, string filename, Stream inputStream) { // validate arguments if (context == null) throw new ArgumentNullException("context"); if (folder == null) throw new ArgumentNullException("folder"); if (string.IsNullOrEmpty(filename)) throw new ArgumentNullException("context"); if (inputStream == null) throw new ArgumentNullException("inputStream"); // sanitise the file name filename = SanitiseFileName(filename); // store the resource var resourcePath = contentResourceService.ParsePath(context, new PropertyBag { {"category", AssetUtil.GetPath(folder)}, {"relativePath", filename} }); var resource = contentResourceService.GetResource(context, resourcePath); using (var pipe = resource.OpenForWriting()) inputStream.CopyTo(pipe.RawStream); // create the asset entry var entryNode = CreateEntryNode(context, folder.Node, filename, contentResourceService.GetFirstRelativePath(context, resourcePath), inputStream.Length); // create the entry return AssetEntry.Create(context, folder, entryNode); }
/// <summary> /// Creates an <see cref="AssetFolder"/> with <paramref name="folderName"/> under <paramref name="parentFolder"/>. /// </summary> /// <param name="context">The <see cref="IMansionContext"/>.</param> /// <param name="parentFolder">The <see cref="AssetFolder"/>.</param> /// <param name="folderName">The name of the folder.</param> /// <returns>Returns the created <see cref="AssetFolder"/>.</returns> public AssetFolder CreateFolder(IMansionContext context, AssetFolder parentFolder, string folderName) { // validate arguments if (context == null) throw new ArgumentNullException("context"); if (parentFolder == null) throw new ArgumentNullException("parentFolder"); if (string.IsNullOrEmpty(folderName)) throw new ArgumentNullException("folderName"); // sanitise the folder name folderName = SanitiseFolderName(folderName); if (string.IsNullOrEmpty(folderName)) throw new ArgumentNullException("folderName"); // create the folder node var folderNode = CreateFolderNode(context, parentFolder.Node, folderName); // create the folder return AssetFolder.Create(context, parentFolder.AssetType, folderNode); }