public static dynamic Add(PortalSettings PortalSettings, CustomBlock CustomBlock, int ForceCount = 0) { dynamic Result = new ExpandoObject(); try { if (BlockFactory.Get(PortalSettings.PortalId, CustomBlock.Name) == null) { if (ForceCount == 0) { CustomBlock.Guid = Guid.NewGuid().ToString().ToLower(); } CustomBlock.PortalID = PortalSettings.PortalId; CustomBlock.CreatedBy = PortalSettings.UserId; CustomBlock.UpdatedBy = PortalSettings.UserId; CustomBlock.CreatedOn = DateTime.UtcNow; CustomBlock.UpdatedOn = DateTime.UtcNow; CustomBlock.Locale = PageManager.GetCultureCode(PortalSettings); BlockFactory.AddUpdate(CustomBlock); CustomBlock cb = BlockFactory.GetAll(PortalSettings.PortalId).Where(b => b.Guid.ToLower() == CustomBlock.Guid.ToLower() && b.Locale == null).FirstOrDefault(); if (cb == null) { cb = CustomBlock; cb.Locale = null; cb.ID = 0; BlockFactory.AddUpdate(cb); } Result.Status = "Success"; Result.Guid = CustomBlock.Guid; } else { if (ForceCount > 0) { CustomBlock.Name = CustomBlock.Name + ForceCount; ForceCount++; Result = Add(PortalSettings, CustomBlock, ForceCount); } else { Result.Status = "Exist"; } } } catch (Exception ex) { Result.Status = ex.Message.ToString(); DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); } return(Result); }
private static void BuildGlobalBlockMarkup(int PortalId, int UserId, HtmlNode item) { string blockguid = item.Attributes.Where(a => a.Name == "data-guid").FirstOrDefault().Value; if (!string.IsNullOrEmpty(blockguid)) { CustomBlock customBlock = BlockManager.GetByLocale(PortalId, blockguid, GetCultureCode(PortalController.Instance.GetCurrentSettings() as PortalSettings)); if (customBlock == null) { customBlock = new CustomBlock { Guid = blockguid.ToLower(), PortalID = PortalId, Name = item.Attributes.Where(a => a.Name == "data-name").FirstOrDefault().Value, Category = item.Attributes.Where(a => a.Name == "data-category").FirstOrDefault().Value, IsGlobal = true, CreatedBy = UserId, UpdatedBy = UserId, CreatedOn = DateTime.UtcNow, UpdatedOn = DateTime.UtcNow }; string[] str = item.InnerHtml.Split(new string[] { "</style>" }, StringSplitOptions.None); if (str.Length > 1) { customBlock.Html = str[1]; customBlock.Css = str[0]; } else { customBlock.Html = str[0]; } BlockFactory.AddUpdate(customBlock); } item.InnerHtml = item.Attributes.Where(a => a.Name == "data-block-type").FirstOrDefault().Value; item.Attributes.Remove("data-category"); item.Attributes.Remove("data-name"); } }
public static dynamic Edit(PortalSettings PortalSettings, CustomBlock CustomBlock) { dynamic Result = new ExpandoObject(); try { CustomBlock cb = BlockFactory.GetAll(PortalSettings.PortalId).Where(b => b.Guid.ToLower() == CustomBlock.Guid.ToLower() && b.Locale == PageManager.GetCultureCode(PortalSettings)).FirstOrDefault(); if (cb == null) { cb = BlockFactory.GetAll(PortalSettings.PortalId).Where(b => b.Guid.ToLower() == CustomBlock.Guid.ToLower() && b.Locale == null).FirstOrDefault(); if (cb != null) { cb.Locale = PageManager.GetCultureCode(PortalSettings); cb.ID = 0; BlockFactory.AddUpdate(cb); } } if (cb != null) { cb.Name = CustomBlock.Name; cb.Category = CustomBlock.Category; if (CustomBlock.IsGlobal && !string.IsNullOrEmpty(CustomBlock.Html)) { HtmlDocument html = new HtmlDocument(); html.LoadHtml(CustomBlock.Html); IEnumerable <HtmlNode> query = html.DocumentNode.Descendants("div"); foreach (HtmlNode item in query.ToList()) { if (item.Attributes.Where(a => a.Name == "dmid").FirstOrDefault() != null && item.Attributes.Where(a => a.Name == "mid").FirstOrDefault() != null && !string.IsNullOrEmpty(item.Attributes.Where(a => a.Name == "mid").FirstOrDefault().Value)) { int mid = int.Parse(item.Attributes.Where(a => a.Name == "mid").FirstOrDefault().Value); ModuleInfo minfo = ModuleController.Instance.GetModule(mid, Null.NullInteger, false); if (minfo != null && !minfo.AllTabs) { minfo.AllTabs = true; ModuleController.Instance.UpdateModule(minfo); List <TabInfo> listTabs = TabController.GetPortalTabs(minfo.PortalID, Null.NullInteger, false, true); foreach (TabInfo destinationTab in listTabs) { ModuleInfo module = ModuleController.Instance.GetModule(minfo.ModuleID, destinationTab.TabID, false); if (module != null) { if (module.IsDeleted) { ModuleController.Instance.RestoreModule(module); } } else { if (!PortalSettings.Current.ContentLocalizationEnabled || (minfo.CultureCode == destinationTab.CultureCode)) { ModuleController.Instance.CopyModule(minfo, destinationTab, minfo.PaneName, true); } } } } item.InnerHtml = "<div vjmod=\"true\"><app id=\"" + mid + "\"></app>"; } else if (item.Attributes.Where(a => a.Name == "data-block-type").FirstOrDefault() != null) { if (item.Attributes.Where(a => a.Name == "data-block-type").FirstOrDefault().Value.ToLower() != "global") { item.InnerHtml = item.Attributes.Where(a => a.Name == "data-block-type").FirstOrDefault().Value; } } } CustomBlock.Html = html.DocumentNode.OuterHtml; } cb.Html = CustomBlock.Html; cb.Css = CustomBlock.Css; cb.IsGlobal = CustomBlock.IsGlobal; cb.UpdatedBy = PortalSettings.Current.UserId; cb.UpdatedOn = DateTime.UtcNow; BlockFactory.AddUpdate(cb); Result.Status = "Success"; Result.Guid = cb.Guid; Result.CustomBlock = cb; } else { Result.Status = "Not exist"; } } catch (Exception ex) { Result.Status = ex.Message.ToString(); DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); } return(Result); }