2008-08-27 9 views
5

Tôi đang cố gắng thiết lập các menu mỗi mục động (Chỉnh sửa khối điều khiển) trong SharePoint 2007. Mục tiêu của tôi là có một số tính năng khả dụng dựa trên tư cách thành viên nhóm hiện tại của người dùng.Hiển thị động mục menu Chỉnh sửa khối điều khiển trong SharePoint

Tôi biết rằng thẻ CustomAction kiểm soát việc tạo mục menu này có thuộc tính Quyền. Vấn đề mà tôi có với điều này là các nhóm tôi đang sử dụng có quyền giống nhau trong trang web (ViewListItems, ManageAlerts, vv). Các nhóm mà chúng tôi đã thiết lập thỏa thuận nhiều hơn với chức năng, chẳng hạn như Quản lý, Nhân viên, v.v. Chúng tôi muốn có thể gán một tính năng tùy chỉnh cho một nhóm và có các mục menu được liên kết với tính năng đó chỉ hiển thị cho các thành viên của nhóm đó . Mọi người đều có quyền truy cập trang web cơ bản giống nhau, nhưng sẽ có thêm tùy chọn availble dựa trên thông tin xác thực đăng nhập của họ.

Tôi đã xem một số bài viết về sửa đổi tệp Core.js để ẩn các mục trong menu ngữ cảnh, nhưng chúng là một cách tiếp cận tất cả hoặc không có gì. Có một bài đăng thú vị tại http://blog.thekid.me.uk/archive/2008/04/29/sharepoint-custom-actions-in-a-list-view-webpart.aspx cho biết cách tự động sửa đổi menu Tác vụ. Nó là tầm thường để sửa đổi ví dụ này để kiểm tra nhóm người dùng và hiển thị hoặc ẩn menu dựa trên tư cách thành viên. Thật không may, ví dụ này dường như không áp dụng cho các mục menu ngữ cảnh được minh chứng ở đây http://forums.msdn.microsoft.com/en-US/sharepointdevelopment/thread/c2259839-24c4-4a7e-83e5-3925cdd17c44/.

Có ai biết cách nào để làm điều này mà không cần sử dụng javascript không? Nếu không, cách tốt nhất để kiểm tra nhóm của người dùng từ javascript là gì?

+0

ông tiêu đề của câu hỏi này sẽ thích hợp hơn nếu nó được "Dynamically sửa đổi Danh mục hàng đơn thả xuống trong SharePoint" .. có thể cập nhật người kiểm duyệt không? –

Trả lời

2

Có hai hàm Javascript khác nhau mà bạn có thể triển khai để tự động thêm các mục menu vào danh sách thả xuống mục. Core.js (C: \ Program Files \ Common Files \ Microsoft Shared \ máy chủ web mở rộng \ 12 \ TEMPLATE \ LAYOUTS \ 1033 \ CORE.JS) kiểm tra sự tồn tại của các phương thức này khi tạo các mục menu cho một mục danh sách được chọn. "Custom_AddDocLibMenuItems" và "Custom_AddListMenuItems" là tên của các phương thức Javascript.

Một bài viết mà tôi nghĩ bạn có thể sử dụng để giải quyết vấn đề cụ thể của bạn, năng động tùy biến menu dựa trên người dùng vai trò thành viên, có thể được tìm thấy ở đây:

MSDN: Customizing the Context Menu of Document Library Items (lưu ý quá trình này là hoàn toàn giống nhau cho bất kỳ loại danh sách)

bài viết này trình bày cách mã phía máy chủ có thể được thực hiện để xác định các mục trong menu sẽ được hiển thị:

[...] trong những trường hợp phức tạp hơn, bạn phải lấy danh sách các lệnh có sẵn từ máy chủ, bởi vì chỉ bạn có thể chạy logic nghiệp vụ của mình và có thể lấy các lệnh từ cơ sở dữ liệu tùy chỉnh. Thông thường, bạn muốn làm điều này nếu bạn đang thực hiện một giải pháp dòng công việc trong đó mỗi tài liệu có trạng thái tiến trình riêng của nó, với các lệnh liên quan đến nó.

Giải pháp cho tình huống này là có Custom_AddDocLibMenuItems tự động gọi trang ASP.NET tùy chỉnh. Trang này lấy ID của thư viện tài liệu và mục cụ thể trên chuỗi truy vấn và trả về một chuỗi XML chứa tất cả thông tin cho các lệnh có sẵn cho tài liệu cụ thể đó. Các lệnh này có sẵn theo trạng thái tiến trình của tài liệu (hoặc một số logic nghiệp vụ tùy chỉnh khác). [...]

2

Rất tiếc, điều này không thể thực hiện được nếu không sử dụng javascript. ECB không hiển thị các điều khiển máy chủ được định nghĩa là một hành động tùy chỉnh (không giống như các hành động SiteActions, v.v.).

Để tìm hiểu làm thế nào để thực hiện điều này bằng cách sử dụng Javascript kiểm tra bài viết sau: http://www.helloitsliam.com/archive/2007/08/10/moss2007-%E2%80%93-item-level-menus-investigation.aspx

+0

Liên kết bị hỏng. – axk