Example #1
0
    /// <summary>
    /// Binds the data.
    /// </summary>
    private void BindData()
    {
        if (DataSource == null)
        {
            this.Visible = false;
            return;
        }

        List <ItemAsset> assets = new List <ItemAsset>();

        if (!String.IsNullOrEmpty(GroupName))
        {
            foreach (ItemAsset asset in DataSource)
            {
                if (asset.GroupName.Equals(GroupName))
                {
                    assets.Add(asset);
                }
            }
        }
        else
        {
            foreach (ItemAsset asset in DataSource)
            {
                assets.Add(asset);
            }
        }

        this.Visible = true;

        List <FolderElement> elements = new List <FolderElement>();

        foreach (ItemAsset asset in assets)
        {
            if (asset.AssetType.Equals("file"))
            {
                FolderElement[] myElements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("FolderElementId", FilterElementType.Equal, asset.AssetKey) });
                if (myElements.Length > 0)
                {
                    elements.Add(myElements[0]);
                }
            }
            else
            {
                FolderElement[] myElements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("ParentId", FilterElementType.Equal, asset.AssetKey) });
                if (myElements.Length > 0)
                {
                    foreach (FolderElement myElement in myElements)
                    {
                        elements.Add(myElement);
                    }
                }
            }
        }

        AltList.DataSource = elements;
        AltList.DataBind();
    }
        /// <summary>
        /// Deletes the entry recursive.
        /// </summary>
        /// <param name="node">The node.</param>
        private void DeleteEntryRecursive(Mediachase.Ibn.Data.Services.TreeNode node)
        {
            if (TreeManager.GetAllChildNodeCount(node) > 0)
            {
                foreach (Mediachase.Ibn.Data.Services.TreeNode childNode in TreeManager.GetAllChildNodes(node))
                {
                    DeleteEntryRecursive(childNode);
                }
            }

            int folderId = node.ObjectId;

            FolderElement[] elements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("ParentId", FilterElementType.Equal, folderId) });
            foreach (FolderElement element in elements)
            {
                element.Delete();
            }
        }
Example #3
0
        /// <summary>
        /// Binds the form.
        /// </summary>
        private void BindForm()
        {
            GridHelper.BindGrid(AssetsDefaultGrid, "Catalog", "Assets-List");

            DataTable table = new DataTable();

            table.Columns.Add(new DataColumn("ID", typeof(int)));
            table.Columns.Add(new DataColumn("AssetType", typeof(string)));
            table.Columns.Add(new DataColumn("Name", typeof(string)));
            table.Columns.Add(new DataColumn("GroupName", typeof(string)));
            table.Columns.Add(new DataColumn("SortOrder", typeof(int)));

            foreach (DataRow row in _AssetTable.Rows)
            {
                DataRow newRow = table.NewRow();

                newRow["ID"]        = row["AssetKey"];
                newRow["AssetType"] = row["AssetType"];
                if (row["AssetType"].Equals("folder"))
                {
                    Folder[] folders = Folder.List <Folder>(Folder.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("FolderId", FilterElementType.Equal, row["AssetKey"]) });
                    if (folders != null && folders.Length > 0)
                    {
                        newRow["Name"] = BuildFullPath(folders[0]) + folders[0].Name;
                    }
                }
                else
                {
                    FolderElement[] elements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("FolderElementId", FilterElementType.Equal, row["AssetKey"]) });
                    if (elements != null && elements.Length > 0)
                    {
                        newRow["Name"] = BuildFullPath(elements[0]) + elements[0].Name;
                    }
                }
                newRow["GroupName"] = row["GroupName"];
                newRow["SortOrder"] = row["SortOrder"];

                table.Rows.Add(newRow);
            }

            AssetsDefaultGrid.DataSource = table;

            AssetsDefaultGrid.DataBind();
        }
Example #4
0
    /// <summary>
    /// Binds the data.
    /// </summary>
    private void BindData()
    {
        Entry entry = CatalogContext.Current.GetCatalogEntry(EntryCode, new CatalogEntryResponseGroup(CatalogEntryResponseGroup.ResponseGroup.CatalogEntryFull));

        if (entry == null || entry.Assets == null)
        {
            this.Visible = false;
            return;
        }

        List <ItemAsset> assets = new List <ItemAsset>();

        if (!String.IsNullOrEmpty(GroupName))
        {
            foreach (ItemAsset asset in entry.Assets)
            {
                if (asset.GroupName.Equals(GroupName))
                {
                    assets.Add(asset);
                }
            }
        }
        else
        {
            foreach (ItemAsset asset in entry.Assets)
            {
                assets.Add(asset);
            }
        }

        this.Visible = true;


        List <FolderElement> elements = new List <FolderElement>();

        foreach (ItemAsset asset in assets)
        {
            if (asset.AssetType.Equals("file"))
            {
                FolderElement[] myElements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("FolderElementId", FilterElementType.Equal, asset.AssetKey) });
                if (myElements.Length > 0)
                {
                    elements.Add(myElements[0]);
                }
            }
            else
            {
                FolderElement[] myElements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("ParentId", FilterElementType.Equal, asset.AssetKey) });
                if (myElements.Length > 0)
                {
                    foreach (FolderElement myElement in myElements)
                    {
                        elements.Add(myElement);
                    }
                }
            }
        }

        List <ImageNode> images = new List <ImageNode>();

        // Get Images
        foreach (Image image in entry.ItemAttributes.Images.Image)
        {
            ImageNode node = new ImageNode();
            node.Title = entry.ItemAttributes["DisplayName"].ToString();
            //node.Url = String.Format("javascript:window.open('{0}', '1', 'height=200,width=400,status=yes,toolbar=no,menubar=no,location=no');", Page.ResolveUrl(String.Format("FlashGallery.aspx?code={0}", this.EntryCode)));
            node.Url         = String.Format("{0}", Page.ResolveUrl(String.Format("FlashGallery.aspx?code={0}", this.EntryCode)));
            node.ImageUrl    = Page.ResolveUrl(image.Url);
            node.Description = entry.ItemAttributes["Description"].ToString();
            images.Add(node);
        }

        foreach (FolderElement element in elements)
        {
            ImageNode node = new ImageNode();
            node.Title       = element.Properties["Title"].Value != null ? element.Properties["Title"].Value.ToString() : element.Name;
            node.Url         = String.Format("{0}", Page.ResolveUrl(String.Format("FlashGallery.aspx?code={0}", this.EntryCode)));
            node.ImageUrl    = Page.ResolveUrl(String.Format("~{0}", element.GetUrl()));
            node.Description = element.Properties["Description"].Value != null ? element.Properties["Description"].Value.ToString() : String.Empty;
            images.Add(node);
        }

        // Write XML
        WriteXml(images);
    }
Example #5
0
        public void AssetLibrary_UnitTest_CreateNewAsset()
        {
            // Get root node first
            TreeNode[] treeNodes = TreeManager.GetRootNodes(Folder.GetAssignedMetaClass());

            if (treeNodes.Length == 0)
            {
                Assert.Fail("Asset library must have atleast one root node defined");
            }

            int rootNodeId = treeNodes[0].ObjectId;

            // Create new Folder
            Guid   folderName = Guid.NewGuid();
            Folder folder     = new Folder();

            folder.Name = folderName.ToString();
            folder.Save();
            TreeNode currenFolder = TreeManager.AppendNode(Folder.GetAssignedMetaClass(), rootNodeId, true, folder);

            // Read file
            FileStream    fileStream = File.Open("winter.jpg", FileMode.Open);
            FolderElement newFile    = FolderElement.Create(currenFolder.ObjectId, fileStream.Name, fileStream);

            // Now create a business object that will store meta data
            BusinessObject businessObject = MetaObjectActivator.CreateInstance <BusinessObject>("FolderElement", newFile.PrimaryKeyId.Value);

            // Now set business object fields
            businessObject.Properties["Description"].Value = "Some description goes here";

            // Save business object
            businessObject.Save();

            FolderElement[] myElements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("FolderElementId", FilterElementType.Equal, newFile.PrimaryKeyId.Value.ToString()) });
            Assert.IsTrue(myElements.Length > 0, "No File FolderElement found. File must have not been created");
            myElements[0].Delete();

            Folder[] myFolders = Folder.List <Folder>(Folder.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("FolderId", FilterElementType.Equal, currenFolder.ObjectId.ToString()) });
            Assert.IsTrue(myFolders.Length > 0, "No Folder found. Folder must have not been created");
            myFolders[0].Delete();

            /*
             * // Assign asset to an entry
             * CatalogEntryDto entryDto = CatalogContext.Current.GetCatalogEntryDto("samplecode", new CatalogEntryResponseGroup(CatalogEntryResponseGroup.ResponseGroup.Assets));
             *
             * if(entryDto.CatalogEntry.Count == 0)
             *  Assert.Fail("specified entry could not be located");
             *
             * // Associate file with an entry
             * CatalogEntryDto.CatalogItemAssetRow row = entryDto.CatalogItemAsset.NewCatalogItemAssetRow();
             * row.AssetType = "file"; // specify "folder", if type is folder
             * row.AssetKey = newFile.PrimaryKeyId.ToString();
             * row.CatalogEntryId = entryDto.CatalogEntry[0].CatalogEntryId; // specify CatalogNodeId if associated with a category
             * row.GroupName = "images";
             * row.SortOrder = 0;
             *
             * entryDto.CatalogEntry.Rows.Add(row);
             *
             * // Save the new data
             * CatalogContext.Current.SaveCatalogEntry(entryDto);
             * */
        }
Example #6
0
    /// <summary>
    /// Binds the data.
    /// </summary>
    private void BindData()
    {
        if (DataSource == null)
        {
            this.Visible = false;
            return;
        }

        List <ItemAsset> assets = new List <ItemAsset>();

        if (!String.IsNullOrEmpty(GroupName))
        {
            foreach (ItemAsset asset in DataSource)
            {
                if (asset.GroupName.Equals(GroupName))
                {
                    assets.Add(asset);
                }
            }
        }
        else
        {
            foreach (ItemAsset asset in DataSource)
            {
                assets.Add(asset);
            }
        }

        this.Visible = true;

        List <FolderElement> elements = new List <FolderElement>();

        foreach (ItemAsset asset in assets)
        {
            if (asset.AssetType.Equals("file"))
            {
                FolderElement[] myElements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("FolderElementId", FilterElementType.Equal, asset.AssetKey) });
                if (myElements.Length > 0)
                {
                    elements.Add(myElements[0]);
                }
            }
            else
            {
                FolderElement[] myElements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("ParentId", FilterElementType.Equal, asset.AssetKey) });
                if (myElements.Length > 0)
                {
                    foreach (FolderElement myElement in myElements)
                    {
                        elements.Add(myElement);
                    }
                }
            }
        }

        DataTable table = new DataTable();

        table.Columns.Add(new DataColumn("ID", typeof(string)));
        table.Columns.Add(new DataColumn("Name", typeof(string)));
        table.Columns.Add(new DataColumn("Size", typeof(string)));
        table.Columns.Add(new DataColumn("Url", typeof(string)));
        table.Columns.Add(new DataColumn("Filename", typeof(string)));
        table.Columns.Add(new DataColumn("Icon", typeof(string)));
        table.Columns.Add(new DataColumn("Created", typeof(DateTime)));

        foreach (FolderElement element in elements)
        {
            DataRow newRow = table.NewRow();

            newRow["ID"]   = element.PrimaryKeyId.ToString();
            newRow["Name"] = element.Name;

            BlobStorageProvider prov = BlobStorage.Providers[element.BlobStorageProvider];
            BlobInfo            info = prov.GetInfo(new Guid(element.BlobUid.ToString()));

            newRow["FileName"] = info.FileName;
            newRow["Url"]      = String.Format("~{0}", element.GetUrl()); //DownloadFileUrlBuilder.GetUrl("iis", info);
            newRow["Icon"]     = CommonHelper.GetIcon(info.FileName);
            newRow["Created"]  = info.Created;
            newRow["Size"]     = CommerceHelper.ByteSizeToStr(info.ContentSize);

            table.Rows.Add(newRow);
        }

        DownloadsList.DataSource = table;
        DownloadsList.DataBind();
    }
Example #7
0
        /// <summary>
        /// Loads the items.
        /// </summary>
        /// <param name="iStartIndex">Start index of the i.</param>
        /// <param name="iNumItems">The i num items.</param>
        /// <param name="sFilter">The s filter.</param>
        private void LoadItems(int iStartIndex, int iNumItems, string sFilter)
        {
            // declare collections
            Folder[] folders = null;
            Mediachase.Ibn.Data.Services.TreeNode[] nodes = null;
            FolderElement[] elements        = null;
            string          path            = sFilter;
            int             totalItemsCount = 0;

            // Load all elements if filter is empty
            if (String.IsNullOrEmpty(sFilter))
            {
                int  folderCount  = Folder.GetTotalCount(Folder.GetAssignedMetaClass());
                int  elementCount = FolderElement.GetTotalCount(FolderElement.GetAssignedMetaClass());
                bool skipFolders  = false;
                if (elementCount + folderCount <= iStartIndex)
                {
                    iStartIndex = 0;
                    iNumItems   = 20;
                }
                else if (folderCount < iStartIndex)
                {
                    skipFolders = true;
                    iStartIndex = iStartIndex - folderCount;
                }

                if (!skipFolders)
                {
                    folders = Folder.List <Folder>(Folder.GetAssignedMetaClass(), new FilterElementCollection(), new SortingElementCollection(), iStartIndex, iNumItems);
                }

                elements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElementCollection(), new SortingElementCollection(), iStartIndex, iNumItems);

                totalItemsCount = elementCount + folderCount;
            }
            else
            {
                // Calculate outline here
                string   outline      = String.Empty;
                string[] outlineArray = sFilter.Split(new char[] { '/' });


                if (outlineArray.Length > 1)
                {
                    int index = 0;
                    while (index < outlineArray.Length - 1)
                    {
                        Folder[] outlineFolders = Folder.List <Folder>(Folder.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("Name", FilterElementType.Equal, outlineArray[index]) });
                        if (outlineFolders.Length > 0)
                        {
                            if (String.IsNullOrEmpty(outline))
                            {
                                outline = outlineFolders[0].PrimaryKeyId.ToString();
                            }
                            else
                            {
                                outline += "." + outlineFolders[0].PrimaryKeyId.ToString();
                            }
                        }
                        index++;
                    }
                }

                // Must be first element
                if (String.IsNullOrEmpty(outline))
                {
                    if (String.IsNullOrEmpty(sFilter))
                    {
                        nodes = TreeManager.GetRootNodes(Folder.GetAssignedMetaClass());
                    }
                    else
                    {
                        folders = Folder.List <Folder>(Folder.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("Name", FilterElementType.StartsWith, sFilter) });
                    }
                }
                else
                {
                    Mediachase.Ibn.Data.Services.TreeNode node = TreeManager.GetNodeByOulineNumber(Folder.GetAssignedMetaClass(), outline);
                    nodes = TreeManager.GetChildNodes(Folder.GetAssignedMetaClass(), node.ObjectId);
                }

                if (!String.IsNullOrEmpty(path))
                {
                    if (path.Contains("/"))
                    {
                        path = path.Substring(0, path.LastIndexOf('/'));
                    }

                    elements = FolderElement.GetElementsByPath(path);
                }
                else
                {
                    path = String.Empty;
                }

                // Do blank keyword search
                if (elements == null && !sFilter.Contains("/"))
                {
                    elements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("Name", FilterElementType.Contains, sFilter) });
                }

                if (elements == null)
                {
                    elements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("ParentId", FilterElementType.Equal, 0) });
                }


                // Count all returned items
                totalItemsCount = elements.Length;

                if (nodes != null)
                {
                    totalItemsCount += nodes.Length;
                }

                if (folders != null)
                {
                    totalItemsCount += folders.Length;
                }
            }

            AssetItemsFilter.Items.Clear();



            AddItems(folders);
            AddItems(nodes);
            AddItems(elements);

            int iEndIndex = Math.Min(iStartIndex + iNumItems, totalItemsCount);

            AssetItemsFilter.ItemCount = Math.Min(totalItemsCount, iEndIndex + AssetItemsFilter.DropDownPageSize);
        }
Example #8
0
        /// <summary>
        /// Gets the data source.
        /// </summary>
        /// <param name="totalRecords">The total records.</param>
        /// <returns></returns>
        private DataTable GetDataSource(out int totalRecords)
        {
            DataTable table         = new DataTable();
            int       grandParentId = -1;

            char[] delimiters = new char[] { '.' };

            table.Columns.Add(new DataColumn("ID", typeof(string)));
            table.Columns.Add(new DataColumn("Type", typeof(string)));
            table.Columns.Add(new DataColumn("OutlineNumber", typeof(string)));
            table.Columns.Add(new DataColumn("CheckboxEnabled", typeof(bool)));
            table.Columns.Add(new DataColumn("Name", typeof(string)));
            table.Columns.Add(new DataColumn("Filename", typeof(string)));
            table.Columns.Add(new DataColumn("Size", typeof(string)));
            table.Columns.Add(new DataColumn("Url", typeof(string)));
            table.Columns.Add(new DataColumn("Icon", typeof(string)));
            table.Columns.Add(new DataColumn("Created", typeof(DateTime)));
            table.Columns.Add(new DataColumn("GrandParentId", typeof(string)));

            Mediachase.Ibn.Data.Services.TreeNode[] nodes = TreeManager.GetChildNodes(Folder.GetAssignedMetaClass(), ParentId);
            FolderElement[] elements = FolderElement.List <FolderElement>(FolderElement.GetAssignedMetaClass(), new FilterElement[] { new FilterElement("ParentId", FilterElementType.Equal, ParentId) });

            int nodeIndex = 0;

            foreach (Mediachase.Ibn.Data.Services.TreeNode node in nodes)
            {
                //check to see if the grandParentId has been set yet
                if (grandParentId == -1)
                {
                    //get the ID for the folder above the current folder
                    string[] outlineArray = node.OutlineNumber.ToString().Split(delimiters);
                    if (node.OutlineLevel > 2)
                    {
                        int.TryParse(outlineArray[outlineArray.Length - 3].ToString(), out grandParentId);
                    }
                }

                //if (nodeIndex >= recordToDisplay)
                {
                    DataRow newRow = table.NewRow();
                    newRow["ID"]              = node.ObjectId.ToString();
                    newRow["OutlineNumber"]   = node.OutlineNumber;
                    newRow["Type"]            = "Folder";
                    newRow["CheckboxEnabled"] = true;
                    newRow["Name"]            = node.Title;
                    newRow["Icon"]            = String.Format("~/App_Themes/Default/images/icons/Node.gif");
                    newRow["FileName"]        = node.Title;
                    newRow["Url"]             = String.Empty;
                    newRow["Created"]         = (DateTime)node.InnerObject.Properties["Created"].Value;
                    table.Rows.Add(newRow);
                }
                nodeIndex++;
            }

            //check to see if folder outline level was available in folders and that the parent is not the root folder
            if (grandParentId < 0 && ParentId > 1)
            {
                //the grandparent folder id needs to be retrieved through other means
                BusinessObject _bindObject = MetaObjectActivator.CreateInstance <BusinessObject>("Folder", ParentId);
                if (_bindObject != null)
                {
                    //get the ID for the folder above the current folder
                    string[] outlineArray = _bindObject["OutlineNumber"].ToString().Split(delimiters);
                    if (outlineArray.Length > 1)
                    {
                        int.TryParse(outlineArray[outlineArray.Length - 2].ToString(), out grandParentId);
                    }
                }
            }

            //if this row is below the root level, show an up-level folder link.
            //now that all means have been exhausted, only add the up-level link if there is a valid value
            //for the grandParentId
            if (grandParentId >= 0)
            {
                //add a 'level up' row at the top
                // add additional row at the top. Don't add row if parent node is a Catalog
                DataRow row = table.NewRow();
                row["ID"]              = ParentId;
                row["GrandParentId"]   = grandParentId;
                row["CheckboxEnabled"] = false;
                row["Name"]            = "[..]";
                row["Type"]            = "LevelUp";
                table.Rows.InsertAt(row, 0);
            }


            foreach (FolderElement element in elements)
            {
                //if (nodeIndex >= recordToDisplay)
                {
                    DataRow newRow = table.NewRow();

                    newRow["ID"]              = element.PrimaryKeyId.ToString();
                    newRow["OutlineNumber"]   = String.Empty;
                    newRow["Type"]            = "Node";
                    newRow["CheckboxEnabled"] = true;
                    newRow["Name"]            = element.Name;


                    /*
                     * BlobStorageProvider prov = BlobStorage.Providers[element.BlobStorageProvider];
                     * BlobInfo info = prov.GetInfo(new Guid(element.BlobUid.ToString()));
                     * */

                    newRow["Url"] = String.Format("~{0}", element.GetUrl());

                    /*if (info != null)
                     * {
                     *  newRow["FileName"] = info.FileName;
                     *  newRow["Icon"] = CHelper.GetIcon(info.FileName);
                     *  newRow["Created"] = info.Created;
                     *  newRow["Size"] = CommerceHelper.ByteSizeToStr(info.ContentSize);
                     * }
                     * */
                    //else
                    {
                        newRow["FileName"] = element.Name;
                        newRow["Icon"]     = CHelper.GetIcon(element.Name);
                        newRow["Created"]  = element.Created;
                        newRow["Size"]     = CommerceHelper.ByteSizeToStr((element.ContentSize != null) ? (long)element.ContentSize : 0);
                    }

                    table.Rows.Add(newRow);
                }
                nodeIndex++;
            }

            // TODO: implement paging
            totalRecords = nodes.Length + elements.Length;
            return(table);
        }