本文整理汇总了TypeScript中sp-pnp-js.Web类的典型用法代码示例。如果您正苦于以下问题:TypeScript Web类的具体用法?TypeScript Web怎么用?TypeScript Web使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Web类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: Web
const discussionReplies: Promise<IDiscussionReply>[] = replies.map(async (reply) => {
web = new Web(_spPageContextInfo.webAbsoluteUrl);
let item;
// tslint:disable-next-line:prefer-conditional-expression
if (isSPO) {
item = await web.getList(this.discussionListServerRelativeUrl).items.getById(reply.Id).select("Author/Name", "ParentList/Id").expand("Author/Name", "ParentList/Id").inBatch(batch).get();
} else {
item = await web.getList(this.discussionListServerRelativeUrl).items.getById(reply.Id).select("Author/Name", "ParentList/Id").expand("Author/Name", "ParentList/Id").get();
}
const authorProperties = await this.getUserProperties(item.Author.Name);
const PictureUrl = authorProperties["PictureUrl"] ? authorProperties["PictureUrl"] : "/_layouts/15/images/person.gif?rev=23";
// tslint:disable-next-line:no-object-literal-type-assertion
return {
Author: {
DisplayName: authorProperties["DisplayName"],
Id: item.Author.Id,
PictureUrl,
},
Body: reply.Body,
Children: [],
Edited: reply.Modified,
Id: reply.Id,
LikedBy: reply.LikedByStringId ? reply.LikedByStringId.results : [],
LikesCount: reply.LikesCount ? reply.LikesCount : 0,
ParentItemID: reply.ParentItemID,
ParentListId: item.ParentList.Id,
Posted: reply.Created,
UserPermissions: await this.getCurrentUserPermissionsOnItem(reply.Id, item.Author.Name),
} as IDiscussionReply;
});
示例2: deleteReply
/**
* Delete a reply in an existing discussion
* @param replyId the item id to delete
*/
public async deleteReply(replyId: number): Promise<number> {
try {
const web = new Web(_spPageContextInfo.webAbsoluteUrl);
await web.getList(this.discussionListServerRelativeUrl).items.getById(replyId).delete();
return replyId;
} catch (error) {
Logger.write(`[SocialModule:deleteReply]: ${error}`, LogLevel.Error);
throw error;
}
}
示例3: updateReply
/**
* Updates a reply
* @param replyId The reply id to update
* @param replyBody The new reply body
*/
public async updateReply(replyId: number, replyBody: string): Promise<void> {
try {
const web = new Web(_spPageContextInfo.webAbsoluteUrl);
const result = await web.getList(this.discussionListServerRelativeUrl).items.getById(replyId).select("Modified").update({
Body: replyBody,
});
return;
} catch (error) {
Logger.write(`[SocialModule:updateReply]: ${error}`, LogLevel.Error);
throw error;
}
}
示例4: constructor
constructor() {
this.welcomeMessage = ko.observable("");
const web = new Web(_spPageContextInfo.webAbsoluteUrl);
// Get the current user name
web.getUserById(_spPageContextInfo.userId).get().then((user) => {
this.welcomeMessage(sprintf.sprintf(i18n.t("welcomeMessage"), user.Title.split(" ")[0]));
}).catch((errorMesssage) => {
Logger.write(errorMesssage, LogLevel.Error);
});
}
示例5: getCurrentUserPermissionsOnList
public async getCurrentUserPermissionsOnList(listServerRelativeUrl: string): Promise<DiscussionPermissionLevel[]> {
const permissionsList = [];
const web = new Web(_spPageContextInfo.webAbsoluteUrl);
const permissions = await web.getList(listServerRelativeUrl).getCurrentUserEffectivePermissions();
const canAddListItems = web.hasPermissions(permissions, PermissionKind.AddListItems);
const canManageLists = web.hasPermissions(permissions, PermissionKind.ManageLists);
if (canAddListItems) {
permissionsList.push(DiscussionPermissionLevel.Add);
}
if (canManageLists) {
permissionsList.push(DiscussionPermissionLevel.ManageLists);
}
return permissionsList;
}
示例6: _getWebProperties
private async _getWebProperties(webUrl: string, selectFields: string[]): Promise<any> {
let web = new Web(webUrl);
let data: any = null;
// prefix all properties with the expanded field
selectFields.forEach((value, index, array) => {
array[index] = "AllProperties/" + value;
});
const select = selectFields.join(',');
try {
data = await web
.select(select)
.expand('AllProperties')
.usingCaching()
.get();
} catch (error) {
Logger.write('Error loading web properties: ' + error, LogLevel.Error);
}
return data.AllProperties;
}
示例7: getCurrentUserPermissionsOnItem
/**
* Gets the current user permnissions on a reply
* @param itemId the item id
* @param replyAuthorLoginName the reply auhtor name (to check if the current user is the actual author)
*/
private async getCurrentUserPermissionsOnItem(itemId: number, replyAuthorLoginName: string): Promise<DiscussionPermissionLevel[]> {
const permissionsList = [];
const web = new Web(_spPageContextInfo.webAbsoluteUrl);
const permissions = await web.getList(this.discussionListServerRelativeUrl).items.getById(itemId).getCurrentUserEffectivePermissions();
const canAddListItems = web.hasPermissions(permissions, PermissionKind.AddListItems);
const canEditListItems = web.hasPermissions(permissions, PermissionKind.EditListItems);
const canDeleteListItems = web.hasPermissions(permissions, PermissionKind.DeleteListItems);
const canManageLists = web.hasPermissions(permissions, PermissionKind.ManageLists);
if (canManageLists) {
permissionsList.push(DiscussionPermissionLevel.ManageLists);
permissionsList.push(DiscussionPermissionLevel.Delete);
permissionsList.push(DiscussionPermissionLevel.Edit);
}
if ((canEditListItems && !canManageLists) || (canDeleteListItems && !canManageLists)) {
pnp.storage.local.deleteExpired();
// The "WriteSecurity" property isn't availabe through REST with SharePoint 2013. In this case, we need to get the whole list XML schema to extract this info
// Not very efficient but we do not have any other option here
// Not List Item Level Security is different than item permissions so we can't rely on native REST methods (i.e. getCurrentUserEffectivePermissions())
const writeSecurityStorageKey = String.format("{0}_{1}", _spPageContextInfo.webServerRelativeUrl, "commentsListWriteSecurity");
let writeSecurity = pnp.storage.local.get(writeSecurityStorageKey);
if (!writeSecurity) {
const list = await web.getList(this.discussionListServerRelativeUrl).select("SchemaXml").get();
// tslint:disable-next-line:radix
writeSecurity = parseInt(/WriteSecurity="(\d)"/.exec(list.SchemaXml)[1]);
pnp.storage.local.put(writeSecurityStorageKey, writeSecurity, pnp.util.dateAdd(new Date(), "minute", 60));
}
// 2 = Create items and edit items that were created by the user
if (writeSecurity === 2) {
const userLoginNameStorageKey = String.format("{0}_{1}", _spPageContextInfo.webServerRelativeUrl, "currentUserLoginName");
let currentUserLoginName = pnp.storage.local.get(userLoginNameStorageKey);
if (!currentUserLoginName) {
const currentUser = await web.currentUser.select("LoginName").get();
currentUserLoginName = currentUser.LoginName;
pnp.storage.local.put(userLoginNameStorageKey, currentUserLoginName, pnp.util.dateAdd(new Date(), "minute", 20));
}
// If the current user is the author of the comment
if (replyAuthorLoginName === currentUserLoginName) {
if (canEditListItems) {
permissionsList.push(DiscussionPermissionLevel.EditAsAuthor);
}
if (canDeleteListItems) {
permissionsList.push(DiscussionPermissionLevel.DeleteAsAuthor);
}
}
} else {
if (canDeleteListItems) {
permissionsList.push(DiscussionPermissionLevel.Delete);
}
if (canEditListItems) {
permissionsList.push(DiscussionPermissionLevel.Edit);
}
}
}
if (canAddListItems) {
permissionsList.push(DiscussionPermissionLevel.Add);
}
return permissionsList;
}
示例8: getDiscussionById
/**
* Get a disucssion feed by id
* @param id the id of the associated page
*/
public async getDiscussionById(associatedPageId: number): Promise<IDiscussion> {
let web = new Web(_spPageContextInfo.webAbsoluteUrl);
try {
const discussion = await web.getList(this.discussionListServerRelativeUrl).items
.filter(`AssociatedPageId eq ${ associatedPageId }`)
.select("Id", "Folder", "AssociatedPageId")
.expand("Folder")
.top(1)
.get();
if (discussion.length > 0) {
// Get replies from this discussion (i.e. folder)
const query: CamlQuery = {
FolderServerRelativeUrl: `${this.discussionListServerRelativeUrl}/${discussion[0].Folder.Name}`,
ViewXml: `<View>
<ViewFields>
<FieldRef Name="Id"></FieldRef>
<FieldRef Name="ParentItemID"></FieldRef>
<FieldRef Name="Created"></FieldRef>
<FieldRef Name="Modified"></FieldRef>
<FieldRef Name="Body"></FieldRef>
<FieldRef Name="ParenListId"></FieldRef>
<FieldRef Name="LikedBy"></FieldRef>
<FieldRef Name="LikesCount"></FieldRef>
</ViewFields>
<Query/>
</View>`,
};
const replies = await web.getList(this.discussionListServerRelativeUrl).getItemsByCAMLQuery(query);
// Batch are not supported on Sharepoint 2013
// https://github.com/SharePoint/PnP-JS-Core/issues/492
const batch = pnp.sp.createBatch();
const isSPO = _spPageContextInfo["isSPO"];
// tslint:disable-next-line:array-type
const discussionReplies: Promise<IDiscussionReply>[] = replies.map(async (reply) => {
web = new Web(_spPageContextInfo.webAbsoluteUrl);
let item;
// tslint:disable-next-line:prefer-conditional-expression
if (isSPO) {
item = await web.getList(this.discussionListServerRelativeUrl).items.getById(reply.Id).select("Author/Name", "ParentList/Id").expand("Author/Name", "ParentList/Id").inBatch(batch).get();
} else {
item = await web.getList(this.discussionListServerRelativeUrl).items.getById(reply.Id).select("Author/Name", "ParentList/Id").expand("Author/Name", "ParentList/Id").get();
}
const authorProperties = await this.getUserProperties(item.Author.Name);
const PictureUrl = authorProperties["PictureUrl"] ? authorProperties["PictureUrl"] : "/_layouts/15/images/person.gif?rev=23";
// tslint:disable-next-line:no-object-literal-type-assertion
return {
Author: {
DisplayName: authorProperties["DisplayName"],
Id: item.Author.Id,
PictureUrl,
},
Body: reply.Body,
Children: [],
Edited: reply.Modified,
Id: reply.Id,
LikedBy: reply.LikedByStringId ? reply.LikedByStringId.results : [],
LikesCount: reply.LikesCount ? reply.LikesCount : 0,
ParentItemID: reply.ParentItemID,
ParentListId: item.ParentList.Id,
Posted: reply.Created,
UserPermissions: await this.getCurrentUserPermissionsOnItem(reply.Id, item.Author.Name),
} as IDiscussionReply;
});
if (isSPO) {
await batch.execute();
}
// Get rating experience settings
const folderSettings = await web.getFolderByServerRelativeUrl(this.discussionListServerRelativeUrl).properties.select("Ratings_VotingExperience").get();
const ratingExperience: string = folderSettings.Ratings_x005f_VotingExperience;
let areLikesEnabled;
if (ratingExperience) {
areLikesEnabled = ratingExperience.localeCompare("Likes") === 0 ? true : false;
}
// tslint:disable-next-line:no-object-literal-type-assertion
return {
AreLikesEnabled: areLikesEnabled,
AssociatedPageId: discussion[0].AssociatedPageId,
Id: discussion[0].Id,
Replies: await Promise.all(discussionReplies),
Title: discussion[0].Title,
} as IDiscussion;
//.........这里部分代码省略.........