/// <summary> /// Must set Text, ItemId, ItemType, CultureCode, CultureCodeStatus and CreatedByUserId or it will not save anything /// If text is versioned, it creates a new version /// If text is not versioned, it creates new text or updates text depending on TextId. /// </summary> /// <param name="t"></param> public void SaveLatexText(PHLatex t) { if (t.Text == null || t.ItemId == 0 || t.ItemType == ELatexItemType.NotSet || t.CultureCode == null || t.CultureCodeStatus == ECultureCodeStatus.NotSet || t.CreatedByUserId == 0) { return; //Nothing to save } if (t.ModifiedByUserId == 0) { t.ModifiedByUserId = t.CreatedByUserId; } t.ModifiedOnDate = DateTime.Now; t.CurrentVersion = true; if (t.HtmlText == null || t.HtmlText == "") { LatexToMathMLConverter myConverter = new LatexToMathMLConverter(t.Text); myConverter.Convert(); t.HtmlText = myConverter.HTMLOutput; } bool isVersioned = (t.ItemType == ELatexItemType.PluggComponentLatex || t.ItemType == ELatexItemType.CourseLatexText); if (isVersioned) { var prevText = rep.GetCurrentVersionLatexText(t.CultureCode, t.ItemId, t.ItemType); if (prevText == null) { t.Version = 1; } else { t.Version = prevText.Version++; prevText.CurrentVersion = false; rep.UpdateLatexText(prevText); } t.CreatedOnDate = DateTime.Now; rep.CreateLatexText(t); } else { t.Version = 0; if (t.LatexId == 0) { t.CreatedOnDate = DateTime.Now; rep.CreateLatexText(t); } else { rep.UpdateLatexText(t); } } }
public void UpdatePlugg(Plugg p, PluggContent pc) { //For restore if something goes wrong Plugg oldP = GetPlugg(p.PluggId); IEnumerable <PluggContent> oldPCs = GetAllContentInPlugg(p.PluggId); rep.UpdatePlugg(p); //No repair necessary if this fails //For now, remove all PluggContent and recreate in all languages from pc. Fix this when we can deal with translations try { foreach (PluggContent pcDelete in oldPCs) { rep.DeletePluggContent(pcDelete); } pc.PluggId = p.PluggId; if (pc.LatexText != null) { LatexToMathMLConverter myConverter = new LatexToMathMLConverter(pc.LatexText); myConverter.Convert(); pc.LatexTextInHtml = myConverter.HTMLOutput; } LocaleController lc = new LocaleController(); var locales = lc.GetLocales(PortalID); foreach (var locale in locales) { pc.CultureCode = locale.Key; rep.CreatePluggContent(pc); } } catch (Exception) { //recreate old Plugg/PluggContent before rethrow var pcs = GetAllContentInPlugg(p.PluggId); foreach (PluggContent pcDelete in pcs) { rep.DeletePluggContent(pcDelete); } rep.DeletePlugg(p); rep.CreatePlugg(oldP); foreach (PluggContent oldPC in oldPCs) { rep.CreatePluggContent(oldPC); } throw; } }
public void SavePlugg(PluggContainer p) { try { bool isNew = p.ThePlugg.PluggId == 0; //Temporary - remove soon p.ThePlugg.Title = "Title no longer here"; p.ThePlugg.CreatedByUserId = 1; p.ThePlugg.ModifiedByUserId = 1; if (isNew) { rep.CreatePlugg(p.ThePlugg); } else { rep.UpdatePlugg(p.ThePlugg); } //Todo: Update.. p.TheTitle.ItemId = p.ThePlugg.PluggId; p.TheTitle.ItemType = ETextItemType.PluggTitle; p.TheTitle.CcStatus = ECCStatus.InCreationLanguage; p.TheTitle.CreatedByUserId = p.ThePlugg.CreatedByUserId; p.TheTitle.ModifiedByUserId = p.ThePlugg.ModifiedByUserId; SavePhText(p.TheTitle); //Todo: Update.. if (p.TheHtmlText != null) { p.TheHtmlText.ItemId = p.ThePlugg.PluggId; p.TheHtmlText.ItemType = ETextItemType.PluggHtml; p.TheHtmlText.CcStatus = ECCStatus.InCreationLanguage; p.TheHtmlText.CreatedByUserId = p.ThePlugg.CreatedByUserId; p.TheHtmlText.ModifiedByUserId = p.ThePlugg.ModifiedByUserId; SavePhText(p.TheHtmlText); } //Todo: Update.. if (p.TheLatex != null) { p.TheLatex.ItemId = p.ThePlugg.PluggId; p.TheLatex.ItemType = ELatexType.Plugg; p.TheLatex.CcStatus = ECCStatus.InCreationLanguage; p.TheLatex.CreatedByUserId = p.ThePlugg.CreatedByUserId; p.TheLatex.ModifiedByUserId = p.ThePlugg.ModifiedByUserId; LatexToMathMLConverter myConverter = new LatexToMathMLConverter(p.TheLatex.Text); myConverter.Convert(); p.TheLatex.HtmlText = myConverter.HTMLOutput; SaveLatexText(p.TheLatex); } LocaleController lc = new LocaleController(); var locales = lc.GetLocales(PortalID); foreach (var locale in locales) { if (locale.Key != p.ThePlugg.CreatedInCultureCode) { GoogleTranslate(p.TheTitle, locale.Key); if (p.TheHtmlText != null) { GoogleTranslate(p.TheHtmlText, locale.Key); } if (p.TheLatex != null) { GoogleTranslate(p.TheLatex, locale.Key); } } } //Create PluggPage DNNHelper d = new DNNHelper(); string pageUrl = p.ThePlugg.PluggId.ToString(); string pageName = pageUrl + ": " + p.TheTitle.Text; TabInfo newTab = d.AddPluggPage(pageName, pageUrl); p.ThePlugg.TabId = newTab.TabID; rep.UpdatePlugg(p.ThePlugg); } catch (Exception) { //Todo: Update DeletePlugg(p.ThePlugg); throw; } }