當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript sp-pnp-js.Web類代碼示例

本文整理匯總了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;
                });
開發者ID:ScoutmanPt,項目名稱:PnP,代碼行數:33,代碼來源:SocialModule.ts

示例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;
        }
    }
開發者ID:ScoutmanPt,項目名稱:PnP,代碼行數:16,代碼來源:SocialModule.ts

示例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;
        }
    }
開發者ID:ScoutmanPt,項目名稱:PnP,代碼行數:20,代碼來源:SocialModule.ts

示例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);
        });
    }
開發者ID:AKrasheninnikov,項目名稱:PnP,代碼行數:16,代碼來源:WelcomeOverlayViewModel.ts

示例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;
    }
開發者ID:ScoutmanPt,項目名稱:PnP,代碼行數:19,代碼來源:SocialModule.ts

示例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;
    }
開發者ID:,項目名稱:,代碼行數:21,代碼來源:

示例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;
    }
開發者ID:ScoutmanPt,項目名稱:PnP,代碼行數:80,代碼來源:SocialModule.ts

示例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;

//.........這裏部分代碼省略.........
開發者ID:ScoutmanPt,項目名稱:PnP,代碼行數:101,代碼來源:SocialModule.ts


注:本文中的sp-pnp-js.Web類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。