Exemple #1
0
        public static bool FromBytes(ref ISiteObject SiteObject, byte[] DiskBytes, SiteDb sitedb)
        {
            var modeltype      = SiteObject.GetType();
            var SerializerType = Attributes.AttributeHelper.GetDiskType(modeltype);

            if (SerializerType == Kooboo.Attributes.DiskType.Binary)
            {
                var binaryfile = SiteObject as IBinaryFile;
                if (DiskBytes == null || IOHelper.IsEqualBytes(binaryfile.ContentBytes, DiskBytes))
                {
                    return(false);
                }
                binaryfile.ContentBytes = DiskBytes;
            }
            else if (SerializerType == Kooboo.Attributes.DiskType.Text)
            {
                var textfile = SiteObject as ITextObject;

                if (SiteObject is Kooboo.Sites.Models.Code)
                {
                    var currentcode = SiteObject as Models.Code;

                    var bytes = CodeToBytes(sitedb, currentcode);

                    if (IOHelper.IsEqualBytes(bytes, DiskBytes))
                    {
                        return(false);
                    }
                    var currentbody = currentcode.Body;

                    var ok = FromCodeBytes(currentcode, DiskBytes);
                    if (!ok)
                    {
                        return(false);
                    }
                }
                else
                {
                    string textbody = System.Text.Encoding.UTF8.GetString(DiskBytes);

                    if (StringHelper.IsSameValue(textbody, textfile.Body))
                    {
                        return(false);
                    }
                    textfile.Body = textbody;
                }
            }
            else
            {
                string fulltext      = System.Text.Encoding.UTF8.GetString(DiskBytes);
                var    generatedbody = Lib.Helper.JsonHelper.Serialize(SiteObject);

                if (StringHelper.IsSameValue(generatedbody, fulltext))
                {
                    return(false);
                }
                SiteObject = JsonHelper.Deserialize(fulltext, modeltype) as ISiteObject;
            }
            return(true);
        }
        public bool CanSyncToDisk(ISiteObject value, string StoreName)
        {
            /// verify if this item has been sync to disk....
            /// this is a double, should not happen...
            if (value == null)
            {
                return(false);
            }

            ICoreObject coreobject = value as ICoreObject;

            if (coreobject == null)
            {
                return(false);
            }

            var logs = this.Query.Where(o => o.SyncSettingId == this.DiskSyncSettingId && o.ObjectId == value.Id).SelectAll();

            foreach (var item in logs)
            {
                if (Kooboo.Lib.Helper.StringHelper.IsSameValue(StoreName, item.StoreName))
                {
                    if (item.Version >= coreobject.Version)
                    {
                        return(false);
                    }
                }
            }

            this.AddOrUpdate(new Synchronization {
                SyncSettingId = this.DiskSyncSettingId, ObjectId = value.Id, Version = coreobject.Version, StoreName = StoreName
            });

            return(true);
        }
Exemple #3
0
        public static void AddHistory(SiteDb SiteDb, SyncObject SyncObject, ISiteObject SiteObject)
        {
            NodeUpdate update = new NodeUpdate();

            update.ObjectId        = SyncObject.ObjectId;
            update.ObjectConstType = SyncObject.ObjectConstType;
            update.IsDelete        = SyncObject.IsDelete;
            update.Language        = SyncObject.Language;
            update.Sender          = SyncObject.Sender;
            update.SenderTick      = SyncObject.SenderTick;

            if (SiteObject is CoreObject)
            {
                var core = SiteObject as CoreObject;
                update.LocalVersion = core.Version;
            }

            var store = Stores.ClusterUpdateHistory(SiteDb);

            var old = store.get(update.Id);

            if (old == null)
            {
                store.add(update.Id, update);
            }
        }
Exemple #4
0
        public static void DeleteRoutableObject(SiteDb sitedb, IRepository repo, ISiteObject value)
        {
            // delete route..
            //TODO:
            // Sites.Helper.ChangeHelper.DeleteUrl(this.SiteDb,)
            var objectroutes = sitedb.Routes.Query.Where(o => o.objectId == value.Id).SelectAll();

            foreach (var item in objectroutes)
            {
                var referredby = sitedb.Relations.GetReferredByRelations(item.Id);

                foreach (var by in referredby)
                {
                    var repofrom = sitedb.GetRepository(by.ConstTypeX);
                    if (repofrom != null)
                    {
                        Sites.Helper.ChangeHelper.DeleteUrl(sitedb, repofrom, by.objectXId, item.Name);
                    }
                }

                var stillusedby = sitedb.Relations.Query.Where(o => o.objectYId == item.Id).SelectAll();
                if ((stillusedby == null || stillusedby.Count == 0 || (stillusedby.Count == 1 && stillusedby[0].objectXId == value.Id)))
                {
                    sitedb.Routes.Delete(item.Id);
                }
                else
                {
                    item.objectId = default(Guid);
                    sitedb.Routes.AddOrUpdate(item);
                }
            }
        }
Exemple #5
0
        internal static SyncObject Prepare(ISiteObject SiteObject, string StoreName = null, bool IsDelete = false)
        {
            SyncObject syncobject = null;

            if (IsDelete)
            {
                syncobject                 = new SyncObject();
                syncobject.IsDelete        = true;
                syncobject.ObjectConstType = SiteObject.ConstType;
                syncobject.ObjectId        = SiteObject.Id;
            }
            else
            {
                syncobject = SyncObjectConvertor.ToSyncObject(SiteObject);
            }

            if (string.IsNullOrEmpty(StoreName))
            {
                StoreName = SiteObject.GetType().Name;
            }
            syncobject.StoreName = StoreName;

            if (SiteObject is ICoreObject)
            {
                var coreobject = SiteObject as ICoreObject;
                syncobject.SenderVersion = coreobject.Version;
            }

            return(syncobject);
        }
Exemple #6
0
        public static byte[] GetObjectBytes(ISiteObject siteobject)
        {
            if (siteobject == null)
            {
                return(null);
            }
            var disktype = Kooboo.Attributes.AttributeHelper.GetDiskType(siteobject);

            if (disktype == Attributes.DiskType.Text && siteobject is ITextObject)
            {
                var textobject = siteobject as ITextObject;
                if (!string.IsNullOrEmpty(textobject.Body))
                {
                    return(System.Text.Encoding.UTF8.GetBytes(textobject.Body));
                }
            }
            else if (disktype == Attributes.DiskType.Binary && siteobject is IBinaryFile)
            {
                var binaryfile = siteobject as IBinaryFile;
                return(binaryfile.ContentBytes);
            }
            else
            {
                string textbody = JsonHelper.Serialize(siteobject);
                if (!string.IsNullOrEmpty(textbody))
                {
                    return(System.Text.Encoding.UTF8.GetBytes(textbody));
                }
            }
            return(null);
        }
Exemple #7
0
        // Add from SiteRepositoryBase Event....
        public void AddTask(IRepository repo, ISiteObject value, ChangeType changetype)
        {
            if (repo == null || value == null)
            {
                return;
            }
            var core = value as ICoreObject;

            if (core == null)
            {
                return;
            }

            lock (_queuelocker)
            {
                PushTask task = new PushTask()
                {
                    StoreName = repo.StoreName, ObjectId = value.Id
                };

                if (changetype == ChangeType.Delete)
                {
                    task.Version  = GetJustDeltedVersion(repo, value.Id);
                    task.IsDelete = true;
                }
                else
                {
                    task.Version = core.Version;
                }
                this.AddTask(task);
            }
        }
Exemple #8
0
        private List <Guid> _GetUsedByPage(IRepository repo, ISiteObject siteobject)
        {
            List <Guid> pageids = new List <Guid>();

            var usedby = repo.GetUsedBy(siteobject.Id);

            foreach (var item in usedby)
            {
                if (item.ConstType == ConstObjectType.Page)
                {
                    pageids.Add(item.ObjectId);
                }
                else
                {
                    var newrepo = this.SiteDb.GetRepository(item.ConstType);
                    if (newrepo != null)
                    {
                        var siteobj = newrepo.Get(item.ObjectId);
                        if (siteobj != null)
                        {
                            var usedbyids = _GetUsedByPage(newrepo, siteobj);
                            pageids.AddRange(usedbyids);
                        }
                    }
                }
            }

            return(pageids);
        }
        public string GetVersion(RenderContext context)
        {
            if (context == null || context.WebSite == null)
            {
                return(Data.AppSettings.Version.ToString());
            }

            var sitedb = context.WebSite.SiteDb();

            IRepository repo = null;

            if (this.IsGroup)
            {
                repo = sitedb.ResourceGroups;
            }
            else if (this.IsImage)
            {
                repo = sitedb.Images;
            }

            else if (IsStyle)
            {
                repo = sitedb.Styles;
            }
            else
            {
                repo = sitedb.Scripts;
            }

            ISiteObject siteobject = null;
            // get current version
            var route = Kooboo.Sites.Routing.ObjectRoute.GetRoute(sitedb, this.Url);

            if (route != null && route.objectId != default(Guid))
            {
                siteobject = repo.Get(route.objectId);

                if (siteobject != null)
                {
                    var core = siteobject as ICoreObject;

                    if (core != null)
                    {
                        return(GetVersion(sitedb, core).ToString());
                    }
                }
            }

            if (siteobject != null)
            {
                var core = siteobject as ICoreObject;
                if (core != null)
                {
                    return(GetVersion(sitedb, core).ToString());
                }
            }

            return(null);
        }
Exemple #10
0
 public void Delete(ISiteObject siteobject)
 {
     if (this.IndexType.Contains(siteobject.ConstType))
     {
         string meta = GetMetaKey(siteobject);
         IndexData.Delete(meta);
     }
 }
Exemple #11
0
 private bool IsEmbedded(ISiteObject Value)
 {
     if (Value is IEmbeddable)
     {
         IEmbeddable embedded = Value as IEmbeddable;
         return(embedded.IsEmbedded);
     }
     return(false);
 }
Exemple #12
0
 public static long GetSize(ISiteObject siteobject)
 {
     if (siteobject is IBinaryFile)
     {
         return(((IBinaryFile)siteobject).Size);
     }
     else
     {
         var json = Lib.Helper.JsonHelper.Serialize(siteobject);
         return(json.Length);
     }
 }
Exemple #13
0
 public void Sync(SiteDb SiteDb, ISiteObject Value, ChangeType ChangeType, string StoreName)
 {
     if (ChangeType == ChangeType.Add || ChangeType == ChangeType.Update)
     {
         this.AddOrUpdate(Value);
     }
     else
     {
         this.Delete(Value);
     }
     this.IndexData.Close();
 }
Exemple #14
0
        private string GetBody(ISiteObject siteobject)
        {
            string body = null;

            if (siteobject is ITextObject)
            {
                var textobject = siteobject as ITextObject;
                body = textobject.Body;
                return(Kooboo.Search.Utility.RemoveHtml(body));
            }
            return(body);
        }
Exemple #15
0
        private VersionCompareViewModel GetStoreCompareModel(ApiCall call, Sites.Repository.SiteDb sitedb, long id1, long id2)
        {
            VersionCompareViewModel model = new VersionCompareViewModel()
            {
                Id1 = id1, Id2 = id2
            };

            LogEntry prelog = sitedb.Log.Get(id1);

            if (prelog != null)
            {
                var      repo = sitedb.GetRepository(prelog.StoreName);
                LogEntry nextlog;
                if (id2 == -1)
                {
                    nextlog   = sitedb.Log.Store.Where(o => o.KeyHash == prelog.KeyHash && o.StoreNameHash == prelog.StoreNameHash).OrderByDescending().FirstOrDefault();
                    model.Id2 = nextlog.Id;
                }
                else
                {
                    nextlog = sitedb.Log.Get(id2);
                }

                ISiteObject itemone = repo.GetByLog(prelog);
                ISiteObject itemtwo = null;
                if (nextlog.EditType != EditType.Delete)
                {
                    itemtwo = repo.GetByLog(nextlog);
                }

                model.Title1 = itemone.Name;
                model.Title2 = itemtwo != null ? itemtwo.Name : string.Empty;
                if (itemone is Image)
                {
                    string baseurl = call.WebSite.BaseUrl();

                    string url1 = (Sites.Systems.Routes.SystemRouteTemplate.Replace("{objecttype}", repo.ModelType.Name).Replace("{nameorid}", prelog.Id.ToString()));
                    string url2 = Sites.Systems.Routes.SystemRouteTemplate.Replace("{objecttype}", repo.ModelType.Name).Replace("{nameorid}", nextlog.Id.ToString());

                    model.DataType = VersionDataType.Image;
                    model.Source1  = Kooboo.Lib.Helper.UrlHelper.Combine(baseurl, url1);

                    model.Source2 = Kooboo.Lib.Helper.UrlHelper.Combine(baseurl, url2);
                }
                else
                {
                    model.Source1  = Sites.Service.ObjectService.GetSummaryText(itemone);
                    model.Source2  = Sites.Service.ObjectService.GetSummaryText(itemtwo);
                    model.DataType = VersionDataType.String;
                }
            }
            return(model);
        }
Exemple #16
0
        public static void DefaultRender(FrontContext context, byte ConstType, string objectType, string NameOrId, Dictionary <string, string> Parameters)
        {
            var modeltype = Service.ConstTypeService.GetModelType(ConstType);

            if (modeltype == null)
            {
                SpecialRender(context, ConstType, objectType, NameOrId, Parameters);
            }
            else
            {
                var repo = context.SiteDb.GetRepository(modeltype);

                ISiteObject siteobject = null;
                siteobject = repo?.GetByNameOrId(NameOrId) as ISiteObject;

                if (siteobject == null)
                {
                    long logid = -1;

                    if (long.TryParse(NameOrId, out logid))
                    {
                        var logentry = context.SiteDb.Log.Get(logid);
                        siteobject = repo.GetByLog(logentry) as ISiteObject;
                    }
                }

                if (siteobject != null)
                {
                    var contenttype = Service.ConstTypeService.GetContentType(ConstType);
                    context.RenderContext.Response.ContentType = contenttype;

                    if (siteobject is ITextObject)
                    {
                        context.RenderContext.Response.ContentType += ";charset=utf-8";
                        var textobject = siteobject as ITextObject;
                        context.RenderContext.Response.Body = DataConstants.DefaultEncoding.GetBytes(textobject.Body);
                    }
                    else if (siteobject is IBinaryFile)
                    {
                        var binary = siteobject as IBinaryFile;
                        context.RenderContext.Response.Body = binary.ContentBytes;
                    }
                    else
                    {
                        context.RenderContext.Response.ContentType += ";charset=utf-8";
                        var json = Lib.Helper.JsonHelper.Serialize(siteobject);
                        context.RenderContext.Response.Body = DataConstants.DefaultEncoding.GetBytes(json);
                    }
                }
            }
        }
Exemple #17
0
 public void AddOrUpdate(ISiteObject siteobject)
 {
     if (this.IndexType.Contains(siteobject.ConstType))
     {
         string meta = GetMetaKey(siteobject);
         string body = GetBody(siteobject);
         if (!string.IsNullOrWhiteSpace(body))
         {
             this.IndexData.AddOrUpdate(meta, body);
         }
         else
         {
             this.Delete(siteobject);
         }
     }
 }
Exemple #18
0
        public static Sync.SyncObject ToSyncObject(ISiteObject SiteObject)
        {
            if (SiteObject == null)
            {
                return(null);
            }

            SyncObject SyncObj = new SyncObject();

            SyncObj.ObjectId        = SiteObject.Id;
            SyncObj.ObjectConstType = SiteObject.ConstType;

            SyncObj.JsonData = Lib.Helper.JsonHelper.Serialize(SiteObject);

            return(SyncObj);
        }
Exemple #19
0
        private static string GetRelatetionByType(SiteDb sitedb, ISiteObject item, byte type)
        {
            var           relations       = sitedb.Relations.GetReferredBy(item as SiteObject, type);
            StringBuilder responseMessage = new StringBuilder();

            foreach (var jitem in relations)
            {
                Guid   id       = jitem.objectXId;
                string typeName = "";
                var    obj      = GetSiteObject(sitedb, type, id, ref typeName);

                if (obj != null)
                {
                    //ToDo rewrite
                    var url = string.Format("/_Admin/Development/{2}?SiteId={0}&Id={1}", sitedb.Id, obj.Id, typeName);
                    responseMessage.AppendFormat("<a href='{0}' target='_blank'>{1}</a> ", url, obj.Name);
                }
            }
            return(responseMessage.ToString());
        }
Exemple #20
0
        public string SyncToDisk(SiteDb SiteDb, ISiteObject Value, ChangeType ChangeType, string StoreName)
        {
            if (Attributes.AttributeHelper.IsDiskable(Value) && !IsEmbedded(Value) && !string.IsNullOrEmpty(StoreName))
            {
                var    value       = Value as ISiteObject;
                string relativeurl = DiskPathService.GetObjectRelativeUrl(value, SiteDb, StoreName);

                if (!string.IsNullOrEmpty(relativeurl))
                {
                    string fullpath = DiskPathService.GetFullDiskPath(SiteDb.WebSite, relativeurl);

                    if (ChangeType == ChangeType.Delete)
                    {
                        if (File.Exists(fullpath))
                        {
                            this.Delete(fullpath);
                            DiskSyncLog.DiskLogManager.Delete(fullpath, SiteDb.Id);
                            return(fullpath);
                        }
                    }

                    else
                    {
                        var coreobject = value as ICoreObject;

                        if (coreobject != null)
                        {
                            var contentbytes = DiskObjectConverter.ToBytes(SiteDb, value);

                            this.WriteBytes(fullpath, contentbytes);

                            DiskSyncLog.DiskLogManager.Add(fullpath, SiteDb.Id);

                            return(fullpath);
                        }
                    }
                }
            }

            return(null);
        }
Exemple #21
0
        public static DiskType GetDiskType(ISiteObject ModelItem)
        {
            var allattributes = ModelItem.GetType().GetCustomAttributes(false);

            foreach (var item in allattributes)
            {
                if (item is Diskable)
                {
                    var disktable = item as Diskable;

                    if (disktable.DiskType == DiskType.Binary)
                    {
                        if (ModelItem is IBinaryFile)
                        {
                            return(DiskType.Binary);
                        }
                        else
                        {
                            return(DiskType.Json);
                        }
                    }

                    if (disktable.DiskType == DiskType.Text)
                    {
                        if (ModelItem is ITextObject)
                        {
                            return(DiskType.Text);
                        }
                        else
                        {
                            return(DiskType.Json);
                        }
                    }

                    return(disktable.DiskType);
                }
            }
            return(DiskType.Json);
        }
Exemple #22
0
        public static string GetObjectRelativeUrl(ISiteObject siteobject, SiteDb sitedb, string StoreName = null)
        {
            if (siteobject == null)
            {
                return(null);
            }

            if (Attributes.AttributeHelper.IsRoutable(siteobject))
            {
                return(sitedb.Routes.GetObjectPrimaryRelativeUrl(siteobject.Id));
            }
            else
            {
                string typepath = string.IsNullOrEmpty(StoreName) ? siteobject.GetType().Name : StoreName;
                string name     = Attributes.AttributeHelper.IsNameAsId(siteobject) ? siteobject.Name : siteobject.Id.ToString();

                string extension = DefaultExtension;
                if (siteobject is IExtensionable)
                {
                    var extensionboject = siteobject as IExtensionable;
                    if (!string.IsNullOrEmpty(extensionboject.Extension))
                    {
                        extension = extensionboject.Extension;
                    }
                }
                if (!extension.StartsWith("."))
                {
                    extension = "." + extension;
                }

                if (!name.ToLower().EndsWith(extension))
                {
                    name = name + extension;
                }

                return("/" + PathPrefix + "/" + typepath + "/" + name);
            }
        }
Exemple #23
0
        public CodeResult GetDisplayInfo(List <FindResult> finds, SiteDb sitedb, ISiteObject item)
        {
            CodeResult model = new CodeResult();

            model.Id = item.Id;
            var info = Kooboo.Sites.Service.ObjectService.GetObjectInfo(sitedb, item);

            if (info != null)
            {
                model.Type  = info.ModelType.Name;
                model.Name  = info.DisplayName;
                model.Lines = finds;
                // Edit URL.
                model.Url = Kooboo.Sites.Service.ObjectService.GetEditRoute(item, sitedb);
            }
            else
            {
                model.Name  = item.Name;
                model.Lines = finds;
            }

            return(model);
        }
Exemple #24
0
        public bool CheckAssignObject(ref ISiteObject SiteObject, byte[] DiskBytes)
        {
            var modeltype      = SiteObject.GetType();
            var SerializerType = Attributes.AttributeHelper.GetDiskType(modeltype);

            if (SerializerType == Kooboo.Attributes.DiskType.Binary)
            {
                var binaryfile = SiteObject as IBinaryFile;
                if (DiskBytes == null || IOHelper.IsEqualBytes(binaryfile.ContentBytes, DiskBytes))
                {
                    return(false);
                }
                binaryfile.ContentBytes = DiskBytes;
            }
            else if (SerializerType == Kooboo.Attributes.DiskType.Text)
            {
                var    textfile = SiteObject as ITextObject;
                string textbody = System.Text.Encoding.UTF8.GetString(DiskBytes);
                if (StringHelper.IsSameValue(textbody, textfile.Body))
                {
                    return(false);
                }
                textfile.Body = textbody;
            }
            else
            {
                string fulltext      = System.Text.Encoding.UTF8.GetString(DiskBytes);
                var    generatedbody = Lib.Helper.JsonHelper.Serialize(SiteObject);

                if (StringHelper.IsSameValue(generatedbody, fulltext))
                {
                    return(false);
                }
                SiteObject = JsonHelper.Deserialize(fulltext, modeltype) as ISiteObject;
            }
            return(true);
        }
Exemple #25
0
        public static ObjectInfo GetObjectInfo(SiteDb SiteDb, ISiteObject siteobject)
        {
            if (siteobject == null)
            {
                return(null);
            }
            ObjectInfo info = new ObjectInfo();

            info.ObjectId  = siteobject.Id;
            info.ConstType = siteobject.ConstType;

            if (info.ConstType > 0)
            {
                info.ModelType = ConstTypeService.GetModelType(siteobject.ConstType);
            }

            if (info.ModelType == null)
            {
                info.ModelType = siteobject.GetType();
            }

            if (siteobject is IBinaryFile)
            {
                info.Size = ((IBinaryFile)siteobject).Size;
            }
            else if (siteobject is ITextObject)
            {
                info.Size = (((ITextObject)siteobject).Body ?? "").Length;
            }


            if (Kooboo.Lib.Reflection.TypeHelper.HasInterface(info.ModelType, typeof(IEmbeddable)))
            {
                var embeddable = siteobject as IEmbeddable;
                if (embeddable.IsEmbedded)
                {
                    return(GetObjectInfo(SiteDb, embeddable.OwnerObjectId, embeddable.OwnerConstType));
                }
            }

            if (Kooboo.Sites.Service.ObjectService.IsRoutable(siteobject, false))
            {
                info.Url         = GetObjectRelativeUrl(SiteDb, siteobject as SiteObject);
                info.DisplayName = info.Url;
                info.Name        = siteobject.Name;
                return(info);
            }
            else
            {
                if (info.ModelType == typeof(CmsCssRule))
                {
                    var rule = siteobject as CmsCssRule;
                    if (rule == null)
                    {
                        return(null);
                    }
                    if (rule.IsInline)
                    {
                        return(GetObjectInfo(SiteDb, rule.OwnerObjectId, rule.OwnerObjectConstType));
                    }
                    else
                    {
                        return(GetObjectInfo(SiteDb, rule.ParentStyleId, ConstObjectType.Style));
                    }
                }

                info.Url         = "/__kb/" + info.ModelType.Name + "/" + info.ObjectId.ToString();
                info.DisplayName = siteobject.Name;
                info.Name        = siteobject.Name;

                if (info.ModelType == typeof(TextContent))
                {
                    info.Name        = Kooboo.Sites.Helper.ContentHelper.GetSummary(siteobject as TextContent, SiteDb.WebSite.DefaultCulture);
                    info.DisplayName = info.Name;
                }

                if (info.ModelType == typeof(DataMethodSetting))
                {
                    var datamethod = siteobject as DataMethodSetting;
                    if (datamethod != null)
                    {
                        info.Name        = datamethod.OriginalMethodName;
                        info.DisplayName = datamethod.OriginalMethodName;
                    }
                }

                return(info);
            }
        }
Exemple #26
0
        public static string SyncToDisk(SiteDb SiteDb, ISiteObject Value, ChangeType ChangeType, string StoreName)
        {
            var manager = new SyncManager(SiteDb.WebSite.Id);

            return(manager.SyncToDisk(SiteDb, Value, ChangeType, StoreName));
        }
Exemple #27
0
 public static bool IsRoutable(ISiteObject item, bool IncludeCode = true)
 {
     return(IsRoutable(item.GetType(), IncludeCode));
 }
Exemple #28
0
        public static void DeleteComponentFromSource(SiteDb sitedb, ISiteObject value)
        {
            if (value is IEmbeddable)
            {
                var embed = value as IEmbeddable;
                if (embed.IsEmbedded)
                {
                    // embedded handled by update source.
                    return;
                }
            }

            var com = Kooboo.Sites.Render.Components.Container.GetByConstType(value.ConstType);

            if (com != null)
            {
                var relations = sitedb.Relations.GetReferredByRelations(value.Id);

                if (relations != null && relations.Count > 0)
                {
                    foreach (var relation in relations)
                    {
                        var repo = sitedb.GetRepository(relation.ConstTypeX);

                        var UseObject = repo.Get(relation.objectXId);

                        if (UseObject != null)
                        {
                            if (UseObject is IDomObject)
                            {
                                var domobject = UseObject as IDomObject;
                                if (domobject != null)
                                {
                                    List <SourceUpdate> updates = new List <SourceUpdate>();

                                    var el = domobject.Dom.getElementsByTagName(com.TagName);

                                    foreach (var item in el.item)
                                    {
                                        if (!string.IsNullOrEmpty(com.StoreEngineName))
                                        {
                                            var engine = item.getAttribute("engine");
                                            if (!Lib.Helper.StringHelper.IsSameValue(engine, com.StoreEngineName))
                                            {
                                                continue;
                                            }
                                        }

                                        if (Lib.Helper.StringHelper.IsSameValue(item.id, value.Name))
                                        {
                                            updates.Add(new SourceUpdate()
                                            {
                                                StartIndex = item.location.openTokenStartIndex, EndIndex = item.location.endTokenEndIndex
                                            });
                                        }
                                    }

                                    string newbody = Service.DomService.UpdateSource(domobject.Body, updates);
                                    domobject.Body = newbody;
                                    repo.AddOrUpdate(domobject);
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #29
0
        internal string GetMetaKey(ISiteObject siteobject)
        {
            string metaname = Service.ConstTypeService.GetModelType(siteobject.ConstType).Name;

            return(new MetaIndex(metaname, siteobject.Id).ToString());
        }
Exemple #30
0
 private bool ShouldIndex(ISiteObject siteobject)
 {
     return(this.IndexType.Contains(siteobject.ConstType));
 }