/// <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);
		}
Exemplo n.º 2
0
		/// <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);
		}
Exemplo n.º 3
0
		/// <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)
			       };
		}
Exemplo n.º 4
0
		/// <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));
		}
Exemplo n.º 5
0
		/// <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);
		}
Exemplo n.º 6
0
		/// <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);
		}