Thursday, September 09, 2010

Viewing Category


Modify source code

 

    04
    Trong mấy bài viết trước, mình có nói về việc chuyển module Links của Dotnetnuke.com thành module MyLinks của mình. Và trong bài viết này, mình sẽ nói về cách để làm việc đó.
    -B1: Trước tiên, ta cần phải include source code của module Links vào 1 solution. Xin vui lòng đọc lại bài viết trước đó của mình
    Sau khi mọi thứ ổn thỏa, thì tiến hành bước sau.
    -B1’: Copy cái folder chứa 2 project trên và đưa ra 1 chỗ nào đó để backup, ví dụ như MyBackup. Nên zip nó lại.
    -B2: Đổi tên các project.
    Trong solution, ta có 2 project là Dotnetnuke.Modules.Links và Dotnetnuke.Modules.Links.SqlDataProvider. Trong VS.NET, hãy click lên Dotnetnuke.Modules.Links, nhấn F2 và đổi tên thành NMDUC.MyLinks. Click lên Dotnetnuke.Modules.Links.SqlDataProvider, nhấn F2, đổi thành NMDUC.MyLinks.SqlDataProvider.
    -B3: Chỉnh lại các namespace trong các trang ascx và ascx.vb, vb và các file khác.
    Mở các trang vb, ascx, và ascx.vb, bạn hãy replace Dotnetnuke.Modules.Links thành Dotnetnuke.Modules.MyLinks. Ngoài ra phải tìm cả các file như .dnn để chỉnh lại. Nhớ là phải replace hết. Việc này đòi hỏi sự kiên nhẫn.
    -B4: Chỉnh lại các assembly và references trong 2 project NMDUC.MyLinks và NMDUC.MyLinks.SqlDataProvider.
    Nhấn chuột phải lên NMDUC.MyLinks, chọn Properties. Click lên tab Application, chỉnh Dotnetnuke.Modules.Links lại thành NMDUC.Modules.MyLinks. Click lên tab References, xem có cái nào link tới Dotnetnuke.Modules.Links lại cho phù hợp.
    Tương tự cho NMDUC.MyLinks.SqlDataProvider, trong tab Application, chỉnh assembly lại thành NMDUC.MyLinks.SqlDataProvider. Chỉnh lại references nữa, trỏ tới NMDUC.Modules.MyLinks.dll.

    [Read the rest of this article...]

    29
    Trong bài viết này, mình sẽ trình bày từng bước mình đã làm để thay đổi source code module Links. Nếu bạn làm theo các bước được trình bày, về căn bản có thể dùng cho các module khác nữa. Tuy nhiên, có thể có những vấn đề không dự đoán được xảy ra, có thể liên quan đến version, đến hệ điều hành, đến VS.NET…
    -Đầu tiên, ta cần down bản install và bản source của module Links. Mình dùng bản 4.00.01.
    -Bước 2, mình cài đặt bản install vào DNN site.
    -Bước 3: Mình unzip bản source và đặt vào 1 folder nào đó. Ví dụ như mình hay đặt tất cả các project vào MyProjects bao gồm cả DNN site là MyDNNSite1, thì mình cũng đặt folder source của module Links vào đó.
    -Bước 4: Mở project MyDNNSite1 lên trong VS.NET.
    -Bước 5: Trong VS.NET, add project Links vào trong cùng solution của project MyDNNSite1. Thực hiện bằng các bước sau:
    +Trong VS.NET, nhấn chuột phải lên solution MyDNNSite1, chọn Add->Existing project.
    +Browse đến Dotnetnuke.Links.vbprj. Nó nằm trong folder source.
    +Click Ok.
    Chỗ này là chỗ có thể có nhiều vấn đề. Ví dụ như mình dùng Vista nên cứ hay báo lỗi COMException. Mất nhiều thời gian với nó lắm.
    -Bước 6: Add project Links.SqlDataProviders. Cũng thực hiện như trên. Cái project Links.SqlDataProvider này sẽ nằm trong thư mục Providers/DataProviders/ SqlDataProvider.
    Lúc này, có 2 project mới được add vào. Đó là Dotnetnuke.Links và DotNetNuke.Links.SqlDataProvider.

    [Read the rest of this article...]

    23

    Mình gặp 1 trường hợp khó hiểu như sau. Ban đầu, mình tạo một module mới hoàn toàn. Xóa hết các stored procedure. Chỉ tạo 1 procedure đơn giản như sau:

    create procedure {databaseOwner}{objectQualifier}NMDUC_GetMyTestModules
     
          @ModuleId int
     
    as
     
    select 1
    GO
     
    Rồi mình đóng gói lại module đó. Ta có 1 file zip. Tiếp đó, mình mở cái file zip đó, add vào file sql 1 stored procedure nữa, cũng đơn giản thôi.
    create procedure {databaseOwner}{objectQualifier}NMDUC_GetMyTestModules123
     
          @ModuleId int
     
    as
     
    select 1
    GO
     
    Mình install lại module đó vào nhằm mục đích reinstall và đè lên code hiện tại. Nhưng khi kiểm tra lại trên SQL Management thì lại không hề thấy NMDUC_GetMyTestModules123 đâu cả. Test nhiều lần rồi mà vẫn vậy. Chẳng biết lỗi tại sao nữa. Hix. T_T

    [Read the rest of this article...]

    21

    Hiện giờ, mình đang tìm cách modify source code của module NewsArticles của Ventrian. Tuy nhiên lại đang tắc ở chỗ làm sao để add source code của nó vào. Nực cười là cách đây vài hôm mình post bài hướng dẫn cách modify source code. Thế mà bây giờ lại không chắc chắn được cách include nó vào sao cho đúng nữa. Search mãi thì được 2 link sau có vẻ được được:

    Cái link thứ 2 thì trước đây có biết rồi. Còn cái link đầu cần phải nghiên cứu thêm.

    [Read the rest of this article...]

    12

    Ta có ngữ cảnh sau: Ta tìm được một module với source code ở đâu đó. Tuy nhiên module đó chưa hoàn toàn đúng với nhu cầu và ta phải tiến hành chỉnh sửa nó lại. Vậy câu hỏi là làm sao để chỉnh sửa code của một module? Câu hỏi đúng hơn là làm sao để gắn nó vào DNN project của ta để tiến hành chỉnh sửa?

    Có 2 trường hợp: Trường hợp đầu tiên, source code bạn đang có trong tay được phát triển từ module Dotnetnuke 4x. Vậy là bạn khá may. Trường hợp thứ 2, tác giả phát triển module này đi từ module version 3x. Trường hợp này mệt mỏi hơn đó.
    Quay lại với trường hợp thứ nhất, module được phát triển dựa theo cấu trúc module 4x. Lúc này cấu trúc module y sì như những module bạn tạo trong project của bạn thôi. Bạn hãy cài đặt source code module đó y như bình thường - tức là vào Host->module definitions->Install new module… Xem xem install có thành công không. Thường thì không có vấn đề gì xảy ra. Khi đó code của module sẽ được add vào project bình thường. Bạn hãy xem trong App_Code và Desktop Modules thì sẽ thấy thôi. Sau đó bạn tiến hành chỉnh sửa code như ý bạn muốn. Khi đã chỉnh sửa xong, bạn đóng gói nó lại như hướng dẫn tại:
    Bây giờ ta đi sang trường hợp thứ 2: Source code module đó được phát triển dựa trên cấu trúc module 3x. Khi mở file zip thì bạn sẽ thấy trong đó sẽ có các file project như .vbprj hay .csprj gì đó. Bạn thử install nó như cách ở trên. Nếu may mắn thì install thành công. Nhưng đa phần thì không. Khi đó, bạn phải tiến hành các bước sau:

    [Read the rest of this article...]

    31

    1. Giới thiệu:

    Vừa rồi mình có nhu cầu tạo 1 module cho site cá nhân của mình. Mình nhận thấy có thể sử dụng nhiều tính năng có từ module Repository. Do đó, mình hy vọng có thể copy các source code của module này và cho vào module của mình để tái sử dụng. Tuy nhiên trong quá trình chuyển source code của module Repository sang module của mình, có rất nhiều vấn đề đã xảy ra. Mình đã thử tìm các tutorial trên mạng hướng dẫn nhưng rất tiếc không có. Mình đã phải cố gắng làm và thành công. Do đó mình viết hướng dẫn này để giúp các bạn khác.
     
    2. Mục đích:
    Chuyển các source code của module Repository sang module mới (ở đây đặt tên là MyRep) để tái sử dụng.
    Có bạn sẽ hỏi tại sao không viết thêm trực tiếp trên module Repository luôn. Làm như thế sẽ gặp vấn đề là sau này, trên cùng 1 site, bạn vừa muốn sử dụng module Repository cho mục đích A, và sử dụng module custom của bạn cho mục đích B thì làm thế nào. Và module Repository cũng là 1 module của người ta, nên để nguyên thế.
    Cụ thể ở đây là sẽ chuyển đổi các namespace, module name, tên các stored procedure.
     
    3. Vấn đề khó khăn khi chuyển đổi:
    Module Repository được phát triển từ lúc DotNetNuke còn ở version 3.x. Do đó cách phát triển của nó có nhiều khác biệt so với cách viết cho module DNN 4.x. Và source code của module này vẫn giữ nguyên kiểu cho module 3.x. Cụ thể ở đây nó có project file. Khi biên dịch sẽ tạo ra các file dll. Và nó có sử dụng các dll file đó. Trong khi đa số chúng ta mới bắt đầu làm quen với DNN, nên chủ yếu quen thuộc với cách phát triển cho module DNN 4.x hơn.
    Khó khăn nữa là trong code và stored procedure của nó có 1 số thứ được hard code. Cần phải thay đổi cho phù hợp.

    [Read the rest of this article...]

    HomeTrangITForum
    Copyright 2010 by Nguyễn Minh ĐứcDesigned by DyNNamiteTerms Of UsePrivacy Statement