Beispiel #1
0
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var item = (reverseHost as SecurityRoleReverseHost).HostRole;

            var def = new SecurityRoleDefinition();

            def.Name        = item.Name;
            def.Description = item.Description;

            var allPermissionNames = Enum.GetNames(typeof(PermissionKind));

            foreach (var permissionName in allPermissionNames)
            {
                var permissionValue = (PermissionKind)Enum.Parse(typeof(PermissionKind), permissionName, true);

                if (item.BasePermissions.Has(permissionValue))
                {
                    if (permissionValue != PermissionKind.EmptyMask)
                    {
                        def.BasePermissions.Add(permissionName);
                    }
                }
            }

            return(new SecurityRoleModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var typedHost = (reverseHost as ListReverseHost);
            var item      = typedHost.HostList;

            var listContentTypes = item.ContentTypes.ToArray();

            var def = new UniqueContentTypeOrderDefinition();

            if (item.RootFolder.UniqueContentTypeOrder != null)
            {
                foreach (var ct in item.RootFolder.UniqueContentTypeOrder.ToArray())
                {
                    var sourceContentType = listContentTypes.FirstOrDefault(c => c.StringId == ct.StringValue);

                    if (sourceContentType == null)
                    {
                        throw new SPMeta2ReverseException(
                                  string.Format("Cannot find list content type by ID:[{0}]", ct.StringValue));
                    }

                    def.ContentTypes.Add(new ContentTypeLinkValue
                    {
                        ContentTypeName = sourceContentType.Name
                    });
                }
            }

            return(new UniqueContentTypeOrderModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var item    = (reverseHost as WebPartPageReverseHost).HostWebPartPageFile;
            var context = (reverseHost as WebPartPageReverseHost).HostClientContext;

            var def = new WebPartPageDefinition();

            def.FileName = item.Name;
            def.Title    = item.Title;

            // always reverse to CustomPageLayout
            // we don't know what is the content of the web part page
            using (var stream = File.OpenBinaryDirect(
                       context,
                       item.ServerRelativeUrl).Stream)
            {
                def.CustomPageLayout = Encoding.UTF8.GetString(ModuleFileUtils.ReadFully(stream));
            }

            def.NeedOverride = true;

            return(new WebPartPageModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var modelNode = new SiteModelNode
            {
                Options = { RequireSelfProcessing = false },
                Value   = new SiteDefinition()
            };

            return(modelNode);
        }
        public virtual List <ReverseFilterOption> FindReverseFileters(ReverseOptions options, Type definitionType)
        {
            var filters = options.Options.Where(o =>
                                                o.DefinitionClassFullName == definitionType.FullName &&
                                                o is ReverseFilterOption)
                          .Select(s => s as ReverseFilterOption)
                          .ToList();

            return(filters);
        }
        public override ReverseResult Reverse(object modelHost, ReverseOptions options)
        {
            if (!(modelHost is SiteReverseHost) &&
                !(modelHost is WebReverseHost))
            {
                throw new Exception("modelHost should be either SiteReverseHost or WebReverseHost");
            }

            return(ReverseInternal(modelHost, options));
        }
Beispiel #7
0
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var typedReverseHost = (reverseHost as FeatureReverseHost);
            var item             = typedReverseHost.Feature;

            FeatureDefinition knownFeature = null;

            if (item != null)
            {
                knownFeature = typedReverseHost.AllKnownFeatures
                               .FirstOrDefault(f => f.Id == item.DefinitionId);
            }
            else
            {
                knownFeature = typedReverseHost.AllKnownFeatures
                               .FirstOrDefault(f => f.Id == typedReverseHost.FeatureId);
            }

            if (knownFeature == null)
            {
                // TODO, warning in logs
                // better register a known feature
            }

            var def = new FeatureDefinition();

            if (typedReverseHost.IsSiteLevel)
            {
                def.Scope = FeatureDefinitionScope.Site;
            }

            if (typedReverseHost.IsWebLevel)
            {
                def.Scope = FeatureDefinitionScope.Web;
            }

            if (item != null)
            {
                def.Id     = item.DefinitionId;
                def.Enable = true;
            }
            else
            {
                def.Id     = typedReverseHost.FeatureId;
                def.Enable = false;
            }

            def.Title = knownFeature != null ? knownFeature.Title : def.Id.ToString();

            return(new FeatureModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var item = (reverseHost as TaxonomyFieldReverseHost).HostTaxonomyField;

            var def = new TaxonomyFieldDefinition();

            // TODO
            //def.Name = item.Name;

            return(new TaxonomyFieldModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
Beispiel #9
0
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var typedHost = (reverseHost as ContentTypeLinkReverseHost);
            var item      = typedHost.HostContentType;

            var def = new ContentTypeLinkDefinition();

            def.ContentTypeName = item.Name;

            return(new ContentTypeLinkModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
        protected virtual ReverseResult ReverseInternal(object modelHost, ReverseOptions options)
        {
            var result = new ReverseResult();

            var context = new ReverseContext
            {
                ReverseOptions = options,
                ReverseHost    = modelHost as ReverseHostBase
            };

            ReverseModel(context);

            result.Model = context.RootModelNode;

            return(result);
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var item      = (reverseHost as PropertyReverseHost).HostPropertyName;
            var itemValue = (reverseHost as PropertyReverseHost).HostPropertyValue;

            var def = new PropertyDefinition();

            def.Key   = item;
            def.Value = itemValue;

            def.Overwrite = true;

            return(new PropertyModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var web  = (reverseHost as ListReverseHost).HostWeb;
            var item = (reverseHost as ListReverseHost).HostList;

            var def = new ListDefinition();

            def.Title       = item.Title;
            def.Description = item.Description;

            var listServerRelativeUrl = item.RootFolder.ServerRelativeUrl;

            if (!web.IsObjectPropertyInstantiated("ServerRelativeUrl"))
            {
                web.Context.Load(web, w => w.ServerRelativeUrl);
                web.Context.ExecuteQueryWithTrace();
            }

            var webServerRelativeUrl = web.ServerRelativeUrl;

            var listWebRelativeUrl = listServerRelativeUrl;

            // roort web / ?
            if (webServerRelativeUrl.Length > 1)
            {
                listWebRelativeUrl = listServerRelativeUrl.Replace(webServerRelativeUrl, string.Empty);
            }

            def.CustomUrl = UrlUtility.RemoveStartingSlash(listWebRelativeUrl);

            // TODO, fix for lists based on custom list templates
            def.TemplateType = item.BaseTemplate;

            def.ContentTypesEnabled = item.ContentTypesEnabled;

            def.Hidden = item.Hidden;
            //def.OnQuickLaunch = item.OnQuickLaunch;

            return(new ListModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var typedHost = (reverseHost as TaxonomyTermGroupReverseHost);
            var item      = typedHost.HostTermGroup;

            var def = new TaxonomyTermGroupDefinition();

            def.Id   = item.Id;
            def.Name = item.Name;

            // TODO, M2
            // https://github.com/SubPointSolutions/spmeta2/issues/827
            //def.Descrption = item.Description;

            return(new TaxonomyTermGroupModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
Beispiel #14
0
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var typedHost = (reverseHost as TaxonomyTermReverseHost);
            var item      = typedHost.HostTerm;

            var def = new TaxonomyTermDefinition();

            def.Id = item.Id;

            def.Name        = item.Name;
            def.Description = item.Description;


            def.IsAvailableForTagging = item.IsAvailableForTagging;

            return(new TaxonomyTermModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
Beispiel #15
0
        public override IEnumerable <ReverseHostBase> ReverseHosts(
            ReverseHostBase parentHost, ReverseOptions options)
        {
            var result = new List <TaxonomyTermSetReverseHost>();

            var typedHost = parentHost.WithAssertAndCast <TaxonomyTermGroupReverseHost>("reverseHost", value => value.RequireNotNull());

            var context = typedHost.HostClientContext;

            var site = typedHost.HostSite;

            TermCollection items = null;

            if (parentHost is TaxonomyTermReverseHost)
            {
                items = (parentHost as TaxonomyTermReverseHost).HostTerm.Terms;
            }
            else if (parentHost is TaxonomyTermSetReverseHost)
            {
                items = (parentHost as TaxonomyTermSetReverseHost).HostTermSet.Terms;
            }
            else
            {
                throw new SPMeta2ReverseException(
                          string.Format("Unsupported host:[{0}]", parentHost.GetType()));
            }

            context.Load(items);
            context.ExecuteQueryWithTrace();

            result.AddRange(ApplyReverseFilters(items, options).ToArray().Select(i =>
            {
                return(ModelHostBase.Inherit <TaxonomyTermReverseHost>(parentHost, h =>
                {
                    h.HostTerm = i;
                }));
            }));

            return(result);
        }