コード例 #1
0
        /// <summary>
        /// TODO: ADD SUMMARY.
        /// </summary>
        /// <param name="doc"></param>
        /// <returns></returns>
        public static ICollection<PrivateMessageFolderMetadata> ParseFolderList(HtmlDocument doc)
        {
            List<PrivateMessageFolderMetadata> folders = new List<PrivateMessageFolderMetadata>();
            // get select option nodes
            var top = doc.DocumentNode;
            var selectNode = top.Descendants("select")
                .Where(node => node.GetAttributeValue("name", string.Empty).Equals("folderid"))
                .FirstOrDefault();

            if (selectNode != null)
            {
                var optionNodes = selectNode.Descendants("option");
                foreach (var option in optionNodes)
                {
                    try
                    {
                        PrivateMessageFolderMetadata folder = new PrivateMessageFolderMetadata();
                        folder.Messages = new List<PrivateMessageMetadata>();
                        string name = option.NextSibling.InnerText.Trim();
                        string value = option.GetAttributeValue("value", string.Empty);
                        folder.FolderId = value;
                        folder.Name = name;
                        folders.Add(folder);
                    }
                    catch (Exception) { }
                }
            }
            return folders;
        }
コード例 #2
0
        public void Refresh()
        {
            if (this._metadata == null)
                throw new Exception("Cannot refresh with null metadata.");

            var refreshed = this._metadata.Refresh();
            Metadata = refreshed;
        }
コード例 #3
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="folder"></param>
        public void DeleteFolder(PrivateMessageFolderMetadata folder)
        {
            // folder index = folder id + 1
            int index = -1;
            int.TryParse(folder.FolderId, out index);
            index = index + 1;

            // set folder field to empty
            this.FolderTable[index] = string.Empty;
        }
コード例 #4
0
        private void SetProperties(PrivateMessageFolderMetadata value)
        {
            if (!string.IsNullOrEmpty(value.Name))
                Title = value.Name;

            if (!value.Messages.IsNullOrEmpty())
                this._messages = value.Messages
                    .Select(message => new PrivateMessageDataSource() { Metadata = message })
                    .ToList();
        }
コード例 #5
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="newFolderName"></param>
        public void RenameFolder(PrivateMessageFolderMetadata folder, string newFolderName)
        {
            // folder index = folder id + 1
            int index = -1;
            int.TryParse(folder.FolderId, out index);
            index = index + 1;

            // rename field
            this.FolderTable[index] = newFolderName;
        }
コード例 #6
0
        public void Refresh()
        {
            if (this._metadata == null)
            {
                throw new Exception("Cannot refresh with null metadata.");
            }

            var refreshed = this._metadata.Refresh();

            Metadata = refreshed;
        }
コード例 #7
0
        public override PrivateMessageFolderMetadata LoadFolder(string folderId)
        {
            int id = -1;
            PrivateMessageFolderMetadata folder = null;

            if (int.TryParse(folderId, out id))
            {
                folder = PrivateMessageService.Service.FetchFolder(id);
            }

            return(folder);
        }
コード例 #8
0
        private void SetProperties(PrivateMessageFolderMetadata value)
        {
            if (!string.IsNullOrEmpty(value.Name))
            {
                Title = value.Name;
            }

            if (!value.Messages.IsNullOrEmpty())
            {
                this._messages = value.Messages
                                 .Select(message => new PrivateMessageDataSource()
                {
                    Metadata = message
                })
                                 .ToList();
            }
        }
コード例 #9
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="htmlDocument"></param>
        /// <returns></returns>
        public static PrivateMessageFolderMetadata ParsePrivateMessageFolder(HtmlDocument htmlDocument)
        {
            PrivateMessageFolderMetadata folder = null;
            var top = htmlDocument.DocumentNode;
            var currentFolderNode = top.Descendants("div")
                .Where(node => node.GetAttributeValue("class", string.Empty).Equals("breadcrumbs"))
                .FirstOrDefault();

            if (currentFolderNode != null)
            {
                
                // *************************************************************
                // THIS IS CURRENTLY BROKEN ON SA -- THE TITLE OF THE FOLDER IS *NOT* WHAT'S DISPLAYED ON THE BREADCRUMBS //
                string name = currentFolderNode.ParseTitleFromBreadcrumbsNode();
                // *************************************************************
                var idString = GetInputValue(top.Descendants("input").ToArray(), "thisfolder");
                
                folder = new PrivateMessageFolderMetadata() { FolderId = idString };

                var messages = ParseMessageList(htmlDocument);
                folder.Messages = messages;

                foreach (var message in messages)
                {
                    message.FolderId = folder.FolderId;   
                }
            }

            return folder;
        }