public List <CssRuleViewModel> GetCssRuleList(List <CmsCssRule> cssRules, Data.Models.WebSite website) { List <CssRuleViewModel> rules = new List <CssRuleViewModel>(); foreach (var item in cssRules) { var ruleType = item.ruleType; if (item.ruleType == RuleType.ImportRule) { CssRuleViewModel rule = new CssRuleViewModel(); rule.Selector = item.CssText; rule.RuleType = ruleType; rule.Id = item.Id; rules.Add(rule); } else if (item.ruleType == RuleType.MediaRule) { CssRuleViewModel rule = new CssRuleViewModel(); rule.Selector = item.SelectorText; rule.RuleType = ruleType; List <CmsCssRule> subrules = website.SiteDb().CssRules.Query.Where(o => o.ParentCssRuleId == item.Id).SelectAll(); rule.Rules = this.GetCssRuleList(subrules, website); rule.Id = item.Id; rules.Add(rule); } else { // style rule or font face rule. CssRuleViewModel rule = new CssRuleViewModel(); rule.RuleType = ruleType; List <DeclarationViewModel> subdeclarations = new List <DeclarationViewModel>(); var cssdecls = Kooboo.Dom.CSS.CSSSerializer.deserializeDeclarationBlock(item.RuleText); foreach (var jitem in cssdecls.item) { subdeclarations.Add(new DeclarationViewModel() { Name = jitem.propertyname, Value = jitem.value, Important = jitem.important }); } rule.Declarations = subdeclarations; rule.Selector = item.SelectorText; rule.Id = item.Id; rules.Add(rule); } } return(rules); }
private List <CssRuleViewModel> SetGetCssRule(List <CmsCssRule> allrules, List <CmsCssRule> currentrules) { List <CssRuleViewModel> result = new List <CssRuleViewModel>(); foreach (var item in currentrules) { var ruleType = item.ruleType; if (item.ruleType == RuleType.ImportRule) { CssRuleViewModel rule = new CssRuleViewModel(); rule.Selector = item.CssText; rule.RuleType = ruleType; rule.Id = item.Id; result.Add(rule); } else if (item.ruleType == RuleType.MediaRule) { CssRuleViewModel rule = new CssRuleViewModel(); rule.Selector = item.SelectorText; rule.RuleType = ruleType; List <CmsCssRule> subrules = allrules.Where(o => o.ParentCssRuleId == item.Id).ToList(); rule.Rules = SetGetCssRule(allrules, subrules); rule.Id = item.Id; result.Add(rule); } else { // style rule or font face rule. CssRuleViewModel rule = new CssRuleViewModel(); rule.RuleType = ruleType; List <DeclarationViewModel> subdeclarations = new List <DeclarationViewModel>(); var cssdecls = Kooboo.Dom.CSS.CSSSerializer.deserializeDeclarationBlock(item.RuleText); foreach (var jitem in cssdecls.item) { subdeclarations.Add(new DeclarationViewModel() { Name = jitem.propertyname, Value = jitem.value, Important = jitem.important }); } rule.Declarations = subdeclarations; rule.Selector = item.SelectorText; rule.Id = item.Id; result.Add(rule); } } return(result); }
private static CmsCssRuleChanges GetStyleRuleChangeItem(CssRuleViewModel rule) { List <CmsCssDeclaration> declarations = new List <CmsCssDeclaration>(); if (rule.Declarations != null) { foreach (var item in rule.Declarations) { declarations.Add(new CmsCssDeclaration() { PropertyName = item.Name, Value = item.Value, Important = item.Important }); } } var changeitem = new CmsCssRuleChanges() { ChangeType = ChangeType.Add, CssRuleId = rule.Id, selectorText = rule.Selector, Declarations = declarations }; return(changeitem); }
private static CmsCssRuleChanges GetMediaRuleAdded(CssRuleViewModel rule) { CmsCssRuleChanges change = new CmsCssRuleChanges(); if (rule.Selector.IndexOf("@media", StringComparison.OrdinalIgnoreCase) == -1) { change.selectorText = "@media " + rule.Selector; } else { change.selectorText = rule.Selector; } string ruletext = string.Empty; foreach (var item in rule.Rules) { ruletext += "\r\n" + item.Selector + "\r\n{\r\n"; List <CmsCssDeclaration> declarations = new List <CmsCssDeclaration>(); if (item.Declarations != null) { foreach (var decl in item.Declarations) { declarations.Add(new CmsCssDeclaration() { PropertyName = decl.Name, Value = decl.Value, Important = decl.Important }); } ruletext += CssService.SerializeCmsCssDeclaration(declarations); } ruletext += "\r\n}"; } change.DeclarationText = ruletext; return(change); }