private void onIsSelectedChanged(object sender, EventArgs e) { FileTreeItem item = (FileTreeItem)sender; bool isCurrentSelected = item.IsSelected ?? false; if (sender is FolderData) { //update all inner state foreach (var folder in new FolderDataEnumerable((FolderData)sender) .Reverse()) { foreach (var file in folder.Files) { file.SetIsSelected(isCurrentSelected); } folder.UpdateFolderState(isCurrentSelected); } } //update all upper folder state foreach (var folder in new UpperFolderEnumerable(item)) { folder.UpdateFolderState(isCurrentSelected); } }
/// <summary> /// Binds the form. /// </summary> private void BindForm() { bool pageExists = false; if (PageId > 0) { using (IDataReader reader = FileTreeItem.GetItemById(PageId)) { if (reader.Read()) { pageExists = true; Name.Text = reader["Name"].ToString(); } reader.Close(); } } if (!pageExists) { // update UI for creating a new folder BindParentFolderList(); ParentFolderRow.Visible = true; } BindRoles(); }
public void GetChildrenShouldReturnListOfChildren() { _fileTree.Add(GetFile(new String[] { "one", "two", "three.cs" })); _fileTree.Add(GetFile(new String[] { "one", "two", "four.cs" })); StringBuilder path = new StringBuilder(); path.Append(Path.DirectorySeparatorChar); FileTreeItem root = new FileTreeItem(null, path.ToString()); path.Append("one" + Path.DirectorySeparatorChar); FileTreeItem one = new FileTreeItem(root, path.ToString()); path.Append("two" + Path.DirectorySeparatorChar); FileTreeItem two = new FileTreeItem(one, path.ToString()); FileTreeItem three = new FileTreeItem(two, path.ToString() + "three.cs"); FileTreeItem four = new FileTreeItem(two, path.ToString() + "four.cs"); IList <FileTreeItem> expected = new List <FileTreeItem>(); expected.Add(three); expected.Add(four); IList <FileTreeItem> actual = new List <FileTreeItem>(_fileTree.GetChildrenOf(two)); CollectionAssert.AreEquivalent(expected, actual); }
/// <summary> /// Processes the move command. /// </summary> /// <param name="args">The args.</param> void ProcessMoveCommand(Dictionary <string, object> args) { int folderId = 0; string folderString = args["folder"] as string; if (String.IsNullOrEmpty(folderString) || !Int32.TryParse(folderString, out folderId)) { return; } string[] items = MyListView.CurrentListView.GetCheckedCollection(); if (items != null) { for (int i = 0; i < items.Length; i++) { string[] keys = EcfListView.GetPrimaryKeyIdStringItems(items[i]); if (keys != null) { int id = Int32.Parse(keys[0]); FileTreeItem.MoveTo(id, folderId); } } } }
/// <summary> /// Loads the data and data bind. /// </summary> private void LoadDataAndDataBind() { DataTable files = FileTreeItem.LoadItemByFolderIdDT(FolderId); DataColumn column = new DataColumn("CheckboxEnabled", typeof(System.Boolean)); files.Columns.Add(column); files.Columns.Add(new DataColumn("ImageUrl", typeof(string))); using (IDataReader reader = FileTreeItem.LoadParent(FolderId)) { if (reader.Read()) { DataRow row = files.NewRow(); row["CheckboxEnabled"] = false; row["PageId"] = (int)reader["PageId"]; row["Name"] = "[..]"; row["IsDefault"] = false; row["IsPublic"] = true; row["IsFolder"] = true; row["Order"] = -1000000; row["SiteId"] = SiteId; row["ImageUrl"] = Page.ResolveUrl("~/Apps/Content/images/Up One Level.png"); files.Rows.InsertAt(row, 0); } reader.Close(); } DataView view = new DataView(files); view.Sort = "IsFolder DESC, Order"; MyListView.CurrentListView.PrimaryKeyId = EcfListView.MakePrimaryKeyIdString("PageId", "SiteId", "IsFolder"); MyListView.DataSource = view; DataBind(); }
/// <summary> /// Updates an existing page. /// </summary> /// <param name="reader"></param> private void EditPage(IDataReader reader) { string fileName = MakePageName(Name.Text); bool fileIsDefault = false; bool fileIsPublic = false; bool isFolder = (bool)reader["IsFolder"]; if (isFolder) { return; } fileIsDefault = IsDefault.IsSelected; // clear old default in current folder if (fileIsDefault) { string outline = ((string)reader[_OutlineKey]).Substring(0, ((string)reader[_OutlineKey]).LastIndexOf('/') + 1); using (IDataReader reader2 = FileTreeItem.GetItemByOutline(outline, SiteId)) { while (reader2.Read()) { FileTreeItem.UpdateFileItem((int)reader2[_PageIdKey], (string)reader2["Name"], (bool)reader2["IsPublic"], (bool)reader["IsFolder"], false, (string)reader2[reader2.FieldCount - 1] /*MasterPage*/, SiteId); } reader2.Close(); } } // update page attributes FileTreeItem.UpdateFileItem(PageId, fileName, fileIsPublic, false, fileIsDefault, MasterPageText.Text, SiteId); PageAttributes.Update(PageId, txtTitle.Text, txtKeywords.Text, txtDescription.Text); }
/// <summary> /// Binds the roles. /// </summary> private void BindRoles() { RolesList.DataSource = Roles.GetAllRoles(); RolesList.DataBind(); foreach (ListItem item in RolesList.Items) { using (IDataReader reader = FileTreeItem.PageAccessGetByRoleIdPageId(item.Value, PageId)) { if (reader.Read()) { item.Selected = true; } else { item.Selected = false; } reader.Close(); } } // select Everyone role in case it is a new folder if (PageId <= 0) { ListItem everyoneItem = RolesList.Items.FindByValue(AppRoles.EveryoneRole); if (everyoneItem != null) { everyoneItem.Selected = true; } } }
/// <summary> /// Updates an existing folder. /// </summary> /// <param name="reader"></param> private void EditFolder(IDataReader reader) { FileTreeItem.UpdateFileItem(PageId, Name.Text, false, true, false, String.Empty, SiteId); // update folder access foreach (ListItem item in RolesList.Items) { if (item.Selected) { using (IDataReader reader1 = FileTreeItem.PageAccessGetByRoleIdPageId(item.Value, PageId)) { if (!reader1.Read()) { FileTreeItem.AddPageAccess(item.Value, PageId); } reader1.Close(); } } else { using (IDataReader reader2 = FileTreeItem.PageAccessGetByRoleIdPageId(item.Value, PageId)) { if (reader2.Read()) { FileTreeItem.DeletePageAccess((int)reader2["PageAccessId"]); } reader2.Close(); } } } }
public UpperFolderEnumerable(FileTreeItem source) { if (source == null) { throw new ArgumentNullException("source"); } this.source = source; }
/// <summary> /// Binds the parent folder list. /// </summary> protected void BindParentFolderList() { this.Root.DataSource = FileTreeItem.LoadAllFoldersDT(SiteId); this.Root.DataTextField = _OutlineKey; this.Root.DataValueField = _PageIdKey; this.Root.DataBind(); if (FolderId != -1) { this.Root.SelectedValue = FolderId.ToString(); } }
private void FillNode(FileTree treeToAddFrom, FileTreeItem parent, TreeNode nodeToAddTo) { foreach (FileTreeItem aChild in treeToAddFrom.GetChildrenOf(parent)) { TreeNode childNode = new TreeNode(aChild.GetItemName()); if (treeToAddFrom.GetChildrenOf(aChild).Count() != 0) { FillNode(treeToAddFrom, aChild, childNode); } nodeToAddTo.Nodes.Add(childNode); } }
/// <summary> /// Binds the form. /// </summary> private void BindForm() { bool pageExists = false; if (PageId > 0) { using (IDataReader reader = FileTreeItem.GetItemById(PageId)) { if (reader.Read()) { pageExists = true; Name.Text = reader["Name"].ToString(); IsDefault.IsSelected = (bool)reader["IsDefault"]; MasterPageText.Text = (reader["MasterPage"] != DBNull.Value) && (reader["MasterPage"] != null) ? (string)reader["MasterPage"] : String.Empty; } reader.Close(); } // Load meta attributes using (IDataReader reader = PageAttributes.GetByPageId(PageId)) { if (reader.Read()) { txtTitle.Text = (string)reader["Title"]; txtKeywords.Text = (string)reader["MetaKeys"]; txtDescription.Text = (string)reader["MetaDescriptions"]; } else { // add default site attributes PageAttributes.Add(PageId, GlobalVariable.GetVariable(_GlobalVariableTitleKey, SiteId), GlobalVariable.GetVariable(_GlobalVariableMetaKeywordsKey, SiteId), GlobalVariable.GetVariable(_GlobalVariableMetaDescriptionKey, SiteId)); txtTitle.Text = GlobalVariable.GetVariable(_GlobalVariableTitleKey, SiteId); txtKeywords.Text = GlobalVariable.GetVariable(_GlobalVariableMetaKeywordsKey, SiteId); txtDescription.Text = GlobalVariable.GetVariable(_GlobalVariableMetaDescriptionKey, SiteId); } reader.Close(); } } if (!pageExists) { // update UI for creating a new page BindParentFolderList(); ParentFolderRow.Visible = true; } // since mater page is not used anywhere for now, hide it alway MasterPageRow.Visible = false; }
/// <summary> /// Gets the page URL. /// </summary> /// <param name="VersionId">The version id.</param> /// <returns></returns> protected string GetPageUrl(int VersionId) { string path = String.Empty; using (IDataReader reader = FileTreeItem.GetItemById(PageId)) { if (reader.Read()) { path = "~" + (string)reader["Outline"]; } reader.Close(); } path += "?VersionId=" + VersionId.ToString(); return(path.Trim()); }
/// <summary> /// Processes the delete command. /// </summary> /// <param name="items">The items.</param> void ProcessDeleteCommand(string[] items) { for (int i = 0; i < items.Length; i++) { string[] keys = EcfListView.GetPrimaryKeyIdStringItems(items[i]); if (keys != null) { string id = keys[0]; // delete selected sites Guid siteId = new Guid(id); using (TransactionScope scope = new TransactionScope()) { SiteDto dto = CMSContext.Current.GetSiteDto(siteId, true); if (dto.Site.Rows.Count > 0) { // delete menus MenuDto menuDto = MenuManager.GetMenuDto(siteId); if (menuDto.Menu.Rows.Count > 0) { foreach (MenuDto.MenuRow menuRow in menuDto.Menu.Rows) { menuRow.Delete(); } } if (menuDto.HasChanges()) { MenuManager.SaveMenuDto(menuDto); } // delete folders and pages int rootId = FileTreeItem.GetRoot(siteId); FileTreeItem.DeleteFileItem(rootId); //delete site dto.Site[0].Delete(); CMSContext.Current.SaveSite(dto); } scope.Complete(); } } } }
public void ContentSystem_ImportExportSite() { Guid[] siteIDs; Guid applicationId = AppContext.Current.ApplicationId; ImportExportHelper importExportHelper = new ImportExportHelper(); //import data using (FileStream stream = File.Open("SiteExport-B2C.xml", FileMode.Open)) { siteIDs = importExportHelper.ImportSite(stream, applicationId, Guid.Empty, false); } Guid siteId = siteIDs[0]; FileStream fs = new FileStream("Content_SiteExport.xml", FileMode.Create, FileAccess.ReadWrite); importExportHelper.ExportSite(siteId, fs); SiteDto siteDto = CMSContext.Current.GetSiteDto(siteId); // delete menus MenuDto menuDto = MenuManager.GetMenuDto(siteId); if (menuDto.Menu.Rows.Count > 0) { foreach (MenuDto.MenuRow menuRow in menuDto.Menu.Rows) { menuRow.Delete(); } } if (menuDto.HasChanges()) { MenuManager.SaveMenuDto(menuDto); } // delete folders and pages int rootId = FileTreeItem.GetRoot(siteId); FileTreeItem.DeleteFileItem(rootId); //delete site siteDto.Site[0].Delete(); CMSContext.Current.SaveSite(siteDto); }
/// <summary> /// Creates a new page. /// </summary> private void CreatePage() { int newId = 0; string newPageName = MakePageName(Name.Text); //create new page string guid = Guid.NewGuid().ToString(); newId = FileTreeItem.AddFileItem(guid, true, false, false, MasterPageText.Text, SiteId); FileTreeItem.MoveTo(newId, int.Parse(Root.SelectedValue)); FileTreeItem.UpdateFileItem(newId, newPageName, true, true, false, MasterPageText.Text, SiteId); //append meta description and keywords PageAttributes.Add(newId, String.IsNullOrEmpty(txtTitle.Text) ? GlobalVariable.GetVariable(_GlobalVariableTitleKey, SiteId) : txtTitle.Text, String.IsNullOrEmpty(txtKeywords.Text) ? GlobalVariable.GetVariable(_GlobalVariableMetaKeywordsKey, SiteId) : txtKeywords.Text, String.IsNullOrEmpty(txtDescription.Text) ? GlobalVariable.GetVariable(_GlobalVariableMetaDescriptionKey, SiteId) : txtDescription.Text); }
/// <summary> /// Binds the folders. /// </summary> private void BindFolders() { List <JsonTreeNode> nodes = new List <JsonTreeNode>(); using (IDataReader reader = FileTreeItem.GetItemById(FileTreeItem.GetRoot(SiteId))) { if (reader.Read()) { string nodeId = MakeNodeId("folder-" + reader["PageId"].ToString()); JsonTreeNode node = JsonTreeNode.CreateNode(nodeId, reader["PageId"].ToString(), "/", "Content", "Folder-List", String.Format("folderid={0}&siteid={1}", reader["PageId"].ToString(), SiteId.ToString()), TreeListType.Folders.ToString()); nodes.Add(node); BindFolders(node, (int)reader["PageId"]); } reader.Close(); } WriteArray(nodes); }
/// <summary> /// Creates a new folder. /// </summary> private void CreateFolder() { //create temporary folder with unique name string guid = Guid.NewGuid().ToString(); int newId = FileTreeItem.AddFileItem(guid, true, true, false, String.Empty, SiteId); FileTreeItem.MoveTo(newId, Int32.Parse(Root.SelectedValue)); FileTreeItem.UpdateFileItem(newId, Name.Text, true, true, false, String.Empty, SiteId); // update folder access foreach (ListItem item in RolesList.Items) { if (item.Selected) { FileTreeItem.AddPageAccess(item.Value, newId); } } }
/// <summary> /// Binds the folders. /// </summary> private void BindFolders() { //get all folders DataTable folders = FileTreeItem.LoadAllFoldersDT(SiteId); Hashtable avalibleFolders = new Hashtable(); foreach (DataRow folder in folders.Rows) { if ((int)folder["PageId"] != FolderId) { avalibleFolders.Add(folder["PageId"], folder["Outline"]); } } //avalibleFolders.Add("", "[select folder]"); ddlFolders.DataSource = avalibleFolders; ddlFolders.DataTextField = "Value"; ddlFolders.DataValueField = "Key"; }
/// <summary> /// Processes the delete command. /// </summary> /// <param name="items">The items.</param> void ProcessDeleteCommand(string[] items) { if (!ProfileContext.Current.CheckPermission("content:site:nav:mng:delete")) { throw new UnauthorizedAccessException("Current user does not have enough rights to access the requested operation."); } for (int i = 0; i < items.Length; i++) { string[] keys = EcfListView.GetPrimaryKeyIdStringItems(items[i]); if (keys != null) { int folderId = Int32.Parse(keys[0]); // delete selected sites FileTreeItem.DeleteFileItem(folderId); } } }
/// <summary> /// Checks if entered name unique. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="System.Web.UI.WebControls.ServerValidateEventArgs"/> instance containing the event data.</param> public void NameCheck(object sender, ServerValidateEventArgs args) { bool pageExists = false; int idToCheck = 0; if (PageId > 0) { using (IDataReader reader = FileTreeItem.GetItemById(PageId)) { if (reader.Read()) { pageExists = true; // get parent id using (IDataReader parentReader = FileTreeItem.LoadParent(PageId)) { if (parentReader.Read()) { idToCheck = (int)parentReader[_PageIdKey]; } parentReader.Close(); } } reader.Close(); } } if (!pageExists) { idToCheck = Int32.Parse(Root.SelectedValue); } // check if page exists string newPageName = MakePageName(Name.Text); if (PageExists(idToCheck, newPageName)) { args.IsValid = false; return; } args.IsValid = true; }
/// <summary> /// Binds the tool bar. /// </summary> private void BindToolBar() { int folderId = 0; using (IDataReader reader = FileTreeItem.LoadParent(CMSContext.Current.PageId)) { if (reader.Read()) { folderId = reader.GetInt32(0); } reader.Close(); } if (CanEdit) { Tabs.Tabs[1].Visible = true; } else { Tabs.Tabs[1].Visible = false; } if (CanAdmin) { string adminUrl = GlobalVariable.GetVariable("cm_url", CMSContext.Current.SiteId); if (!String.IsNullOrEmpty(adminUrl)) { string url = String.Format("{0}/default.aspx?_a=Content&_v=Folder-List&folderid={1}&siteid={2}", adminUrl, folderId.ToString(), CMSContext.Current.SiteId);//, //Membership.GetUser(Page.User.Identity.Name).ProviderUserKey.ToString()); Tabs.Tabs[2].NavigateUrl = url; } else { Tabs.Tabs[2].Visible = false; } } else { Tabs.Tabs[2].Visible = false; } }
/// <summary> /// Checks is folder with secified name exists. /// </summary> /// <param name="parentId">The parent id.</param> /// <param name="name">The name.</param> /// <returns></returns> private bool DirExists(int parentId, string name) { bool exists = false; string parentPath = string.Empty; Guid siteId = Guid.Empty; using (IDataReader reader = FileTreeItem.GetItemById(parentId)) { if (reader.Read()) { parentPath = (string)reader[_OutlineKey] == "/" ? "" : (string)reader[_OutlineKey]; siteId = (Guid)reader[_SiteIdKey]; } reader.Close(); } if (!parentPath.EndsWith("/")) { parentPath = parentPath + "/"; } string childPath = parentPath + name + "/"; using (IDataReader reader2 = FileTreeItem.GetItemByOutlineAll(childPath, siteId)) { if (reader2.Read()) { if (PageId != (int)reader2[_PageIdKey]) { exists = true; } } reader2.Close(); } return(exists); }
/// <summary> /// Binds the folders. /// </summary> /// <param name="root">The root.</param> /// <param name="folderId">The folder id.</param> private void BindFolders(JsonTreeNode root, int folderId) { using (IDataReader reader = FileTreeItem.LoadItemByFolderId(folderId)) { while (reader.Read()) { if ((bool)reader["IsFolder"]) { string nodeId = MakeNodeId("folder-" + reader["PageId"].ToString()); JsonTreeNode node = JsonTreeNode.CreateNode(nodeId, reader["PageId"].ToString(), (string)reader["Name"], "Content", "Folder-List", String.Format("folderid={0}&siteid={1}", reader["PageId"].ToString(), SiteId.ToString()), TreeListType.Folders.ToString()); if (root.children == null) { root.children = new List <JsonTreeNode>(); } root.children.Add(node); BindFolders(node, (int)reader["PageId"]); } } reader.Close(); } }
/// <summary> /// Fills the context. /// </summary> /// <param name="absolutePath">The absolute path.</param> private void FillContext(string absolutePath) { CMSContext.Current.Outline = CMSContext.Current.GetQueryString(absolutePath); CMSContext.Current.Outline = Regex.Match(CMSContext.Current.Outline, "/[\\w]+(?<outline>.*)").Groups["outline"].Value; //GET PAGEID using (IDataReader reader = FileTreeItem.GetItemByOutlineAll(CMSContext.Current.Outline, CMSContext.Current.SiteId)) { if (reader.Read()) { CMSContext.Current.PageId = (int)reader["PageId"]; } reader.Close(); } //SHOW REQUESTED VERSION if (CMSContext.Current.QueryString["VersionId"] != null) { CMSContext.Current.VersionId = int.Parse(CMSContext.Current.QueryString["VersionId"].ToString()); } //SHOW PUBLISHED VERSION else { //GET PUBLISHED VERSION int statusId = WorkflowStatus.GetLast(-1); using (IDataReader reader = PageVersion.GetByLangIdAndStatusId(CMSContext.Current.PageId, LanguageId, statusId)) { if (reader.Read()) { CMSContext.Current.VersionId = (int)reader["VersionId"]; } reader.Close(); } } }
/// <summary> /// Saves the changes. /// </summary> /// <param name="context">The context.</param> public void SaveChanges(IDictionary context) { bool pageExists = false; if (PageId > 0) { using (IDataReader reader = FileTreeItem.GetItemById(PageId)) { if (reader.Read()) { // edit folder pageExists = true; EditFolder(reader); } reader.Close(); } } if (!pageExists) { CreateFolder(); } }
void SelectItem(object obj) { SelectedItem = obj as FileTreeItem; }
/// <summary> /// Populates the languages recursive. /// </summary> /// <param name="folderId">The folder id.</param> private void PopulateLanguagesRecursive(int folderId) { Guid siteId = Guid.Empty; DataTable item = FileTreeItem.GetItemByIdDT(folderId); // We only care about pages if (item != null && item.Rows.Count > 0) { if ((bool)item.Rows[0]["IsFolder"]) { DataTable childItems = FileTreeItem.LoadItemByFolderIdDT(folderId); foreach (DataRow childItem in childItems.Rows) { PopulateLanguagesRecursive((int)childItem["PageId"]); } } } siteId = (Guid)item.Rows[0]["SiteId"]; PageDocument pageDocument = null; //GET PUBLISHED VERSION int statusId = WorkflowStatus.GetLast(); DataTable versionsTable = PageVersion.GetVersionByStatusIdDT(folderId, statusId); // Find page document int templateId = 0; int stateId = 0; int langId = 0; if (versionsTable != null && versionsTable.Rows.Count > 0) { foreach (DataRow versionRow in versionsTable.Rows) { int versionId = 0; int.TryParse(versionRow["VersionId"].ToString(), out versionId); templateId = Int32.Parse(versionRow["templateid"].ToString()); PageDocument.PersistentDocumentStorage = new SqlPageDocumentStorageProvider(); pageDocument = PageDocument.Open(versionId, OpenMode.View, Guid.Empty); stateId = Int32.Parse(versionRow["stateid"].ToString()); langId = Int32.Parse(versionRow["LangId"].ToString()); // Found a non empty page document if (pageDocument != null) { break; } } } // Get list of languages SiteDto siteDto = SiteManager.GetSite(siteId); foreach (SiteDto.SiteLanguageRow langRow in siteDto.SiteLanguage) { IDataReader reader = Language.GetLangByName(langRow.LanguageCode); if (reader.Read()) { int currentLangId = (int)reader["LangId"]; // We skip the default page document language if (currentLangId == langId) { reader.Close(); continue; } // If we already have a specified language define, skip it IDataReader versionReader = PageVersion.GetVersionByLangId(folderId, langId); if (!versionReader.Read()) { versionReader.Close(); continue; } int versionId = PageVersion.AddPageVersion(folderId, templateId, currentLangId, ProfileContext.Current.UserId, stateId, String.Empty); PageDocument.PersistentDocumentStorage = new SqlPageDocumentStorageProvider(); PageDocument.PersistentDocumentStorage.Save(pageDocument, versionId, ProfileContext.Current.UserId); versionReader.Close(); } reader.Close(); } }
public void EqualFileTreeItemsShouldBeEqual() { FileTreeItem expected = new FileTreeItem(_item.Parent, _item.Location); Assert.AreEqual(expected, _item); }
public void SetUp() { String root = Path.DirectorySeparatorChar + "theroot" + Path.DirectorySeparatorChar; _item = new FileTreeItem(new FileTreeItem(null, root), root + "thefile.cs"); }