/// <summary> /// Imports the module (IPortable interface) /// </summary> /// <param name="moduleID">The module ID.</param> /// <param name="content">The content.</param> /// <param name="version">The version.</param> /// <param name="userId">The user id.</param> public void ImportModule(int moduleID, string content, string version, int userId) { Version vers = new Version(version); if (vers > new Version("5.0.0")) { XElement xRoot = XElement.Parse(content); Dictionary<int, int> idTrans = new Dictionary<int, int>(); // First we import the categories List<CategoryInfo> lstCategories = new List<CategoryInfo>(); XElement xCategories = xRoot.Element("categories"); foreach (var xCategory in xCategories.Elements()) { // translate the parentid's to new values int oldParentId = Int32.Parse(xCategory.Element("categoryparentid").Value, CultureInfo.InvariantCulture); int newParentId = 0; if (oldParentId > 0 && idTrans.ContainsKey(oldParentId)) newParentId = idTrans[oldParentId]; // Fill category properties CategoryInfo category = new CategoryInfo(); category.ModuleId = moduleID; category.FaqCategoryParentId = newParentId; category.FaqCategoryName = xCategory.Element("categoryname").Value; category.FaqCategoryDescription = xCategory.Element("categorydescription").Value; category.ViewOrder = Int32.Parse(xCategory.Element("vieworder").Value, CultureInfo.InvariantCulture); // add category and save old and new id to translation dictionary int oldCategoryId = Int32.Parse(xCategory.Element("categoryid").Value, CultureInfo.InvariantCulture); int newCategoryId = AddCategory(category); idTrans.Add(oldCategoryId, newCategoryId); } // Next import the faqs List<FAQsInfo> lstFaqs = new List<FAQsInfo>(); XElement xFaqs = xRoot.Element("faqs"); foreach (var xFaq in xFaqs.Elements()) { // translate id with help of translation dictionary build before int oldCategoryId = Int32.Parse(xFaq.Element("categoryid").Value, CultureInfo.InvariantCulture); int newCategoryId = -1; if (idTrans.ContainsKey(oldCategoryId)) newCategoryId = idTrans[oldCategoryId]; // Fill FAQs properties FAQsInfo faq = new FAQsInfo(); faq.ModuleID = moduleID; faq.Question = xFaq.Element("question").Value; faq.Answer = xFaq.Element("answer").Value; faq.CategoryId = newCategoryId; faq.CreatedDate = DateTime.Parse(xFaq.Element("creationdate").Value); faq.DateModified = DateTime.Now; faq.FaqHide = Boolean.Parse(xFaq.Element("faqhide").Value); // These dates might be emtpy try { faq.PublishDate = DateTime.Parse(xFaq.Element("publishdate").Value); } catch (Exception) { faq.PublishDate = null; } try { faq.ExpireDate = DateTime.Parse(xFaq.Element("expiredate").Value); } catch (Exception) { faq.ExpireDate = null; } // Add Faq to database AddFAQ(faq); } } else { ArrayList catNames = new ArrayList(); ArrayList Question = new ArrayList(); XmlNode xmlFaq; XmlNode xmlFaqs = Globals.GetContent(content, "faqs"); //' check if category exists. if not create category foreach (XmlNode tempLoopVar_xmlFAQ in xmlFaqs) { xmlFaq = tempLoopVar_xmlFAQ; if ((xmlFaq["catname"].InnerText != Null.NullString) && (!catNames.Contains(xmlFaq["catname"].InnerText))) { catNames.Add(xmlFaq["catname"].InnerText); CategoryInfo objCat = new CategoryInfo(); objCat.ModuleId = moduleID; objCat.FaqCategoryName = xmlFaq["catname"].InnerText; objCat.FaqCategoryDescription = xmlFaq["catdescription"].InnerText; AddCategory(objCat); } } // check is question is empty. if empty is category. int loop = 0; foreach (XmlNode tempLoopVar_xmlFAQ in xmlFaqs) { loop++; xmlFaq = tempLoopVar_xmlFAQ; if (xmlFaq["question"].InnerText != Null.NullString && xmlFaq["question"].InnerText != string.Empty) { FAQsInfo objFAQs = new FAQsInfo(); objFAQs.ModuleID = moduleID; objFAQs.Question = xmlFaq["question"].InnerText; objFAQs.Answer = xmlFaq["answer"].InnerText; string faqCategoryName = xmlFaq["catname"].InnerText; // Check if creationdate exists in export, if nothing set current date. else import if (xmlFaq["creationdate"] == null) { objFAQs.CreatedDate = DateTime.Now; objFAQs.DateModified = DateTime.Now; } else { objFAQs.CreatedDate = DateTime.Parse(xmlFaq["creationdate"].InnerText); objFAQs.DateModified = DateTime.Parse(xmlFaq["datemodified"].InnerText); } if (xmlFaq["vieworder"] != null) { objFAQs.ViewOrder = int.Parse(xmlFaq["vieworder"].InnerText); } else { objFAQs.ViewOrder = loop; } objFAQs.CreatedByUser = userId.ToString(); bool foundCat = false; foreach (CategoryInfo objCat in ListCategories(moduleID, false)) { if (faqCategoryName == objCat.FaqCategoryName) { objFAQs.CategoryId = objCat.FaqCategoryId; foundCat = true; break; } } if (!foundCat) { objFAQs.CategoryId = null; } AddFAQ(objFAQs); } } } }
/// <summary> /// Adds the category. /// </summary> /// <param name="category">category info object to be inserted in the category table.</param> /// <returns>new category id</returns> public int AddCategory(CategoryInfo category) { using (IDataContext ctx = DataContext.Instance()) { var rep = ctx.GetRepository<CategoryInfo>(); if (category.FaqCategoryParentId == 0) category.FaqCategoryParentId = null; rep.Insert(category); return category.FaqCategoryId; } }
/// <summary> /// Updates a category. /// </summary> /// <param name="category">category info object to be inserted in the category table.</param> public void UpdateCategory(CategoryInfo category) { using (IDataContext ctx = DataContext.Instance()) { var rep = ctx.GetRepository<CategoryInfo>(); if (category.FaqCategoryParentId == 0) category.FaqCategoryParentId = null; rep.Update(category); } }
/// <summary> /// Handles the Click event of the cmdUpdate control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs" /> instance containing the event data.</param> protected void cmdUpdate_Click(Object sender, EventArgs e) { FAQsController faqsController = new FAQsController(); CategoryInfo categoryItem = new CategoryInfo(); PortalSecurity objSecurity = new PortalSecurity(); int parentCategoryId = Convert.ToInt32(drpParentCategory.SelectedValue); if (parentCategoryId < 0) parentCategoryId = 0; // We do not allow for script or markup categoryItem.FaqCategoryParentId = parentCategoryId; categoryItem.FaqCategoryName = objSecurity.InputFilter(txtCategoryName.Text, PortalSecurity.FilterFlag.NoMarkup | PortalSecurity.FilterFlag.NoScripting); categoryItem.FaqCategoryDescription = objSecurity.InputFilter(txtCategoryDescription.Text, PortalSecurity.FilterFlag.NoScripting | PortalSecurity.FilterFlag.NoMarkup); categoryItem.ModuleId = ModuleId; try { RadTreeNode node = treeCategories.SelectedNode; if (node != null) { categoryItem.FaqCategoryId = Convert.ToInt32(node.Value); CategoryInfo originalCategoryItem = faqsController.GetCategory(categoryItem.FaqCategoryId); categoryItem.ViewOrder = originalCategoryItem.ViewOrder; faqsController.UpdateCategory(categoryItem); } else { categoryItem.ViewOrder = 999; faqsController.AddCategory(categoryItem); } faqsController.ReorderCategory(categoryItem.FaqCategoryParentId, ModuleId); Response.Redirect(Request.RawUrl); } catch (Exception exc) //Module failed to load { Exceptions.ProcessModuleLoadException(this, exc); } }
/// <summary> /// Binds the categories. /// </summary> private void BindCategories() { //Show the categories ? if (ShowCategories) { // Do we have unassigned categories ? bool noCat = false; foreach (FAQsInfo faq in FaqData) { if (faq.CategoryId == null) { noCat = true; break; } } pnlShowCategories.Visible = true; //Build the Catagories List. FAQsController FAQsController = new FAQsController(); ArrayList categories = new ArrayList(); //Empty Category CategoryInfo emptyCategory = new CategoryInfo(); emptyCategory.FaqCategoryId = -1; emptyCategory.FaqCategoryName = Localization.GetString("EmptyCategory", LocalResourceFile); //All Categories CategoryInfo allCategories = new CategoryInfo(); allCategories.FaqCategoryId = -2; allCategories.FaqCategoryName = Localization.GetString("AllCategory", LocalResourceFile); IEnumerable<CategoryInfo> cats = FAQsController.ListCategoriesHierarchical(ModuleId, !ShowEmptyCategories); switch (ShowCategoryType) { case 0: if (noCat) categories.Add(emptyCategory); foreach (CategoryInfo cat in cats) { categories.Add(cat); } listCategories.DataSource = categories; listCategories.DataBind(); mvShowCategoryType.SetActiveView(vShowCategoryTypeList); pnlShowCategoryTypeDropdown.Visible = false; break; case 1: categories.Add(allCategories); if (noCat) categories.Add(emptyCategory); foreach (CategoryInfo cat in cats) { categories.Add(cat); } List<CategoryInfo> lst = new List<CategoryInfo>(); foreach (CategoryInfo cat in categories) { lst.Add(cat); } treeCategories.DataTextField = "FaqCategoryName"; treeCategories.DataFieldID = "FaqCategoryId"; treeCategories.DataFieldParentID = "FaqCategoryParentId"; treeCategories.DataSource = lst; treeCategories.DataBind(); if (!IsPostBack) treeCategories.Nodes[0].Selected = true; mvShowCategoryType.SetActiveView(vShowCategoryTypeTree); pnlShowCategoryTypeDropdown.Visible = false; break; case 2: categories.Add(allCategories); if (noCat) categories.Add(emptyCategory); foreach (CategoryInfo cat in cats) { categories.Add(cat); } foreach (CategoryInfo cat in categories) { drpCategories.Items.Add(new ListItem(new string('.',cat.Level * 3) + cat.FaqCategoryName,cat.FaqCategoryId.ToString())); } if (!IsPostBack) drpCategories.SelectedIndex = 0; pnlShowCategoryTypeDropdown.Visible = true; pnlShowCategories.Visible = false; pnlSortbox.Style.Add("float", "right"); pnlSortbox.Style.Add("text-align", "right"); break; } } else { pnlShowCategories.Visible = false; } }
/// <summary> /// Imports the module (IPortable interface) /// </summary> /// <param name="moduleID">The module ID.</param> /// <param name="content">The content.</param> /// <param name="version">The version.</param> /// <param name="userId">The user id.</param> public void ImportModule(int moduleID, string content, string version, int userId) { Version vers = new Version(version); if (vers > new Version("5.0.0")) { XElement xRoot = XElement.Parse(content); Dictionary <int, int> idTrans = new Dictionary <int, int>(); // First we import the categories List <CategoryInfo> lstCategories = new List <CategoryInfo>(); XElement xCategories = xRoot.Element("categories"); foreach (var xCategory in xCategories.Elements()) { // translate the parentid's to new values int oldParentId = Int32.Parse(xCategory.Element("categoryparentid").Value, CultureInfo.InvariantCulture); int newParentId = 0; if (oldParentId > 0 && idTrans.ContainsKey(oldParentId)) { newParentId = idTrans[oldParentId]; } // Fill category properties CategoryInfo category = new CategoryInfo(); category.ModuleId = moduleID; category.FaqCategoryParentId = newParentId; category.FaqCategoryName = xCategory.Element("categoryname").Value; category.FaqCategoryDescription = xCategory.Element("categorydescription").Value; category.ViewOrder = Int32.Parse(xCategory.Element("vieworder").Value, CultureInfo.InvariantCulture); // add category and save old and new id to translation dictionary int oldCategoryId = Int32.Parse(xCategory.Element("categoryid").Value, CultureInfo.InvariantCulture); int newCategoryId = AddCategory(category); idTrans.Add(oldCategoryId, newCategoryId); } // Next import the faqs List <FAQsInfo> lstFaqs = new List <FAQsInfo>(); XElement xFaqs = xRoot.Element("faqs"); foreach (var xFaq in xFaqs.Elements()) { // translate id with help of translation dictionary build before int oldCategoryId = Int32.Parse(xFaq.Element("categoryid").Value, CultureInfo.InvariantCulture); int newCategoryId = -1; if (idTrans.ContainsKey(oldCategoryId)) { newCategoryId = idTrans[oldCategoryId]; } // Fill FAQs properties FAQsInfo faq = new FAQsInfo(); faq.ModuleID = moduleID; faq.Question = xFaq.Element("question").Value; faq.Answer = xFaq.Element("answer").Value; faq.CategoryId = newCategoryId; faq.CreatedDate = DateTime.Parse(xFaq.Element("creationdate").Value); faq.DateModified = DateTime.Now; faq.FaqHide = Boolean.Parse(xFaq.Element("faqhide").Value); // These dates might be emtpy try { faq.PublishDate = DateTime.Parse(xFaq.Element("publishdate").Value); } catch (Exception) { faq.PublishDate = null; } try { faq.ExpireDate = DateTime.Parse(xFaq.Element("expiredate").Value); } catch (Exception) { faq.ExpireDate = null; } // Add Faq to database AddFAQ(faq); } } else { ArrayList catNames = new ArrayList(); ArrayList Question = new ArrayList(); XmlNode xmlFaq; XmlNode xmlFaqs = Globals.GetContent(content, "faqs"); //' check if category exists. if not create category foreach (XmlNode tempLoopVar_xmlFAQ in xmlFaqs) { xmlFaq = tempLoopVar_xmlFAQ; if ((xmlFaq["catname"].InnerText != Null.NullString) && (!catNames.Contains(xmlFaq["catname"].InnerText))) { catNames.Add(xmlFaq["catname"].InnerText); CategoryInfo objCat = new CategoryInfo(); objCat.ModuleId = moduleID; objCat.FaqCategoryName = xmlFaq["catname"].InnerText; objCat.FaqCategoryDescription = xmlFaq["catdescription"].InnerText; AddCategory(objCat); } } // check is question is empty. if empty is category. int loop = 0; foreach (XmlNode tempLoopVar_xmlFAQ in xmlFaqs) { loop++; xmlFaq = tempLoopVar_xmlFAQ; if (xmlFaq["question"].InnerText != Null.NullString && xmlFaq["question"].InnerText != string.Empty) { FAQsInfo objFAQs = new FAQsInfo(); objFAQs.ModuleID = moduleID; objFAQs.Question = xmlFaq["question"].InnerText; objFAQs.Answer = xmlFaq["answer"].InnerText; string faqCategoryName = xmlFaq["catname"].InnerText; // Check if creationdate exists in export, if nothing set current date. else import if (xmlFaq["creationdate"] == null) { objFAQs.CreatedDate = DateTime.Now; objFAQs.DateModified = DateTime.Now; } else { objFAQs.CreatedDate = DateTime.Parse(xmlFaq["creationdate"].InnerText); objFAQs.DateModified = DateTime.Parse(xmlFaq["datemodified"].InnerText); } if (xmlFaq["vieworder"] != null) { objFAQs.ViewOrder = int.Parse(xmlFaq["vieworder"].InnerText); } else { objFAQs.ViewOrder = loop; } objFAQs.CreatedByUser = userId.ToString(); bool foundCat = false; foreach (CategoryInfo objCat in ListCategories(moduleID, false)) { if (faqCategoryName == objCat.FaqCategoryName) { objFAQs.CategoryId = objCat.FaqCategoryId; foundCat = true; break; } } if (!foundCat) { objFAQs.CategoryId = null; } AddFAQ(objFAQs); } } } }
private List <CategoryInfo> GetChildrenCategories(IEnumerable <CategoryInfo> categories, CategoryInfo category) { var childrens = new List <CategoryInfo>(); foreach (var subCategory in categories.Where(c => c.FaqCategoryParentId == category.FaqCategoryId)) { childrens.Add(subCategory); childrens.AddRange(GetChildrenCategories(categories, subCategory)); } return(childrens); }
/// <summary> /// Binds the categories. /// </summary> private void BindCategories() { //Show the categories ? if (ShowCategories) { // Do we have unassigned categories ? bool noCat = false; foreach (FAQsInfo faq in FaqData) { if (faq.CategoryId == null) { noCat = true; break; } } pnlShowCategories.Visible = true; //Build the Catagories List. FAQsController FAQsController = new FAQsController(); ArrayList categories = new ArrayList(); //Empty Category CategoryInfo emptyCategory = new CategoryInfo(); emptyCategory.FaqCategoryId = -1; emptyCategory.FaqCategoryName = Localization.GetString("EmptyCategory", LocalResourceFile); emptyCategory.ModuleId = ModuleId; emptyCategory.Level = 0; emptyCategory.ViewOrder = 998; //All Categories CategoryInfo allCategories = new CategoryInfo(); allCategories.FaqCategoryId = -2; allCategories.FaqCategoryName = Localization.GetString("AllCategory", LocalResourceFile); allCategories.ModuleId = ModuleId; allCategories.Level = 0; allCategories.ViewOrder = 999; IEnumerable <CategoryInfo> cats = FAQsController.ListCategoriesHierarchical(ModuleId, !ShowEmptyCategories); switch (ShowCategoryType) { case 0: if (noCat) { categories.Add(emptyCategory); } foreach (CategoryInfo cat in cats) { categories.Add(cat); } listCategories.DataSource = categories; listCategories.DataBind(); mvShowCategoryType.SetActiveView(vShowCategoryTypeList); pnlShowCategoryTypeDropdown.Visible = false; break; case 1: categories.Add(allCategories); if (noCat) { categories.Add(emptyCategory); } foreach (CategoryInfo cat in cats) { categories.Add(cat); } // treeCategories fails with int? FaqCategoryParentId // define a temp class that has no nullables // set null ints to Null.NullInt ArrayList lst = new ArrayList(); foreach (CategoryInfo cat in categories) { lst.Add(cat.ToTreeNode()); } treeCategories.DataTextField = "FaqCategoryName"; treeCategories.DataFieldID = "FaqCategoryId"; treeCategories.DataFieldParentID = "FaqCategoryParentId"; treeCategories.DataSource = lst; treeCategories.DataBind(); if (!IsPostBack) { treeCategories.Nodes[0].Selected = true; } mvShowCategoryType.SetActiveView(vShowCategoryTypeTree); pnlShowCategoryTypeDropdown.Visible = false; break; case 2: categories.Add(allCategories); if (noCat) { categories.Add(emptyCategory); } foreach (CategoryInfo cat in cats) { categories.Add(cat); } foreach (CategoryInfo cat in categories) { drpCategories.Items.Add(new ListItem(new string('.', cat.Level * 3) + cat.FaqCategoryName, cat.FaqCategoryId.ToString())); } if (!IsPostBack) { drpCategories.SelectedIndex = 0; } pnlShowCategoryTypeDropdown.Visible = true; pnlShowCategories.Visible = false; pnlSortbox.Style.Add("float", "right"); pnlSortbox.Style.Add("text-align", "right"); break; } } else { pnlShowCategories.Visible = false; } }