Example #1
0
        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);
                    }
                }
            }
        }
Example #3
0
        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);
        }