Chào mừng bạn đến với DotNetNuke, nơi trang web chính thức cung cấp tài liệu và tất cả mọi thứ được học từ thử nghiệm, blog, diễn đàn và trang web cố bán cho bạn thứ gì đó.
Tôi khuyên bạn nên chuyển đến thư mục gốc DNN và mở tệp /Install/Module/UsersOnline_05.01.00_Install.resources. Nó chỉ là một kho lưu trữ zip được đổi tên thành .resources. Bên trong kho lưu trữ đó là mô-đun "Người dùng trực tuyến" được đóng gói và đó là ví dụ tôi sẽ đi qua.
Nếu bạn đã có gói xml .DNN đã tạo cho mô-đun của bạn, bạn cần phải thêm một <component>
mục mới để cho DNN biết để thực hiện các kịch bản SQL của bạn trong khi cài đặt:
...snip...
<components>
<component type="Script">
<scripts>
<basePath>DesktopModules\UsersOnline</basePath>
<script type="Install">
<path>Providers\DataProviders\SqlDataProvider</path>
<name>04.09.04.SqlDataProvider</name>
<version>04.09.04</version>
</script>
<script type="Install">
<path>Providers\DataProviders\SqlDataProvider</path>
<name>05.01.00.SqlDataProvider</name>
<version>05.01.00</version>
</script>
<script type="UnInstall">
<path>Providers\DataProviders\SqlDataProvider</path>
<name>Uninstall.SqlDataProvider</name>
<version>05.01.00</version>
</script>
</scripts>
</component>
...snip...
Trong khi cài đặt mô-đun, DNN sẽ thực thi các tập lệnh được nhập ở đây theo thứ tự số phiên bản của chúng. Nếu các mô-đun hiện đang được cài đặt chưa bao giờ được cài đặt sau đó nó sẽ đi theo thứ tự này:
- 04.09.04
- 05.01.00
Nếu các mô-đun đã được cài đặt và đang được nâng cấp (từ 04.09.04), nó sẽ bỏ qua các kịch bản của các phiên bản trước (giả sử chúng đã được thực thi) và chỉ chạy kịch bản 05.01.00 mới hơn, điều này sẽ làm cho mọi thứ được cập nhật. Bạn có trách nhiệm tạo các tập lệnh SQL của mình để hỗ trợ cơ chế nâng cấp được cài sẵn.
Cũng có một tập lệnh "UnInstall" được thực hiện khi người dùng bỏ cài đặt mô-đun. Điều này cho phép bạn dọn dẹp sau khi mô-đun của bạn.
Mỗi kịch bản SQL chứa các lệnh T-SQL cần thiết để tạo schema của mô-đun của bạn, dữ liệu mặc định, các thủ tục lưu trữ, vv Đây là một đoạn kịch bản OnlineUsers mô-đun của:
/************************************************************/
/***** SqlDataProvider *****/
/***** *****/
/***** *****/
/***** Note: To manually execute this script you must *****/
/***** perform a search and replace operation *****/
/***** for {databaseOwner} and {objectQualifier} *****/
/***** *****/
/************************************************************/
if exists (select * from dbo.sysobjects where id = object_id(N'{databaseOwner}[{objectQualifier}DNNUOL_GetOnlineUsers]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE {databaseOwner}{objectQualifier}DNNUOL_GetOnlineUsers
GO
CREATE PROCEDURE {databaseOwner}{objectQualifier}DNNUOL_GetOnlineUsers
@PortalID int,
@IncludeHosts bit
AS
IF @IncludeHosts = 0
BEGIN
SELECT
UO.UserID,
U.UserName,
U.DisplayName,
U.FirstName,
U.LastName,
U.FirstName + ' ' + U.LastName AS FullName
FROM
{databaseOwner}{objectQualifier}UsersOnline UO INNER JOIN {databaseOwner}{objectQualifier}Users U ON UO.UserID = U.UserID INNER JOIN {databaseOwner}{objectQualifier}UserPortals UP ON U.UserID = UP.UserID
WHERE
UO.PortalID = @PortalID AND UO.UserID = U.UserID AND UP.Authorised = 1 AND U.IsSuperUser = 0 -- Inner Join takes care of SU = 0, but for sanity.
END
ELSE
BEGIN
SELECT DISTINCT
UO.UserID,
U.UserName,
U.DisplayName,
U.FirstName,
U.LastName,
U.FirstName + ' ' + U.LastName AS FullName
FROM
{databaseOwner}{objectQualifier}UsersOnline UO INNER JOIN {databaseOwner}{objectQualifier}Users U ON UO.UserID = U.UserID, {databaseOwner}{objectQualifier}UserPortals UP
WHERE
UO.PortalID = @PortalID AND UO.UserID = U.UserID AND UP.Authorised = 1
END
GO
/************************************************************/
/***** SqlDataProvider *****/
/************************************************************/
Lưu ý việc sử dụng {databaseOwner } và {objectQualifier} ở phía trước mỗi bảng hoặc thủ tục được tạo trong cơ sở dữ liệu. Đây là các thẻ và được thay thế tại thời gian chạy với các cài đặt từ tệp web.config của cài đặt. Bạn thường có thể giả định rằng chúng sẽ được thay thế bằng "dbo". nhưng nếu bạn đang bán mô-đun của bạn hoặc cung cấp cho các bên thứ ba để cài đặt, bạn sẽ cần phải hỗ trợ chủ sở hữu tùy chỉnh và vòng loại.
Dưới đây là một số nguồn lực bổ sung:
+1 cho đoạn đầu tiên –