Esempio n. 1
0
        public override void WithResolvingModelHost(object modelHost, DefinitionBase model, Type childModelType, Action <object> action)
        {
            var folderModelHost = modelHost.WithAssertAndCast <FolderModelHost>("modelHost", value => value.RequireNotNull());
            var wikiPageModel   = model.WithAssertAndCast <WikiPageDefinition>("model", value => value.RequireNotNull());

            var folder = folderModelHost.CurrentLibraryFolder;

            var targetPage = FindWikiPageItem(folder, wikiPageModel);

            ModuleFileModelHandler.WithSafeFileOperation(folderModelHost.CurrentLibrary, folder,
                                                         targetPage.Url,
                                                         GetWikiPageName(wikiPageModel),
                                                         Encoding.UTF8.GetBytes(PublishingPageTemplates.RedirectionPageMarkup),
                                                         false,
                                                         null,
                                                         afterFile =>
            {
                using (var webPartManager = afterFile.GetLimitedWebPartManager(PersonalizationScope.Shared))
                {
                    var webpartPageHost = new WebpartPageModelHost
                    {
                        HostFile                = afterFile,
                        PageListItem            = targetPage,
                        SPLimitedWebPartManager = webPartManager
                    };

                    action(webpartPageHost);

                    // targetPage.Update();
                }
            });
        }
Esempio n. 2
0
        private void DeployPage(object modelHost, SPList list, SPFolder folder, MasterPageDefinition definition)
        {
            var web        = list.ParentWeb;
            var targetPage = GetCurrentObject(folder, definition);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = targetPage == null ? null : targetPage.File,
                ObjectType       = typeof(SPFile),
                ObjectDefinition = definition,
                ModelHost        = modelHost
            });

            if (targetPage == null)
            {
                targetPage = CreateObject(modelHost, folder, definition);
            }

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = targetPage.File,
                ObjectType       = typeof(SPFile),
                ObjectDefinition = definition,
                ModelHost        = modelHost
            });

            ModuleFileModelHandler.WithSafeFileOperation(list, folder,
                                                         targetPage.Url,
                                                         GetSafePageFileName(definition),
                                                         definition.Content,
                                                         definition.NeedOverride,
                                                         null,
                                                         afterFile =>
            {
                var pageItem = afterFile.Properties;

                //pageItem[BuiltInInternalFieldNames.Title] = definition.Title;
                pageItem["vti_title"]             = definition.Title;
                pageItem["MasterPageDescription"] = definition.Description;
                pageItem[BuiltInInternalFieldNames.ContentTypeId] = BuiltInContentTypeId.MasterPage;

                if (definition.UIVersion.Count > 0)
                {
                    var value = new SPFieldMultiChoiceValue();

                    foreach (var v in definition.UIVersion)
                    {
                        value.Add(v);
                    }

                    pageItem["UIVersion"] = value.ToString();
                }

                pageItem["DefaultCssFile"] = definition.DefaultCSSFile;

                //pageItem.Update();

                //pageItem.SystemUpdate();
            });
        }