private List <UsedByRelation> PageRelation(SiteDb sitedb, string by, Guid PageId) { string baseurl = sitedb.WebSite.BaseUrl(); byte consttype = ConstObjectType.GetByte(by); List <UsedByRelation> result = new List <UsedByRelation>(); var relations = sitedb.Relations.GetRelations(PageId, consttype); foreach (var item in relations) { var objectinfo = ObjectService.GetObjectInfo(sitedb, item.objectYId, item.ConstTypeY); if (objectinfo != null) { UsedByRelation relation = new UsedByRelation(); relation.Name = objectinfo.DisplayName; relation.Url = objectinfo.Url; if (!string.IsNullOrEmpty(relation.Url)) { relation.Url = Lib.Helper.UrlHelper.Combine(baseurl, relation.Url); } relation.ModelType = objectinfo.ModelType; relation.ObjectId = objectinfo.ObjectId; relation.ConstType = objectinfo.ConstType; result.Add(relation); } } return(result); }
private List <UsedByRelation> _GetUsedBy(T value) { List <UsedByRelation> result = new List <UsedByRelation>(); if (value == null) { return(result); } if (value.IsEmbedded) { var samestyles = this.GetSameEmbedded(value.BodyHash); foreach (var item in samestyles) { UsedByRelation relation = new UsedByRelation(); relation.ObjectId = item.OwnerObjectId; relation.ConstType = item.OwnerConstType; Helper.RelationHelper.SetNameUrl(SiteDb, relation); relation.Remark = item.KoobooOpenTag; result.Add(relation); } return(result); } else { return(base.GetUsedBy(value.Id)); } }
public static void SetNameUrl(SiteDb SiteDb, UsedByRelation relation) { if (relation.ObjectId == default(Guid) || relation.ConstType == default(byte)) { return; } var objectinfo = Service.ObjectService.GetObjectInfo(SiteDb, relation.ObjectId, relation.ConstType); if (objectinfo != null) { relation.Name = objectinfo.DisplayName; relation.Url = objectinfo.Url; } }
public static List <UsedByRelation> ShowUsedBy(SiteDb sitedb, List <Relation.ObjectRelation> objectrelations) { List <UsedByRelation> relations = new List <UsedByRelation>(); foreach (var item in objectrelations) { UsedByRelation relation = new UsedByRelation(); if (item.ConstTypeX == ConstObjectType.CssRule) { CmsCssRule cssrule = sitedb.CssRules.Get(item.objectXId); if (cssrule == null) { continue; } var declarations = Kooboo.Dom.CSS.CSSSerializer.deserializeDeclarationBlock(cssrule.CssText); string remark = cssrule.SelectorText + "{"; foreach (var decl in declarations.item) { if (Sites.Tag.Property.CanHaveUri(decl.propertyname)) { remark += decl.propertyname + ":" + decl.value; } } remark += "}"; relation.Remark = remark; } var objectinfo = Sites.Service.ObjectService.GetObjectInfo(sitedb, item.objectXId, item.ConstTypeX); if (objectinfo != null) { relation.Name = objectinfo.DisplayName; relation.Url = objectinfo.Url; relation.ModelType = objectinfo.ModelType; relation.ObjectId = objectinfo.ObjectId; relation.ConstType = objectinfo.ConstType; } relations.Add(relation); } return(relations); }
public override List <UsedByRelation> GetUsedBy(Guid ObjectId) { var viewmethods = this.SiteDb.ViewDataMethods.Query.Where(o => o.MethodId == ObjectId).SelectAll(); List <UsedByRelation> relations = new List <UsedByRelation>(); foreach (var item in viewmethods) { UsedByRelation relation = new UsedByRelation(); var objectinfo = Sites.Service.ObjectService.GetObjectInfo(this.SiteDb, item.ViewId, ConstObjectType.View); relation.Name = objectinfo.DisplayName; relation.Url = objectinfo.Url; relation.ModelType = objectinfo.ModelType; relation.ObjectId = objectinfo.ObjectId; relation.ConstType = objectinfo.ConstType; relations.Add(relation); } return(relations); }
private List <UsedByRelation> _GetUsedBy(Form form) { List <UsedByRelation> result = new List <UsedByRelation>(); if (form == null) { return(result); } /// for embedded style, this is belong to one parent object. if (form.IsEmbedded) { var sameform = this.GetSameEmbedded(form.BodyHash); foreach (var item in sameform) { UsedByRelation relation = new UsedByRelation(); relation.ObjectId = item.OwnerObjectId; relation.ConstType = item.OwnerConstType; Sites.Helper.RelationHelper.SetNameUrl(SiteDb, relation); relation.Remark = item.KoobooOpenTag; result.Add(relation); } return(result); } var relations = this.SiteDb.Relations.GetReferredBy(form); foreach (var item in relations) { UsedByRelation relation = new UsedByRelation(); relation.ObjectId = item.objectXId; relation.ConstType = item.ConstTypeX; Sites.Helper.RelationHelper.SetNameUrl(SiteDb, relation); result.Add(relation); } return(result); }
public List <UsedByRelation> GetUsedBy(Style Style) { List <UsedByRelation> result = new List <UsedByRelation>(); if (Style == null) { return(result); } /// for embedded style, this is belong to one parent object. if (Style.IsEmbedded) { var samestyles = this.GetSameEmbedded(Style.BodyHash); foreach (var item in samestyles) { UsedByRelation relation = new UsedByRelation(); relation.ObjectId = item.OwnerObjectId; relation.ConstType = item.OwnerConstType; Helper.RelationHelper.SetNameUrl(this.SiteDb, relation); relation.Remark = item.KoobooOpenTag; result.Add(relation); } return(result); } var relations = this.SiteDb.Relations.GetReferredBy(Style); foreach (var item in relations) { ///import rule has relation to cssrule only. ///this style if reference by another style using import rule. if (item.ConstTypeX == ConstObjectType.CssRule) { CmsCssRule cssrule = this.SiteDb.CssRules.Get(item.objectXId); if (cssrule.ParentStyleId != default(Guid)) { Style ParentStyle = this.SiteDb.Styles.Get(cssrule.ParentStyleId); if (ParentStyle != null) { var parentresults = this.GetUsedBy(ParentStyle); if (parentresults != null && parentresults.Count() > 0) { result.AddRange(parentresults); } UsedByRelation relation = new UsedByRelation(); relation.ObjectId = ParentStyle.Id; relation.ConstType = ParentStyle.ConstType; Helper.RelationHelper.SetNameUrl(this.SiteDb, relation); relation.Remark = cssrule.CssText; result.Add(relation); } } } else { UsedByRelation relation = new UsedByRelation(); relation.ObjectId = item.objectXId; relation.ConstType = item.ConstTypeX; Helper.RelationHelper.SetNameUrl(this.SiteDb, relation); result.Add(relation); } } return(result); }
public List <UsedByRelation> ShowRelations(CmsCssRule cssrule) { List <UsedByRelation> result = new List <UsedByRelation>(); if (cssrule == null || cssrule.ruleType != RuleType.StyleRule) { return(result); } if (cssrule.IsInline) { var objectinfo = Service.ObjectService.GetObjectInfo(SiteDb, cssrule.OwnerObjectId, cssrule.OwnerObjectConstType); UsedByRelation usedby = new UsedByRelation(); usedby.Name = objectinfo.Name; usedby.Remark = cssrule.KoobooOpenTag; usedby.ObjectId = objectinfo.ObjectId; usedby.ConstType = objectinfo.ConstType; usedby.Url = objectinfo.Url; result.Add(usedby); return(result); } Style style = SiteDb.Styles.Get(cssrule.ParentStyleId); var relations = SiteDb.Styles.GetUsedBy(style); foreach (var item in relations) { var siteobject = Service.ObjectService.GetSiteObject(SiteDb, item.ObjectId, item.ConstType); Document dom = null; if (siteobject is IDomObject) { var domobject = siteobject as IDomObject; dom = domobject.Dom; } if (dom != null) { var elements = dom.getElementsByCSSSelector(cssrule.SelectorText); string name = null; byte consttype = 0; Guid ObjectId = default(Guid); string url = null; if (elements != null && elements.length > 0) { var objectinfo = Service.ObjectService.GetObjectInfo(SiteDb, siteobject); name = objectinfo.Name; consttype = objectinfo.ConstType; ObjectId = objectinfo.ObjectId; url = objectinfo.Url; } foreach (var eitem in elements.item) { var objectinfo = Service.ObjectService.GetObjectInfo(SiteDb, cssrule); UsedByRelation usedby = new UsedByRelation(); usedby.Name = name; usedby.ObjectId = ObjectId; usedby.ConstType = consttype; usedby.Remark = Service.DomService.GetOpenTag(eitem); usedby.Url = url; result.Add(usedby); } } } return(result); }