public void SaveCopiedContent (int contentId, int categoryId, int languageId) { Category category = Category.Find(categoryId); CheckPermissions(category, Permission.Modify); if (category == null) { Flash["error"] = "Categoria padre inexistente"; RedirectToAction(Constants.CATEGORIES); return; } Content originalContent = Content.Find(contentId); Content content = new Content(category); content.Lang = Language.Find(languageId); if (content.Lang == null) { logger.Error("language is null!!!: " + languageId); return; } content.Save(); // Get an Id if (originalContent != null) { foreach(string key in originalContent.DataHash.Keys) // duplicate content { DataModel originalDataModel = (DataModel)originalContent.DataHash[key]; DataModel copyDataModel = new DataModel(content, originalDataModel.Field, originalDataModel.Value); content.DataHash[key] = copyDataModel; copyDataModel.Save(); } content.Save(); } //contentId = content.Id; // Read form inputs and attached files bool emptyForm = true; if (Request.Form.Count > 0 || Request.Files.Count > 0) { foreach (string input in Request.Form) { DataModel data; if (content.DataHash != null && content.DataHash.Contains(input)) { data = (DataModel) content.DataHash[input]; data.Value = Request.Form[input]; } else { Field field = Field.GetByName(input); if (field == null) continue; // invalid field name data = new DataModel(content, field, Request.Form[input]); } data.Save(); emptyForm = false; } foreach (string input in Request.Files.Keys) { DataModel data; System.Web.HttpPostedFile postedFile = Request.Files[input] as System.Web.HttpPostedFile; if ((postedFile == null) || (postedFile.FileName.Length == 0) || (postedFile.ContentLength == 0)) { logger.Debug("File not uploaded"); continue; } else if (content.DataHash != null && content.DataHash.Contains(input)) { data = (DataModel) content.DataHash[input]; File oldfile = (File) data.GetObjectFromValue(); File file = new File( config.GetValue(Constants.MEDIA_FOLDER)); file.SaveAttach(postedFile); data.Value = file.Id.ToString(); oldfile.RemoveAttach(); } else { Field field = Field.GetByName(input); if (field == null) continue; File file = new File(config.GetValue(Constants.MEDIA_FOLDER)); file.SaveAttach(postedFile); data = new DataModel(content, field, file.Id.ToString()); #if CACHE content.DataHash[input] = data; // force update cache #endif } data.Save(); emptyForm = false; } if (emptyForm) { content.Delete(); } else { bool isNew = true; foreach (Content c in category.ContentList) if (c.Id == content.Id) isNew = false; if (isNew) { category.ContentList.Add(content); category.ContentListSortedByReverseDate.Add(content); category.Save(); logger.Debug("save NEW content/category:" + content.Id +","+ category.Id); } else { content.Save(); category.Save(); logger.Debug("save NOT NEW content/category:" + content.Id +","+ category.Id); } } Hashtable parameters = new Hashtable(); parameters["Id"] = category.Id; RedirectToAction("viewcategory", parameters); } }
private void SavePortalContent (int contentId, int categoryId, string language) { Category category = Category.Find(categoryId); CheckPermissions(category, Permission.Modify); if (category == null) { RedirectToAction(Constants.CATEGORIES); return; } Content content; if (contentId != 0) { content = Content.Find (contentId); } else { content = new Content(category); Language lang = Language.FindByName(language); if (lang != null) content.Lang = lang; content.Save(); // r.Save(); } contentId = content.Id; // Read form inputs and attached files bool emptyForm = true; if (Request.Form.Count > 0 || Request.Files.Count > 0) { foreach (string input in Request.Form) { DataModel data; if (content.DataHash != null && content.DataHash.Contains(input)) { data = (DataModel) content.DataHash[input]; data.Value = Request.Form[input]; } else { Field field = Field.GetByName(input); if (field == null) continue; // invalid field name data = new DataModel(content, field, Request.Form[input]); } data.Save(); emptyForm = false; } foreach (string input in Request.Files.Keys) { DataModel data; System.Web.HttpPostedFile postedFile = Request.Files[input] as System.Web.HttpPostedFile; if ((postedFile == null) || (postedFile.FileName.Length == 0) || (postedFile.ContentLength == 0)) { logger.Debug("File not uploaded"); continue; } else if (content.DataHash != null && content.DataHash.Contains(input)) { data = (DataModel) content.DataHash[input]; File oldfile = (File) data.GetObjectFromValue(); File file = new File( config.GetValue(Constants.MEDIA_FOLDER)); file.SaveAttach(postedFile); data.Value = file.Id.ToString(); oldfile.RemoveAttach(); } else { Field field = Field.GetByName(input); if (field == null) continue; File file = new File(config.GetValue(Constants.MEDIA_FOLDER)); file.SaveAttach(postedFile); data = new DataModel(content, field, file.Id.ToString()); #if CACHE content.DataHash[input] = data; // force update cache #endif } data.Save(); emptyForm = false; } if (emptyForm) { content.Delete(); } else { bool isNew = true; foreach (Content c in category.ContentList) if (c.Id == content.Id) isNew = false; if (isNew) { category.ContentList.Add(content); category.ContentListSortedByReverseDate.Add(content); category.Save(); logger.Debug("save NEW content/category:" + content.Id +","+ category.Id); } else { content.Save(); category.Save(); logger.Debug("save NOT NEW content/category:" + content.Id +","+ category.Id); } } } }
public void PopulateAllTemplates() { Console.WriteLine("*** PopulateAllTemplates"); CastlePortal.Template[] templates = CastlePortal.Template.FindAll(); foreach (CastlePortal.Template template in templates) { Category category = new Category(); category.Name = "just testing..."; category.Template = template; //category.Save(); Content content = new Content(); content.Category = category; //content.Save(); category.ContentList = new System.Collections.ArrayList(); DataModel data = null; if (template.Fields.Count > 0) { //Console.WriteLine("total fields= :" + template.Fields.Count); foreach(CastlePortal.FieldTemplate fieldTemplate in template.Fields) { //Console.WriteLine("FIELD =" + fieldTemplate.Field.Name); string name = fieldTemplate.Field.Name; if ((name != "file") && (name != "image")) { data = new DataModel(content, fieldTemplate.Field, "just a test field"); content.DataHash[fieldTemplate.Field.Name] = data; } //data.Save(); } } category.ContentList.Add(content); Console.WriteLine("Template:" + template.Id +","+ template.Name); string path = Path.Combine(TestsCommons.TEMPLATESDIR, TestsCommons.GENERALTEMPLATES); path = Path.Combine(path, template.Name); path += TestsCommons.EXTENSION; NVelocity.Template nvtemplate = velocity.GetTemplate(path); VelocityContext context = new VelocityContext(); context.Put(TestsCommons.TEMPLATESDIRVAR, TestsCommons.TEMPLATESDIR); context.Put(TestsCommons.CATEGORYVAR, category); StringWriter writer = new StringWriter(); nvtemplate.Merge(context, writer); if (data != null) { //data.Delete(); } //content.Delete(); //category.Delete(); } }
private static string ReadDataModel(XmlNode node, Content content) { try { if (node.Name == "DataModel") { string val = NodeGetString(node, Constants.GENERATOR_VALUE); Field field = (Field)NodeGetObject(node, Constants.GENERATOR_FIELDCODE, fields); DataModel dm = new DataModel(content, field, val); dm.Save(); System.Console.WriteLine ("DataModel: " + content.Category.Code); foreach (XmlNode n in node.ChildNodes) { if (n.Name == "Value") { dm.Value = n.InnerText; dm.Save(); } } foreach (XmlNode n in node.ChildNodes) { if (n.Name == "File") { dm.Value = ReadFile(n).ToString(); dm.Save(); } } } return null; } catch(System.FormatException) { return "No se pudo leeer columna ordering"; } }
private static string ReadContent(XmlNode node) { try { if (node.Name == "Content") { Category category = (Category) NodeGetObject(node, Constants.GENERATOR_CATEGORYCODE, categories); if (category != null) { // string categorycode = NodeGetString(node, Constants.GENERATOR_CATEGORYCODE); string lang = NodeGetString(node, Constants.GENERATOR_LANG); DateTime creationdate = NodeGetDateTime(node, Constants.GENERATOR_CREATIONDATE); bool published = NodeGetBool(node, Constants.GENERATOR_PUBLISHED); bool frontpage = NodeGetBool(node, Constants.GENERATOR_FRONTPAGE); bool sectionfrontpage = NodeGetBool(node, Constants.GENERATOR_SECTIONFRONTPAGE); // Category category = Category.FindByCode(categorycode); Language l = Language.FindByName(lang); Content c = new Content(category, l, published, frontpage, sectionfrontpage, creationdate); c.Save(); contents[category.Code] = c; System.Console.WriteLine ("Content: "+ creationdate.ToString() + " " + category.Code); foreach (XmlNode n in node.ChildNodes) { if (n.Name == "DataModel") ReadDataModel(n, c); } } else { string categorycode = NodeGetString(node, Constants.GENERATOR_CATEGORYCODE); System.Console.WriteLine("No existe la categoria {0}", categorycode); } } return null; } catch(System.FormatException) { return "No se pudo leeer columna ordering"; } }
private static string ReadContent(XmlNode node, Category c) { string keys = NodeGetString(node, "keys"); string vals = NodeGetString(node, "vals"); string[] colname = keys.Split(','); string[] namedescr = vals.Split(','); int l = colname.Length; Field [] f = new Field[l]; for (int i=0; i<l; i++) f[i] = Field.GetByName(colname[i]); Content r = new Content(c); r.Save(); for (int i=0; i<l; i++) { DataModel d = new DataModel(r, f[i], namedescr[i]); d.Save(); } return null; }