Custom module dynamic publishing
Hello I used the module builder to make a custom module that will be a physician directory. I then wrote a script to import a CSV and create 762 new physicians which I'll post after this. My problem is this: I tell it to publish with
dynamicModuleManager.Lifecycle.Publish(physicianItem);dynamicModuleManager.SaveChanges();lifecycle.IsPublishedvar photoID = libraryManager.GetImages().Where(i => i.Title.ToString() == input && i.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Master).FirstOrDefault().Id;physicianItem.AddImage("Photo", photoID);LastName,middleinitial,FirstName,Degree,Street,City,State,Zip,Phone,facility,Photo,specialty1,specialty2,type,address2,phone2,certification,medical_school,gender,fellowship,email,state2,city2,zip2,fax2,interests,Insurances,additional_comments,residency,languagesMayes,,Sunnye,PhD,"1200 N. Phillips Avenue, 10th Floor, Suite 10000",Oklahoma City,OK,73104-5008,(405) 271-5311 ,OU Children's Physicians Building,MayesSunnye-Phych.jpg,Psychology - Pediatric,Hematology / Oncology - Pediatric,OU Medicine,,,,University of Kansas Clinical Child Psychology Program ,Female,Clinical Psychology Fellowship - University of Oklahoma College of Medicine ,,,,,,Psychology;Pediatric Psychology;Behavioral Medicine,Visit www.oumedicine.com/insuranceplans,Munroe-Meyer University of Nebraska Medical Center - Internship in professional psychology,,Rettig,J,Philip,MD,"1200 Children's Avenue, 7th Floor, Suite 7500",Oklahoma City,OK,73104,(405) 271-6208 ,OU Children's Physicians Building,RettigPhillip-Infec.jpg,Adolescent Medicine,Infectious Diseases,OU Medicine,"OU Children's Physicians Building, 5th Floor, Suite 5100",(405) 271-6208 ,American Board of Pediatrics;American Board of Pediatrics (Sub: Infectious Disease);American Board of Pediatrics (Sub:Adolescent Medicine),Harvard Medical School,Male,Southwestern Medical Center,,OK,Oklahoma City,73104,,Adolescent Medicine; reproductive health issues in teens; infectious diseases; sexually transmitted diseases; primary care,Visit www.oumedicine.com/insuranceplans,,Yale-New Haven Hospital;Boston's Children's Hospital,SpanishLawrence,,Shelley,MD,"1200 N Phillips, 5th floor, suite 5100",Oklahoma City,OK,73104,,OU Children's Physicians Building,LawrenceShelley-neonat.jpg,Neonatal-Perinatal Medicine,,OU Medicine,,,American Board of Pediatrics,University of Oklahoma College of Medicine,Female,"Universityof Texas Health Science Center, San Antonio; OU College of Medicine",,,,,,,visit www.oumedicine.com/insurance,,University of Oklahoma College of Medicine,public void CreatePhysician(string last, string first, string mi, string degree, string specs, string facils, string addy, string cert, string gender, string inter, string insur, string comm, string lang, string secSpec, string photo) string inputSeq = ""; try DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager(); Type physicianType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.PhysicianDirectory.Physician"); DynamicContent physicianItem = dynamicModuleManager.CreateDataItem(physicianType); inputSeq = "Photo"; if (photo != "") string jpg = ".jpg"; var photoID = checkTaxonI(photo.TrimEnd(jpg.ToCharArray())); lblFirst.Text = photo.TrimEnd(jpg.ToCharArray()); if (photoID.ToString() != "12345678-1234-1234-1234-123456789012") physicianItem.AddImage("Photo", photoID); lblFirst.Text += "<br />" + photoID.ToString(); else //lblError.Text += "<p>Image not found</p>"; //lblError.Text += "<p>Failed to find Image: " + photo + "</p>"; lblError.Text += photo + "<br />"; inputSeq = "Language"; if (lang != "") List<Guid> langs = new List<Guid>(); string[] strLangs = lang.Split(';'); if (strLangs.Length > 1) foreach (string strLang in strLangs) inputSeq += ": " + strLang; //langs.Add(taxonomyManager.GetTaxa<FlatTaxon>().Where(t => t.Taxonomy.Name == strLang).Single().Id); var langGUID = checkTaxon(strLang.Trim().Replace("/", string.Empty).Replace(' ', '-')); if (langGUID.ToString() == "12345678-1234-1234-1234-123456789012") langGUID = checkTaxon(strLang.Trim()); if (langGUID.ToString() == "12345678-1234-1234-1234-123456789012") lblError.Text += "<p>Failed to find Language: " + lang + "</p>"; if (langGUID.ToString() != "12345678-1234-1234-1234-123456789012") physicianItem.Organizer.AddTaxa("languages", langGUID); else inputSeq += ": " + lang; var langGUID = checkTaxon(lang.Replace("/", string.Empty).Replace(' ', '-')); if (langGUID.ToString() == "12345678-1234-1234-1234-123456789012") langGUID = checkTaxon(lang); if (langGUID.ToString() == "12345678-1234-1234-1234-123456789012") lblError.Text += "<p>Failed to find Language: " + lang + "</p>"; if (langGUID.ToString() != "12345678-1234-1234-1234-123456789012") physicianItem.Organizer.AddTaxa("languages", langGUID); inputSeq = "Specialties"; if (specs != "") var Specialty = checkTaxon(specs.Replace("/", string.Empty).Replace(' ', '-')); if (Specialty.ToString() == "12345678-1234-1234-1234-123456789012") Specialty = checkTaxon(specs); if (Specialty.ToString() == "12345678-1234-1234-1234-123456789012") lblError.Text += "<p>Failed to find Specialty: "+ specs + "</p>"; if (Specialty.ToString() != "12345678-1234-1234-1234-123456789012") physicianItem.Organizer.AddTaxa("Specialties", Specialty); else lblError.Text += "<p>Specialty not found</p>"; inputSeq = "Facilities"; if (facils == "") facils = "N A"; var taxonId = checkTaxon(facils.Replace("/", string.Empty).Replace(' ', '-')); if (taxonId.ToString() == "12345678-1234-1234-1234-123456789012") taxonId = checkTaxon(facils); if (taxonId.ToString() == "12345678-1234-1234-1234-123456789012") lblError.Text += "<p>Failed to find Facility: " + facils + "</p>"; if (taxonId.ToString() != "12345678-1234-1234-1234-123456789012") physicianItem.Organizer.AddTaxa("Facilities", taxonId); // This is how values for the properties are set physicianItem.SetValue("Last", last); physicianItem.SetValue("First", first); physicianItem.SetValue("Owner", SecurityManager.GetCurrentUserId()); physicianItem.SetValue("MI", mi); physicianItem.SetValue("Degree", degree); physicianItem.SetValue("PublicationDate", DateTime.Now); physicianItem.SetValue("SecondSpecialty", secSpec); // Set the selected value //var Facility = taxonomyManager.GetTaxa<FlatTaxon>().Where(t => t.Taxonomy.Name == "facilities").FirstOrDefault(); //lblTest.Text = taxonId.ToString(); physicianItem.SetValue("Address", addy); //LibrariesManager libraryManager = LibrariesManager.GetManager(); //var image = libraryManager.GetImages().FirstOrDefault(); //if (image != null) // // physicianItem.AddImage("Photo", image.Id); // physicianItem.SetValue("Certification", cert); // Set the selected value string option = ""; if(gender == "Male") option = "Option1"; else if(gender == "Female") option = "Option2"; else option = "Option1"; physicianItem.SetValue("Gender", new string[] gender ); physicianItem.SetValue("Interests", inter); //if (Language != null) // // physicianItem.Organizer.AddTaxa("languages", Language); // //else // // lblTest.Text += "<p>Language not found</p>"; // physicianItem.SetValue("Insurances", insur); physicianItem.SetValue("Comments", comm); inputSeq = "Categories"; TaxonomyManager taxonomyManager = TaxonomyManager.GetManager(); Guid credentialed = new Guid(); credentialed = checkTaxonH("OU-Physicians-Credentialed"); //This is the GUID I grabbed for OU Physicians Credentialed taxon physicianItem.Organizer.AddTaxa("Category", credentialed); //var Category = taxonomyManager.GetTaxa<HierarchicalTaxon>().Where(t => t.Taxonomy.Name == "Categories").FirstOrDefault(); //if (Category != null) // // physicianItem.Organizer.AddTaxa("Category", Category.Id); // physicianItem.UrlName = last + "-" + first; // You need to call SaveChanges() in order for the items to be actually persisted to data store dynamicModuleManager.Lifecycle.Publish(physicianItem); dynamicModuleManager.SaveChanges(); lblTest.Text += "<p>Changes saved successfully</p>"; catch (Exception ex) lblError.Text += "<p>" + inputSeq + ":" + ex.Message.ToString() + " <strong>:</strong> " + last + "</p>"; protected Guid checkTaxon(string input) TaxonomyManager taxonomyManager = TaxonomyManager.GetManager(); try var taxonId = taxonomyManager.GetTaxa<FlatTaxon>().Where(t => t.Name.Trim() == input).Single().Id; taxonGUID.Text = taxonId.ToString(); return taxonId; catch (Exception ex) Guid fail = new Guid("12345678-1234-1234-1234-123456789012"); taxonGUID.Text = ex.Message; return fail; protected Guid checkTaxonH(string input) TaxonomyManager taxonomyManager = TaxonomyManager.GetManager(); try var taxonId = taxonomyManager.GetTaxa<HierarchicalTaxon>().Where(t => t.Name.Trim() == input).Single().Id; taxonGUID.Text = taxonId.ToString(); return taxonId; catch (Exception ex) Guid fail = new Guid("12345678-1234-1234-1234-123456789012"); taxonGUID.Text = ex.Message; return fail; protected Guid checkTaxonI(string input) LibrariesManager libraryManager = LibrariesManager.GetManager(); try var test = libraryManager.GetImages().Where(i => i.Title.ToString() == input && i.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Master).FirstOrDefault().Id; return test; catch (Exception ex) Guid fail = new Guid("12345678-1234-1234-1234-123456789012"); taxonGUID.Text = ex.Message; return fail; Hello,
There is a difference between Lifecycle.Publish and publishing trough SitefinityWorkflow.
After calling
dynamicModuleManager.Lifecycle.Publish(YourItem); dynamicModuleManager.SaveChanges();var bag = new Dictionary<string, string>(); bag.Add("ContentType", YourType.FullName); WorkflowManager.MessageWorkflow(physicianItem.Id, titoType, null, "Publish", false, bag);@Tony,
Did you ever figure this out? I can't get the images to showup. I've tried using both AddImage overloads, ID and the object, both show nothing in Master list view
Steve