本文整理汇总了C#中Web.IsPropertyAvailable方法的典型用法代码示例。如果您正苦于以下问题:C# Web.IsPropertyAvailable方法的具体用法?C# Web.IsPropertyAvailable怎么用?C# Web.IsPropertyAvailable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Web
的用法示例。
在下文中一共展示了Web.IsPropertyAvailable方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RemovePublishingPage
private static void RemovePublishingPage(SPPublishing.PublishingPage publishingPage, PublishingPage page, ClientContext ctx, Web web)
{
if (publishingPage != null && publishingPage.ServerObjectIsNull.Value == false)
{
if (!web.IsPropertyAvailable("RootFolder"))
{
web.Context.Load(web.RootFolder);
web.Context.ExecuteQueryRetry();
}
if (page.Overwrite)
{
if (page.WelcomePage && web.RootFolder.WelcomePage.Contains(page.FileName + ".aspx"))
{
//set the welcome page to a Temp page to allow remove the page
web.RootFolder.WelcomePage = "home.aspx";
web.RootFolder.Update();
web.Update();
ctx.Load(publishingPage);
ctx.ExecuteQuery();
}
publishingPage.ListItem.DeleteObject();
ctx.ExecuteQuery();
}
else
{
return;
}
}
}
示例2: ProvisionObjects
public override void ProvisionObjects(Web web, ProvisioningTemplate template)
{
TokenParser parser = new TokenParser(web);
var context = web.Context as ClientContext;
if (!web.IsPropertyAvailable("ServerRelativeUrl"))
{
context.Load(web, w => w.ServerRelativeUrl);
context.ExecuteQuery();
}
foreach (var file in template.Files)
{
var folderName = parser.Parse(file.Folder);
if (folderName.ToLower().StartsWith((web.ServerRelativeUrl.ToLower())))
{
folderName = folderName.Substring(web.ServerRelativeUrl.Length);
}
var folder = web.EnsureFolderPath(folderName);
using (var stream = template.Connector.GetFileStream(file.Src))
{
folder.UploadFile(file.Src, stream, true);
}
}
}
示例3: GetPropertyBagValue
public static object GetPropertyBagValue(Web web, string key)
{
var context = web.Context;
if (!web.IsPropertyAvailable("AllProperties"))
{
context.Load(web);
context.Load(web, w => w.AllProperties);
context.ExecuteQueryWithTrace();
}
if (!web.AllProperties.FieldValues.ContainsKey(key))
return null;
else
return web.AllProperties[key];
}
示例4: SetPropertyBagValue
public static void SetPropertyBagValue(Web web, string key, string value)
{
var context = web.Context;
if (!web.IsPropertyAvailable("AllProperties"))
{
context.Load(web);
context.Load(web, w => w.AllProperties);
context.ExecuteQueryWithTrace();
}
// weird, this is incorrect
// https://lixuan0125.wordpress.com/2013/10/18/add-and-retrieve-property-bag-by-csom/
// if (!web.AllProperties.FieldValues.ContainsKey(key))
// web.AllProperties.FieldValues.Add(key, value);
//else
web.AllProperties[key] = value;
web.Update();
context.ExecuteQueryWithTrace();
}
示例5: ProvisionObjects
public override TokenParser ProvisionObjects(Web web, ProvisioningTemplate template, TokenParser parser, ProvisioningTemplateApplyingInformation applyingInformation)
{
using (var scope = new PnPMonitoredScope(CoreResources.Provisioning_ObjectHandlers_ListInstances))
{
if (template.Lists.Any())
{
var rootWeb = (web.Context as ClientContext).Site.RootWeb;
if (!web.IsPropertyAvailable("ServerRelativeUrl"))
{
web.Context.Load(web, w => w.ServerRelativeUrl);
web.Context.ExecuteQueryRetry();
}
web.Context.Load(web.Lists, lc => lc.IncludeWithDefaultProperties(l => l.RootFolder.ServerRelativeUrl));
web.Context.ExecuteQueryRetry();
var existingLists = web.Lists.AsEnumerable().Select(existingList => existingList.RootFolder.ServerRelativeUrl).ToList();
var serverRelativeUrl = web.ServerRelativeUrl;
var processedLists = new List<ListInfo>();
#region Lists
foreach (var templateList in template.Lists)
{
var index = existingLists.FindIndex(x => x.Equals(UrlUtility.Combine(serverRelativeUrl, templateList.Url), StringComparison.OrdinalIgnoreCase));
if (index == -1)
{
try
{
scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_ListInstances_Creating_list__0_, templateList.Title);
var returnTuple = CreateList(web, templateList, parser, scope);
var createdList = returnTuple.Item1;
parser = returnTuple.Item2;
processedLists.Add(new ListInfo { SiteList = createdList, TemplateList = templateList });
parser.AddToken(new ListIdToken(web, templateList.Title, createdList.Id));
parser.AddToken(new ListUrlToken(web, templateList.Title, createdList.RootFolder.ServerRelativeUrl.Substring(web.ServerRelativeUrl.Length + 1)));
}
catch (Exception ex)
{
scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_ListInstances_Creating_list__0__failed___1_____2_, templateList.Title, ex.Message, ex.StackTrace);
throw;
}
}
else
{
try
{
scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_ListInstances_Updating_list__0_, templateList.Title);
var existingList = web.Lists[index];
var returnTuple = UpdateList(web, existingList, templateList, parser, scope);
var updatedList = returnTuple.Item1;
parser = returnTuple.Item2;
if (updatedList != null)
{
processedLists.Add(new ListInfo { SiteList = updatedList, TemplateList = templateList });
}
}
catch (Exception ex)
{
scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_ListInstances_Updating_list__0__failed___1_____2_, templateList.Title, ex.Message, ex.StackTrace);
throw;
}
}
}
#endregion
#region FieldRefs
foreach (var listInfo in processedLists)
{
if (listInfo.TemplateList.FieldRefs.Any())
{
foreach (var fieldRef in listInfo.TemplateList.FieldRefs)
{
var field = rootWeb.GetFieldById<Field>(fieldRef.Id);
if (field != null)
{
if (!listInfo.SiteList.FieldExistsById(fieldRef.Id))
{
CreateFieldRef(listInfo, field, fieldRef);
}
else
{
UpdateFieldRef(listInfo.SiteList, field.Id, fieldRef);
}
}
}
listInfo.SiteList.Update();
web.Context.ExecuteQueryRetry();
}
}
#endregion
//.........这里部分代码省略.........
示例6: Initialize
public static void Initialize(Web web, ProvisioningTemplate template)
{
if (!web.IsPropertyAvailable("ServerRelativeUrl"))
{
web.Context.Load(web, w => w.ServerRelativeUrl);
web.Context.ExecuteQueryRetry();
}
_web = web;
_tokens = new List<TokenDefinition>();
_tokens.Add(new SiteCollectionToken(web));
_tokens.Add(new SiteToken(web));
_tokens.Add(new MasterPageCatalogToken(web));
_tokens.Add(new SiteCollectionTermStoreIdToken(web));
_tokens.Add(new KeywordsTermStoreIdToken(web));
_tokens.Add(new ThemeCatalogToken(web));
// Add lists
web.Context.Load(web.Lists, ls => ls.Include(l => l.Id, l => l.Title, l => l.RootFolder.ServerRelativeUrl));
web.Context.ExecuteQueryRetry();
foreach (var list in web.Lists)
{
_tokens.Add(new ListIdToken(web, list.Title, list.Id));
_tokens.Add(new ListUrlToken(web, list.Title, list.RootFolder.ServerRelativeUrl.Substring(web.ServerRelativeUrl.Length + 1)));
}
// Add parameters
foreach (var parameter in template.Parameters)
{
_tokens.Add(new ParameterToken(web, parameter.Key, parameter.Value));
}
// Add TermSetIds
TaxonomySession session = TaxonomySession.GetTaxonomySession(web.Context);
var termStore = session.GetDefaultSiteCollectionTermStore();
web.Context.Load(termStore);
web.Context.ExecuteQueryRetry();
if (!termStore.ServerObjectIsNull.Value)
{
web.Context.Load(termStore.Groups,
g => g.Include(
tg => tg.Name,
tg => tg.TermSets.Include(
ts => ts.Name,
ts => ts.Id)
));
web.Context.ExecuteQueryRetry();
foreach (var termGroup in termStore.Groups)
{
foreach (var termSet in termGroup.TermSets)
{
_tokens.Add(new TermSetIdToken(web, termGroup.Name, termSet.Name, termSet.Id));
}
}
}
var sortedTokens = from t in _tokens
orderby t.GetTokenLength() descending
select t;
_tokens = sortedTokens.ToList();
}
示例7: ProvisionObjects
public override void ProvisionObjects(Web web, ProvisioningTemplate template)
{
Log.Info(Constants.LOGGING_SOURCE_FRAMEWORK_PROVISIONING, CoreResources.Provisioning_ObjectHandlers_ListInstances);
if (template.Lists.Any())
{
var rootWeb = (web.Context as ClientContext).Site.RootWeb;
if (!web.IsPropertyAvailable("ServerRelativeUrl"))
{
web.Context.Load(web, w => w.ServerRelativeUrl);
web.Context.ExecuteQueryRetry();
}
web.Context.Load(web.Lists, lc => lc.IncludeWithDefaultProperties(l => l.RootFolder.ServerRelativeUrl));
web.Context.ExecuteQueryRetry();
var existingLists = web.Lists.AsEnumerable<List>().Select(existingList => existingList.RootFolder.ServerRelativeUrl).ToList();
var serverRelativeUrl = web.ServerRelativeUrl;
var createdLists = new List<ListInfo>();
#region Lists
foreach (var list in template.Lists)
{
if (existingLists.FindIndex(x => x.Equals(UrlUtility.Combine(serverRelativeUrl, list.Url), StringComparison.OrdinalIgnoreCase)) == -1)
{
var listCreate = new ListCreationInformation();
listCreate.Description = list.Description;
listCreate.TemplateType = list.TemplateType;
listCreate.Title = list.Title;
// the line of code below doesn't add the list to QuickLaunch
// the OnQuickLaunch property is re-set on the Created List object
listCreate.QuickLaunchOption = list.OnQuickLaunch ? QuickLaunchOptions.On : QuickLaunchOptions.Off;
listCreate.Url = list.Url.ToParsedString();
listCreate.TemplateFeatureId = list.TemplateFeatureID;
var createdList = web.Lists.Add(listCreate);
createdList.Update();
web.Context.Load(createdList, l => l.BaseTemplate);
web.Context.ExecuteQueryRetry();
if (!String.IsNullOrEmpty(list.DocumentTemplate))
{
createdList.DocumentTemplateUrl = list.DocumentTemplate.ToParsedString();
}
// EnableAttachments are not supported for DocumentLibraries and Surveys
// TODO: the user should be warned
if (createdList.BaseTemplate != (int)ListTemplateType.DocumentLibrary && createdList.BaseTemplate != (int)ListTemplateType.Survey)
{
createdList.EnableAttachments = list.EnableAttachments;
}
createdList.EnableModeration = list.EnableModeration;
createdList.EnableVersioning = list.EnableVersioning;
if (list.EnableVersioning)
{
createdList.MajorVersionLimit = list.MaxVersionLimit;
if (createdList.BaseTemplate == (int)ListTemplateType.DocumentLibrary)
{
// Only supported on Document Libraries
createdList.EnableMinorVersions = list.EnableMinorVersions;
createdList.DraftVersionVisibility = (DraftVisibilityType)list.DraftVersionVisibility;
// TODO: User should be notified that MinorVersionLimit and DraftVersionVisibility will not be applied
if (list.EnableMinorVersions)
{
createdList.MajorWithMinorVersionsLimit = list.MinorVersionLimit; // Set only if enabled, otherwise you'll get exception due setting value to zero.
// DraftVisibilityType.Approver is available only when the EnableModeration option of the list is true
if (DraftVisibilityType.Approver ==
(DraftVisibilityType)list.DraftVersionVisibility)
{
if (list.EnableModeration)
{
createdList.DraftVersionVisibility =
(DraftVisibilityType)list.DraftVersionVisibility;
}
else
{
// TODO: User should be notified that DraftVersionVisibility is not applied because .EnableModeration is false
}
}
else
{
createdList.DraftVersionVisibility = (DraftVisibilityType)list.DraftVersionVisibility;
}
}
}
}
createdList.OnQuickLaunch = list.OnQuickLaunch;
if (createdList.BaseTemplate != (int)ListTemplateType.DiscussionBoard)
{
createdList.EnableFolderCreation = list.EnableFolderCreation;
}
//.........这里部分代码省略.........
示例8: CreateEntities
public override ProvisioningTemplate CreateEntities(Web web, ProvisioningTemplate template, ProvisioningTemplateCreationInformation creationInfo)
{
var propertyLoadRequired = false;
if (!web.IsPropertyAvailable("ServerRelativeUrl"))
{
web.Context.Load(web, w => w.ServerRelativeUrl);
propertyLoadRequired = true;
}
if (!web.IsPropertyAvailable("Url"))
{
web.Context.Load(web, w => w.Url);
propertyLoadRequired = true;
}
if (propertyLoadRequired)
{
web.Context.ExecuteQueryRetry();
}
var serverRelativeUrl = web.ServerRelativeUrl;
// For each list in the site
ListCollection lists = web.Lists;
web.Context.Load(lists,
lc => lc.IncludeWithDefaultProperties(
l => l.ContentTypes,
l => l.Views,
l => l.OnQuickLaunch,
l => l.RootFolder.ServerRelativeUrl,
l => l.Fields.IncludeWithDefaultProperties(
f => f.Id,
f => f.Title,
f => f.Hidden,
f => f.InternalName,
f => f.Required)));
web.Context.ExecuteQuery();
foreach (var item in lists)
{
// Do not export system lists
if (!item.Hidden)
{
int index = -1;
if (creationInfo.BaseTemplate != null)
{
// Check if we need to skip this list...if so let's do it before we gather all the other information for this list...improves performance
index = creationInfo.BaseTemplate.Lists.FindIndex(f => f.Url.Equals(item.RootFolder.ServerRelativeUrl.Substring(serverRelativeUrl.Length + 1)) &&
f.TemplateType.Equals(item.BaseTemplate));
}
if (index == -1)
{
var contentTypeFields = new List<FieldRef>();
ListInstance list = new ListInstance();
list.Description = item.Description;
list.EnableVersioning = item.EnableVersioning;
list.TemplateType = item.BaseTemplate;
list.Title = item.Title;
list.Hidden = item.Hidden;
list.EnableFolderCreation = item.EnableFolderCreation;
list.DocumentTemplate = Tokenize(item.DocumentTemplateUrl, web.Url);
list.ContentTypesEnabled = item.ContentTypesEnabled;
list.Url = item.RootFolder.ServerRelativeUrl.Substring(serverRelativeUrl.Length).TrimStart('/');
list.TemplateFeatureID = item.TemplateFeatureId;
list.EnableAttachments = item.EnableAttachments;
list.OnQuickLaunch = item.OnQuickLaunch;
list.MaxVersionLimit = item.IsObjectPropertyInstantiated("MajorVersionLimit") ? item.MajorVersionLimit : 0;
list.EnableMinorVersions = item.EnableMinorVersions;
list.MinorVersionLimit = item.IsObjectPropertyInstantiated("MajorWithMinorVersionsLimit") ? item.MajorWithMinorVersionsLimit : 0;
int count = 0;
foreach (var ct in item.ContentTypes)
{
web.Context.Load(ct, c => c.Parent);
web.Context.ExecuteQuery();
if (ct.Parent != null)
{
// Add the parent to the list of content types
if (!BuiltInContentTypeId.Contains(ct.Parent.StringId))
{
list.ContentTypeBindings.Add(new ContentTypeBinding() { ContentTypeId = ct.Parent.StringId, Default = count == 0 ? true : false });
}
}
else
{
list.ContentTypeBindings.Add(new ContentTypeBinding() { ContentTypeId = ct.StringId, Default = count == 0 });
}
web.Context.Load(ct.FieldLinks);
web.Context.ExecuteQueryRetry();
foreach (var fieldLink in ct.FieldLinks)
{
if (!fieldLink.Hidden)
{
contentTypeFields.Add(new FieldRef() { Id = fieldLink.Id });
}
}
count++;
}
//.........这里部分代码省略.........
示例9: ProvisionObjects
public override TokenParser ProvisionObjects(Web web, ProvisioningTemplate template, TokenParser parser, ProvisioningTemplateApplyingInformation applyingInformation)
{
using (var scope = new PnPMonitoredScope(CoreResources.Provisioning_ObjectHandlers_Files))
{
var context = web.Context as ClientContext;
if (!web.IsPropertyAvailable("ServerRelativeUrl"))
{
context.Load(web, w => w.ServerRelativeUrl);
context.ExecuteQueryRetry();
}
foreach (var file in template.Files)
{
var folderName = parser.ParseString(file.Folder);
if (folderName.ToLower().StartsWith((web.ServerRelativeUrl.ToLower())))
{
folderName = folderName.Substring(web.ServerRelativeUrl.Length);
}
var folder = web.EnsureFolderPath(folderName);
File targetFile = null;
var checkedOut = false;
targetFile = folder.GetFile(template.Connector.GetFilenamePart(file.Src));
if (targetFile != null)
{
if (file.Overwrite)
{
scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_Files_Uploading_and_overwriting_existing_file__0_,file.Src);
checkedOut = CheckOutIfNeeded(web, targetFile);
using (var stream = template.Connector.GetFileStream(file.Src))
{
targetFile = folder.UploadFile(template.Connector.GetFilenamePart(file.Src), stream, file.Overwrite);
}
}
else
{
checkedOut = CheckOutIfNeeded(web, targetFile);
}
}
else
{
using (var stream = template.Connector.GetFileStream(file.Src))
{
scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_Files_Uploading_file__0_, file.Src);
targetFile = folder.UploadFile(template.Connector.GetFilenamePart(file.Src), stream, file.Overwrite);
}
checkedOut = CheckOutIfNeeded(web, targetFile);
}
if (targetFile != null)
{
if (file.Properties != null && file.Properties.Any())
{
Dictionary<string, string> transformedProperties = file.Properties.ToDictionary(property => property.Key, property => parser.ParseString(property.Value));
targetFile.SetFileProperties(transformedProperties, false); // if needed, the file is already checked out
}
if (file.WebParts != null && file.WebParts.Any())
{
if (!targetFile.IsPropertyAvailable("ServerRelativeUrl"))
{
web.Context.Load(targetFile, f => f.ServerRelativeUrl);
web.Context.ExecuteQuery();
}
var existingWebParts = web.GetWebParts(targetFile.ServerRelativeUrl);
foreach (var webpart in file.WebParts)
{
// check if the webpart is already set on the page
if (existingWebParts.FirstOrDefault(w => w.WebPart.Title == webpart.Title) == null)
{
scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_Files_Adding_webpart___0___to_page,webpart.Title);
var wpEntity = new WebPartEntity();
wpEntity.WebPartTitle = webpart.Title;
wpEntity.WebPartXml = parser.ParseString(webpart.Contents).Trim(new[] { '\n', ' ' });
wpEntity.WebPartZone = webpart.Zone;
wpEntity.WebPartIndex = (int)webpart.Order;
web.AddWebPartToWebPartPage(targetFile.ServerRelativeUrl, wpEntity);
}
}
}
if (checkedOut)
{
targetFile.CheckIn("", CheckinType.MajorCheckIn);
web.Context.ExecuteQueryRetry();
}
}
}
}
//.........这里部分代码省略.........
示例10: ExtractObjects
public override ProvisioningTemplate ExtractObjects(Web web, ProvisioningTemplate template, ProvisioningTemplateCreationInformation creationInfo)
{
using (var scope = new PnPMonitoredScope(CoreResources.Provisioning_ObjectHandlers_ListInstances))
{
var propertyLoadRequired = false;
if (!web.IsPropertyAvailable("ServerRelativeUrl"))
{
web.Context.Load(web, w => w.ServerRelativeUrl);
propertyLoadRequired = true;
}
if (!web.IsPropertyAvailable("Url"))
{
web.Context.Load(web, w => w.Url);
propertyLoadRequired = true;
}
if (propertyLoadRequired)
{
web.Context.ExecuteQueryRetry();
}
var serverRelativeUrl = web.ServerRelativeUrl;
// For each list in the site
var lists = web.Lists;
web.Context.Load(lists,
lc => lc.IncludeWithDefaultProperties(
l => l.ContentTypes,
l => l.Views,
l => l.OnQuickLaunch,
l => l.RootFolder.ServerRelativeUrl,
l => l.Fields.IncludeWithDefaultProperties(
f => f.Id,
f => f.Title,
f => f.Hidden,
f => f.InternalName,
f => f.Required)));
web.Context.ExecuteQueryRetry();
foreach (var item in lists.AsEnumerable().Where(l => l.Hidden == false))
{
ListInstance baseTemplateList = null;
if (creationInfo.BaseTemplate != null)
{
// Check if we need to skip this list...if so let's do it before we gather all the other information for this list...improves performance
var index = creationInfo.BaseTemplate.Lists.FindIndex(f => f.Url.Equals(item.RootFolder.ServerRelativeUrl.Substring(serverRelativeUrl.Length + 1)) &&
f.TemplateType.Equals(item.BaseTemplate));
if (index != -1)
{
baseTemplateList = creationInfo.BaseTemplate.Lists[index];
}
}
var contentTypeFields = new List<FieldRef>();
var list = new ListInstance
{
Description = item.Description,
EnableVersioning = item.EnableVersioning,
TemplateType = item.BaseTemplate,
Title = item.Title,
Hidden = item.Hidden,
EnableFolderCreation = item.EnableFolderCreation,
DocumentTemplate = Tokenize(item.DocumentTemplateUrl, web.Url),
ContentTypesEnabled = item.ContentTypesEnabled,
Url = item.RootFolder.ServerRelativeUrl.Substring(serverRelativeUrl.Length).TrimStart('/'),
TemplateFeatureID = item.TemplateFeatureId,
EnableAttachments = item.EnableAttachments,
OnQuickLaunch = item.OnQuickLaunch,
MaxVersionLimit =
item.IsObjectPropertyInstantiated("MajorVersionLimit") ? item.MajorVersionLimit : 0,
EnableMinorVersions = item.EnableMinorVersions,
MinorVersionLimit =
item.IsObjectPropertyInstantiated("MajorWithMinorVersionsLimit")
? item.MajorWithMinorVersionsLimit
: 0
};
var count = 0;
foreach (var ct in item.ContentTypes)
{
web.Context.Load(ct, c => c.Parent);
web.Context.ExecuteQueryRetry();
if (ct.Parent != null)
{
// Add the parent to the list of content types
if (!BuiltInContentTypeId.Contains(ct.Parent.StringId))
{
list.ContentTypeBindings.Add(new ContentTypeBinding { ContentTypeId = ct.Parent.StringId, Default = count == 0 });
}
}
else
{
list.ContentTypeBindings.Add(new ContentTypeBinding { ContentTypeId = ct.StringId, Default = count == 0 });
}
web.Context.Load(ct.FieldLinks);
web.Context.ExecuteQueryRetry();
foreach (var fieldLink in ct.FieldLinks)
{
if (!fieldLink.Hidden)
//.........这里部分代码省略.........
示例11: SetWelcomePage
private static void SetWelcomePage(Web web, Microsoft.SharePoint.Client.File pageFile)
{
if (!web.IsPropertyAvailable("RootFolder"))
{
web.Context.Load(web.RootFolder);
web.Context.ExecuteQueryRetry();
}
if (!pageFile.IsPropertyAvailable("ServerRelativeUrl"))
{
web.Context.Load(pageFile, p => p.ServerRelativeUrl);
web.Context.ExecuteQueryRetry();
}
var rootFolderRelativeUrl = pageFile.ServerRelativeUrl.Substring(web.RootFolder.ServerRelativeUrl.Length);
web.SetHomePage(rootFolderRelativeUrl);
}
示例12: ExtractResourceFolderServerRelativeUrl
private static string ExtractResourceFolderServerRelativeUrl(Web web, ClientRuntimeContext context, ContentType currentContentType)
{
if (!currentContentType.IsPropertyAvailable("SchemaXml")
|| !web.IsPropertyAvailable("ServerRelativeUrl"))
{
context.Load(web, w => w.ServerRelativeUrl);
currentContentType.Context.Load(currentContentType, c => c.SchemaXml);
currentContentType.Context.ExecuteQueryWithTrace();
}
var ctDocument = XDocument.Parse(currentContentType.SchemaXml);
var folderUrlNode = ctDocument.Descendants().FirstOrDefault(d => d.Name == "Folder");
var webRelativeFolderUrl = folderUrlNode.Attribute("TargetName").Value;
var serverRelativeFolderUrl = UrlUtility.CombineUrl(web.ServerRelativeUrl, webRelativeFolderUrl);
TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "webRelativeFolderUrl is: [{0}]", webRelativeFolderUrl);
return serverRelativeFolderUrl;
}
示例13: ProvisionObjects
public override void ProvisionObjects(Web web, ProvisioningTemplate template)
{
Log.Info(Constants.LOGGING_SOURCE_FRAMEWORK_PROVISIONING, CoreResources.Provisioning_ObjectHandlers_Pages);
var context = web.Context as ClientContext;
if (!web.IsPropertyAvailable("ServerRelativeUrl"))
{
context.Load(web, w => w.ServerRelativeUrl);
context.ExecuteQueryRetry();
}
foreach (var page in template.Pages)
{
var url = page.Url.ToParsedString();
if (!url.ToLower().StartsWith(web.ServerRelativeUrl.ToLower()))
{
url = UrlUtility.Combine(web.ServerRelativeUrl, url);
}
var exists = true;
Microsoft.SharePoint.Client.File file = null;
try
{
file = web.GetFileByServerRelativeUrl(url);
web.Context.Load(file);
web.Context.ExecuteQuery();
}
catch (ServerException ex)
{
if (ex.ServerErrorTypeName == "System.IO.FileNotFoundException")
{
exists = false;
}
}
if (exists)
{
if (page.Overwrite)
{
file.DeleteObject();
web.Context.ExecuteQueryRetry();
web.AddWikiPageByUrl(url);
web.AddLayoutToWikiPage(page.Layout, url);
}
}
else
{
web.AddWikiPageByUrl(url);
web.AddLayoutToWikiPage(page.Layout, url);
}
if (page.WelcomePage)
{
if (!web.IsPropertyAvailable("RootFolder"))
{
web.Context.Load(web.RootFolder);
web.Context.ExecuteQueryRetry();
}
var rootFolderRelativeUrl = url.Substring(web.RootFolder.ServerRelativeUrl.Length);
web.SetHomePage(rootFolderRelativeUrl);
}
if (page.WebParts != null & page.WebParts.Any())
{
var existingWebParts = web.GetWebParts(url);
foreach (var webpart in page.WebParts)
{
if (existingWebParts.FirstOrDefault(w => w.WebPart.Title == webpart.Title) == null)
{
WebPartEntity wpEntity = new WebPartEntity();
wpEntity.WebPartTitle = webpart.Title;
wpEntity.WebPartXml = webpart.Contents.ToParsedString().Trim(new[] {'\n', ' '});
web.AddWebPartToWikiPage(url, wpEntity, (int)webpart.Row, (int)webpart.Column, false);
}
}
}
}
}
示例14: ProvisionObjects
public override TokenParser ProvisionObjects(Web web, ProvisioningTemplate template, TokenParser parser, ProvisioningTemplateApplyingInformation applyingInformation)
{
using (var scope = new PnPMonitoredScope(CoreResources.Provisioning_ObjectHandlers_ListInstancesDataRows))
{
if (template.Lists.Any())
{
var rootWeb = (web.Context as ClientContext).Site.RootWeb;
if (!web.IsPropertyAvailable("ServerRelativeUrl"))
{
web.Context.Load(web, w => w.ServerRelativeUrl);
web.Context.ExecuteQueryRetry();
}
web.Context.Load(web.Lists, lc => lc.IncludeWithDefaultProperties(l => l.RootFolder.ServerRelativeUrl));
web.Context.ExecuteQueryRetry();
var existingLists = web.Lists.AsEnumerable<List>().Select(existingList => existingList.RootFolder.ServerRelativeUrl).ToList();
var serverRelativeUrl = web.ServerRelativeUrl;
#region DataRows
foreach (var listInstance in template.Lists)
{
if (listInstance.DataRows != null && listInstance.DataRows.Any())
{
scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_ListInstancesDataRows_Processing_data_rows_for__0_, listInstance.Title);
// Retrieve the target list
var list = web.Lists.GetByTitle(listInstance.Title);
web.Context.Load(list);
// Retrieve the fields' types from the list
FieldCollection fields = list.Fields;
web.Context.Load(fields, fs => fs.Include(f => f.InternalName, f => f.FieldTypeKind));
web.Context.ExecuteQueryRetry();
foreach (var dataRow in listInstance.DataRows)
{
try
{
scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_ListInstancesDataRows_Creating_list_item__0_, listInstance.DataRows.IndexOf(dataRow) + 1);
var listitemCI = new ListItemCreationInformation();
var listitem = list.AddItem(listitemCI);
foreach (var dataValue in dataRow.Values)
{
Field dataField = fields.FirstOrDefault(
f => f.InternalName == parser.ParseString(dataValue.Key));
if (dataField != null)
{
String fieldValue = parser.ParseString(dataValue.Value);
switch (dataField.FieldTypeKind)
{
case FieldType.Geolocation:
// FieldGeolocationValue - Expected format: Altitude,Latitude,Longitude,Measure
var geolocationArray = fieldValue.Split(',');
if (geolocationArray.Length == 4)
{
var geolocationValue = new FieldGeolocationValue
{
Altitude = Double.Parse(geolocationArray[0]),
Latitude = Double.Parse(geolocationArray[1]),
Longitude = Double.Parse(geolocationArray[2]),
Measure = Double.Parse(geolocationArray[3]),
};
listitem[parser.ParseString(dataValue.Key)] = geolocationValue;
}
else
{
listitem[parser.ParseString(dataValue.Key)] = fieldValue;
}
break;
case FieldType.Lookup:
// FieldLookupValue - Expected format: LookupID
var lookupValue = new FieldLookupValue
{
LookupId = Int32.Parse(fieldValue),
};
listitem[parser.ParseString(dataValue.Key)] = lookupValue;
break;
case FieldType.URL:
// FieldUrlValue - Expected format: URL,Description
var urlArray = fieldValue.Split(',');
var linkValue = new FieldUrlValue();
if (urlArray.Length == 2)
{
linkValue.Url = urlArray[0];
linkValue.Description = urlArray[1];
}
else
{
linkValue.Url = urlArray[0];
linkValue.Description = urlArray[0];
}
listitem[parser.ParseString(dataValue.Key)] = linkValue;
break;
case FieldType.User:
// FieldUserValue - Expected format: loginName
var user = web.EnsureUser(fieldValue);
//.........这里部分代码省略.........
示例15: CreateEntities
public override ProvisioningTemplate CreateEntities(Web web, ProvisioningTemplate template, ProvisioningTemplateCreationInformation creationInfo)
{
if (!web.IsPropertyAvailable("ServerRelativeUrl"))
{
web.Context.Load(web, w => w.ServerRelativeUrl);
web.Context.ExecuteQuery();
}
var serverRelativeUrl = web.ServerRelativeUrl;
// For each list in the site
ListCollection lists = web.Lists;
web.Context.Load(lists, lc => lc.IncludeWithDefaultProperties(l => l.ContentTypes, l => l.Views, l => l.RootFolder.ServerRelativeUrl, l => l.Fields));
web.Context.ExecuteQuery();
foreach (var item in lists)
{
// Do not export system lists
if (!item.Hidden)
{
int index = -1;
if (creationInfo.BaseTemplate != null)
{
// Check if we need to skip this list...if so let's do it before we gather all the other information for this list...improves perf
index = creationInfo.BaseTemplate.Lists.FindIndex(f => f.Url.Equals(item.RootFolder.ServerRelativeUrl.Substring(serverRelativeUrl.Length)) &&
f.TemplateType.Equals(item.BaseTemplate));
}
if (index == -1)
{
var contentTypeFields = new List<FieldRef>();
ListInstance list = new ListInstance();
list.Description = item.Description;
list.EnableVersioning = item.EnableVersioning;
list.TemplateType = item.BaseTemplate;
list.Title = item.Title;
list.Hidden = item.Hidden;
list.DocumentTemplate = Tokenize(item.DocumentTemplateUrl, web.Url);
list.ContentTypesEnabled = item.ContentTypesEnabled;
list.Url = item.RootFolder.ServerRelativeUrl.Substring(serverRelativeUrl.Length).TrimStart('/');
int count = 0;
foreach (var ct in item.ContentTypes)
{
web.Context.Load(ct, c => c.Parent);
web.Context.ExecuteQuery();
if (ct.Parent != null)
{
// Add the parent to the list of content types
if (!BuiltInContentTypeId.Contains(ct.Parent.StringId))
{
list.ContentTypeBindings.Add(new ContentTypeBinding() {ContentTypeID = ct.Parent.StringId, Default = count == 0 ? true : false});
}
}
else
{
list.ContentTypeBindings.Add(new ContentTypeBinding() {ContentTypeID = ct.StringId, Default = count == 0});
}
web.Context.Load(ct.FieldLinks);
web.Context.ExecuteQuery();
foreach (var fieldLink in ct.FieldLinks)
{
if (!fieldLink.Hidden)
{
contentTypeFields.Add(new FieldRef() { ID = fieldLink.Id });
}
}
count++;
}
foreach (var view in item.Views)
{
if (!view.Hidden)
{
list.Views.Add(new View() { SchemaXml = view.ListViewXml });
}
}
var siteColumns = web.Fields;
web.Context.Load(siteColumns, scs => scs.Include(sc => sc.Id));
web.Context.ExecuteQuery();
foreach (var field in item.Fields)
{
if (!field.Hidden)
{
if (siteColumns.FirstOrDefault(sc => sc.Id == field.Id) != null)
{
if (contentTypeFields.FirstOrDefault(c => c.ID == field.Id) == null)
{
list.FieldRefs.Add(new FieldRef() { ID = field.Id });
}
}
else
{
list.Fields.Add((new Model.Field() { SchemaXml = field.SchemaXml }));
}
}
//.........这里部分代码省略.........