public static void ComputeEmbed(Document doc, SiteDb sitedb, Guid objectId, byte constType) { HTMLCollection embedElement = doc.getElementsByTagName("embed"); List <string> UrlList = new List <string>(); foreach (var item in embedElement.item) { string fileurl = DomUrlService.GetLinkOrSrc(item); if (string.IsNullOrEmpty(fileurl)) { continue; } UrlList.Add(fileurl); } ComputeUrlRelation(sitedb, objectId, constType, UrlList, ConstObjectType.File); }
public void RemoveExternalStyleScript(T value) { if (value != null && !value.IsEmbedded) { var route = this.SiteDb.Routes.GetByObjectId(value.Id); string objecturl = route != null ? route.Name : null; if (objecturl == null) { return; // not url, should not be possible. } var relations = this.SiteDb.Relations.GetReferredBy(value as SiteObject); foreach (var item in relations) { var repo = this.SiteDb.GetRepository(item.ConstTypeX); var parentobject = repo?.Get(item.objectXId); if (parentobject != null && parentobject is IDomObject) { var domobject = parentobject as IDomObject; if (domobject is Page) { var page = domobject as Page; page.Headers.Styles.Remove(objecturl); page.Headers.Scripts.Remove(objecturl); } List <SourceUpdate> updates = new List <SourceUpdate>(); if (value.ConstType == ConstObjectType.Style) { HTMLCollection styletags = domobject.Dom.getElementsByTagName("link"); foreach (var cssitem in styletags.item) { if (cssitem.hasAttribute("rel") && cssitem.getAttribute("rel").ToLower().Contains("stylesheet")) { string itemurl = DomUrlService.GetLinkOrSrc(cssitem); if (Lib.Helper.StringHelper.IsSameValue(itemurl, objecturl)) { updates.Add(new SourceUpdate() { StartIndex = cssitem.location.openTokenStartIndex, EndIndex = cssitem.location.endTokenEndIndex }); } } } } else if (value.ConstType == ConstObjectType.Script) { HTMLCollection scripttags = domobject.Dom.getElementsByTagName("script"); foreach (var jsitem in scripttags.item) { if (jsitem.hasAttribute("src")) { string itemurl = jsitem.getAttribute("src"); if (Lib.Helper.StringHelper.IsSameValue(itemurl, objecturl)) { updates.Add(new SourceUpdate() { StartIndex = jsitem.location.openTokenStartIndex, EndIndex = jsitem.location.endTokenEndIndex }); } } } } // Form is handlbed by component... domobject.Body = Kooboo.Sites.Service.DomService.UpdateSource(domobject.Body, updates); repo.AddOrUpdate(domobject); } } } }
private List <SourceUpdate> GetChanges(SiteDb SiteDb, DomObject DomObject, string Language = null) { List <SourceUpdate> updates = new List <SourceUpdate>(); if (string.IsNullOrEmpty(DomObject.Body)) { return(updates); } string ObjectRelativeUrl = GetObjectUrl(SiteDb, DomObject); ObjectRelativeUrl = ObjectRelativeUrl.Replace("\\", "/"); if (!ObjectRelativeUrl.StartsWith("/")) { ObjectRelativeUrl = "/" + ObjectRelativeUrl; } var dom = DomObject.Dom; foreach (var item in dom.Links.item) { string itemsrc = Service.DomUrlService.GetLinkOrSrc(item); if (!string.IsNullOrEmpty(itemsrc)) { CheckAndAddChange(updates, item, itemsrc, ObjectRelativeUrl); } } foreach (var item in dom.images.item) { string itemsrc = DomUrlService.GetLinkOrSrc(item); if (!string.IsNullOrEmpty(itemsrc) && !Kooboo.Lib.Utilities.DataUriService.isDataUri(itemsrc)) { CheckAndAddChange(updates, item, itemsrc, ObjectRelativeUrl); } } HTMLCollection scripts = dom.getElementsByTagName("script"); foreach (var item in scripts.item) { if (item.hasAttribute("src")) { string srcurl = Service.DomUrlService.GetLinkOrSrc(item); if (!string.IsNullOrEmpty(srcurl)) { CheckAndAddChange(updates, item, srcurl, ObjectRelativeUrl); } } } HTMLCollection embedElement = dom.getElementsByTagName("embed"); foreach (var item in embedElement.item) { string fileurl = Kooboo.Sites.Service.DomUrlService.GetLinkOrSrc(item); if (!string.IsNullOrEmpty(fileurl)) { CheckAndAddChange(updates, item, fileurl, ObjectRelativeUrl); } } HTMLCollection styletags = dom.getElementsByTagName("link"); foreach (var item in styletags.item) { if (item.hasAttribute("rel") && item.getAttribute("rel").ToLower().Contains("stylesheet")) { string itemurl = Kooboo.Sites.Service.DomUrlService.GetLinkOrSrc(item); if (!string.IsNullOrEmpty(itemurl)) { CheckAndAddChange(updates, item, itemurl, ObjectRelativeUrl); } } } return(updates); }