4. Ứng dụng xây dựng Tòa soạn báo điện tử
4.2.1 Tìm hiểu Bộ portal mã nguồn mở DotNetNuke
Tìm hiểu kiến trúc DotNetNuke. Trong đó, tập trung vào các phần sau : a. Kiến trúc 3 lớp – Việc tìm hiểu kiến trúc này giúp khai thác những thế
b. Tính đóng gói – Tính đóng gói cho phép mở rộng ứng dụng theo nhiều hướng khác nhau một cách dễ dàng.
c. Kiến trúc đa cổng (multi portal) – Đây chính là kiến trúc quan trọng cho việc triển khai ứng dụng trên phạm vi rộng.
- Tìm hiểu cách sử dụng các module mà DotNetNuke hỗ trợ, xây dựng nhiều module mới phục vụ yêu cầu của nhiều đơn vị.
- Đánh giá ưu điểm và tiềm năng phát triển lâu dài của DotNetNuke 4.2.2 Xây dựng tòa soạn báo điện tử
- Xây dựng một tòa soạn báo điện tử có những tính năng sau :
a. Vận hành một dây chuyền sản xuất tin bài gồm các khâu : viết bài, kiểm duyệt bài và đăng bài.
b. Đưa lên trang chính thức các bài viết đã qua kiểm duyệt, cung cấp một lượng tin được cập nhất thường xuyên cho độc giả sử dụng mạng Internet (hoặc mạng nội bộ).
c. Có khả năng biến đổi dễ dàng, đáp ứng đuợc yêu cầu của nhiều loại hình đơn vị (không chỉ gói gọn trong các đơn vị hoạt động về báo chí).
- Xây dựng công cụ hỗ trợ cho việc thu thập tin tức từ các trang báo điện tử khác nhằm làm phong phú thêm lượng tin bài của tòa soạn. (Tương lai)
4.3 Xây dựng hệ thống
4.3.1 Các chức năng chính của hệ thốnga. Đăng nhập hệ thống a. Đăng nhập hệ thống
Biên tập viên
b. Sản xuất nội dung
• Hiển thị danh sách tin bài cá nhân
Biên tập viên
c. Quy trình đưa bản tin lên Web
4.3.2 Xây dựng cơ sở dữ liệu
Hệ thống được xây dựng dựa trên bộ khung có sẵn của Dotnetnuke vì thế quá trình thiết kế database cũng được giảm thiểu rất nhiều. Những người phát triển ứng dụng Web trên nền tảng Dotnetnuke sẽ không mất nhiều thời gian vào việc thiết kế DataBase mà chỉ phải xây dựng thêm bảng dữ liệu phục vụ cho những module của mình.
Bảng “Chủ đề” tin (dnn_MyNews_Categories) Ý nghĩa bảng:
Tòa soạn báo có nhiều kênh thông tin (chủ đề) như: văn hóa, xã hội, pháp luật,…
Bảng mô tả các thuộc tính
STT Thuộc tính Kiểu dữ liệu Null Diễn giải
1 CategoryID Int 0 ID của chủ đề, tự động tăng 2 CategoryName Nvarchar 0 Tên của chủ đề
3 CategoryNoiDung Nvarchar 1 Nội dung của chủ đề 4 UserIDCreated Int 0 ID của người tạo ra chủ đề 5 NgayTao DateTime 0 Ngày tạo chủ đề
6 NgayCapNhat DateTime 1 Ngày sửa chữa nội dung
Bảng “Tin bài” (dnn_MyNews_News) Ý nghĩa bảng:
Chứa nội dung những tin bài tồn tại trong hệ thống Bảng mô tả các thuộc tính
STT Thuộc tính Kiểu dữ liệu Null Diễn giải
1 NewID Int 0 ID của từng tin bài, tự động tăng 2 CategoryID Int 0 ID chủ đề của tin bài
3 TieuDe Nvarchar 0 Tiêu đề của tin bài 4 TomTat Nvarchar 0 Tóm tắt của tin bài 5 NoiDung Ntext 0 Nội dung của tin bài
6 Anh Nvarchar 1 Đường dẫn ảnh đại diện của tin bài 7 TinDB Bit 1 =1: thể hiện đây là tin bài đặc biệt
=0: tin bài bình thường
8 TinMoi Bit 1 =1: thể hiện đây là tin bài mới nhất =0: tin bài bình thường
9 Diem Int 1 Điểm của tin bài, nằm trong khoảng [0,100]
10 SLTruyCap Int 1 Số lần tin bài xem 11 UserIDCreated Int 0 ID của người tạo tin bài 12 NgayTao Datetime 0 Ngày phóng viên tạo tin bài
=1: tin bài đã được nộp
16 ThamDinh Bit 0 =0: tin bài chưa được thẩm định (chưa được xuất bản lên Web) =1: tin bài đã được thẩm định (đã xuất bản lên Web)
17 KhongDung Bit 1 =0: tin bài được sử dụng =1: tin bài không được sử dụng 18 LyDoKhongDung Nvarchar 1 Lý do không dùng tin bài 19 HuyXuatBan Bit 1 =0: tin bài được sử dụng
=1: tin bài bị hủy xuất bản
Bảng “Ý kiến” (dnn_MyNews_YKien) Ý nghĩa bảng:
Chứa ý kiến của độc giả về nội dung tin bài đã xuất bản Bảng mô tả các thuộc tính
STT Thuộc tính Kiểu dữ liệu Null Diễn giải
1 YKienID Int 0 ID ý kiến của độc giả, tự động tăng 2 Email Nvarchar 0 Địa chỉ Email của độc giả
3 IPClient Narchar 0 Địa chỉ IP của độc giả khi gửi ý kiến 4 NoiDung Ntext 0 Nội dung ý kiến về tin bài
5 NewID Int 0 ID tin bài được gửi ý kiến 6 NgayGui DateTime 0 Ngày độc giả gửi ý kiến
4.3.3 Xây dựng module và gắn vào Dotnetnuke
Trong quá trình tìm hiểu phần cơ sở của Dotnetnuke và thiết kế hệ thống, chúng tôi đã xây dựng những module phục vụ việc trình diễn, sản xuất, thẩm định nội dung tin bài thông qua môi trường Web.
Module “Chủ đề”: danh sách chủ đề tin bài của hệ thống.
• Database: lấy dữ liệu trong bảng [dnn_MyNews_Categories]
- Trường [CategoryName]: thể hiện tên các chủ đề người dùng nhìn thấy.
- Trường [CategoryID]: số định danh của chủ đề.
• Chức năng: Khi người dùng chọn một chủ đề tin bất kỳ, cặp giá trị CategoryID=value tương ứng được đưa lên URL để các module khác sử dụng.
Control: DataList
Mỗi thành phần (item) của DataList là một Hyperlink, với Text là tên của chủ đề.
Mỗi khi một chủ đề được chọn, URL được thay đổi:
http://localhost/dnn2005/Default.aspx? tabid=58&CategoryID=5
Dựa vào cặp giá trị CategoryID=value, mà module thể hiện danh sách tin bài theo chủ đề biết được cần load chủ đề nào .
Module “Tin tức” thể hiện
- danh sách tin bài mới nhất của tất cả các chủ đề tin - danh sách tin của từng chủ đề tin
- nội dung cụ thể của tin bài
• Database: lấy dữ liệu trong bảng [dnn_MyNews_News] - Trường [NewID]: số định danh của một tin bài cụ thể - Trường [CategoryID]: số định danh của chủ đề tin bài - Trường [TieuDe]: tiêu đề của tin bài
- Trường [TomTat]: tóm tắt của tin bài - Trường [NoiDung]: nội dung của tin bài
- Trường [Anh]: chuỗi địa chỉ của ảnh đại diện của tin bài
• Chức năng:
- dựa vào cặp giá trị CategoryID=value có trên chuỗi URL, module load những tin bài mới nhất nằm trong chủ đề.
- khi phần một tin bài được chọn để xem nội dung, cặp giá trị NewID=value được hiện thị trên chuỗi URL, dựa vào cặp giá trị này nội dung tin bài sẽ được hiện thị.
• Thành phần trên giao diện
Giao diện Hoạt động
Control: DataList có cấu trúc Chủ đề của tin (1)
Tiêu đề tin (2)
Ảnh đại diện nếu có (3) Tiêu đề tóm tắt (4) . Tin 1 (5) . Tin 2 (6) . Tin 3 (7)
Mỗi thành phần (item) của DataList là một bảng có cấu trúc như trên.
(1): control Hyperlink thể hiện chủ đề của bản tin, khi được chọn, hệ thống sẽ hiển thị danh sách tin bài của chủ đề này.
(2): control Hyperlink thể hiện tiêu đề của bản tin, khi được chọn hệ thống sẽ hiện thị nội dung chi tiết của tin bài.
(3): control Image thể hiện ảnh đại diện tin bài.
(4): phần nội dung tóm tắt của tin bài.
(5),(6),(7): 3 control Hyperlink thể hiện 3 tin bài tiếp theo của chủ đề.
http://localhost/dnn2005/Default.aspx? tabid=58&NewID=124
Dựa vào cặp tham số NewID=value, hệ thống load nội dung tin bài được yêu cầu.
Nội dung chi tiết của tin bài Tiêu đề tin (1)
Ảnh đại diện nếu có (2)
Tiêu đề tóm tắt (3)
Nội dung tin bài (4) (1): nội dung tiêu đề tin
(2): control Image thể hiện ảnh đại diện của tin
(3): tiêu đề tóm tắt của bản tin (4): nội dung của tin bài
Module “Sự kiện đặc biệt”: danh sách những tin bài đặc biệt
• Database: lấy dữ liệu trong bảng [dnn_MyNews_News] - Trường [NewID]: số định danh của một tin bài cụ thể - Trường [TieuDe]: tiêu đề của tin bài
- Trường [TinDB]: những tin có trường TinDB =1 mới được load trong module này.
• Chức năng: trong quá trình thẩm định, những tin bài được biên tập viên đánh dấu là tin đặc biệt, hệ thống sẽ cập nhật vào database trương TinDB=1, để phân biệt với các tin bài bình thường (TinDB=0).
Control: DataList
Mỗi thành phần (item) của DataList là một Hyperlink, với Text là tiêu đề một bản tin. Mỗi khi một tin bài được chọn, URL được thay đổi: http://localhost/dnn2005/Default.aspx?
tabid=58&NewID=124
Dựa vào cặp tham số NewID=value, hệ thống load nội dung tin bài được yêu cầu.
Module “Tin đọc nhiều nhất”: danh sách những tin được truy cập nhiều nhất.
• Database: lấy dữ liệu trong bảng [dnn_MyNews_News] - Trường [NewID]: số định danh của một tin bài cụ thể - Trường [TieuDe]: tiêu đề của tin bài
- Trường [SLTruyCap]: số lần truy cập của tin bài
• Chức năng: khi nội dung của một tin bài được hiển thị, hệ thống tự động tăng trường SLTruyCap lên 1. Module này sẽ tìm duyệt, lấy ra những tin có số lần truy cập nhiều nhất để hiện thị.
• Thành phần trên giao diện
Giao diện Hoạt động
Control: DataList
Mỗi thành phần (item) của DataList là một Hyperlink, với Text là tiêu đề một bản tin. Mỗi khi một tin bài được chọn, URL được thay đổi: http://localhost/dnn2005/Default.aspx?
Module “Quản lý chủ đề”: bao gồm những chức năng tạo mới, sửa xóa chủ đề của hệ thống.
• Database: lấy dữ liệu trong bảng [dnn_MyNews_Categories]
- Trường [CategoryName]: thể hiện tên các chủ đề người dùng nhìn thấy.
- Trường [CategoryID]: số định danh của chủ đề - Trường [NoiDung]: nội dung của chủ đề
• Chức năng
- Tạo chủ đề mới: cung cấp giao diện tạo một chủ đề mới.
- Sửa chủ đề: cung cấp giao diện sửa nội dung chủ đề đã tồn tại
• Thành phần trên giao diện Giao diện
Hoạt động Tạo mới một chủ đề: TextBox: tên của chủ đề TextBox: nội dung của chủ đề Button: thêm mới một chủ đề
Khi thêm mới một chủ đề, hệ thống tạo mới một bản ghi trong bảng dnn_MyNews_Categories, với dữ liệu lấy từ 2 TextBox tên và nội dung chủ đề
Giao diện
Hoạt động Sửa / Xóa chủ đề
Control: GridView, với mỗi dòng là một chủ đề
Chức năng “Sửa”: khi được chọn, hệ thống chuyển sang giao diện:
Người sử dụng chọn “OK” để lưu lại nội dung đã sửa, chọn “Hủy Bỏ” để quay về trạng thái ban đầu.
Chức năng “Xóa”: khi chọn chức năng này, hệ thống đưa ra hộp thoại hỏi có chắc chắn muốn xóa chủ đề.
Module “Soạn, nộp tin bài”: cung cấp chức năng để người sử dụng tạo tin bài mới, gửi nộp những tin bài đã viết xong.
• Database: lấy dữ liệu trong bảng [dnn_MyNews_News] - Trường [NewID]: số định danh của một tin bài cụ thể - Trường [UserIDCreated]: số định danh của tác giả bài viết - Trường [NopBai]: thể hiện tin bài đã được nộp hay chưa
- Tạo bài mới: cung cấp giao diện để tạo một tin bài mới, người sử dụng có thể lưu lại để có thể chỉnh sửa ở lần sau hoặc gửi nộp bài luôn.
- Gửi nộp: hệ thống hiển thị danh sách tin bài chưa nộp để người sử dụng chỉnh sửa, gửi nộp lên mức trên.
• Thành phần trên giao diện Giao diện
Hoạt động Xem danh sách tin bài cá nhân
Control: GridView, mỗi dòng là một tin bài
Nộp bài: với những tin bài đã viết xong, người đứng tên bài viết chọn vào CheckBox, sau đấy click vào “Nộp bài” Xóa bài: chọn “Xóa” để hủy những tin bài không dùng đến Sửa: người đứng tên bài chọn “Sửa” hoặc click vào tiêu đề bài viết để sửa.
Thêm mới: khi muốn tạo bài viết mới chọn “Thêm mới”. Giao diện
Khi chọn tạo / sửa bài viết hệ thống hiển thị giao diện để người sử dụng thêm / thay đổi nội dung bài viết.
DropDownList: các chủ đề tồn tại trong hệ thống TextBox: Nội dung tiêu đề của tin bài
TextBox: Nội dung tóm tắt của tin bài
Image: Ảnh đại diện của tin bài, người sử dụng chọn “Browre…” để “Upload” ảnh lên server
TextEditor: Nội dung của tin bài, với control này, người sử dụng có thể thực hiện các chức năng chỉnh sửa như đang làm việc với chương Microsoft Office.
Button: cập nhật / tạo mới tin bài
Module “Xuất bản tin bài”: danh sách tin bài chờ thẩm định để đưa lên Web.
• Database: lấy dữ liệu trong bảng [dnn_MyNews_News] - Trường [NewID]: số định danh của một tin bài cụ thể.
- Trường [ThamDinh]: thể hiện tin bài đã được xuất bản hay chưa. - Trường [NgayTao]: ngày tin bài được tạo ra trong hệ thống.
• Chức năng: những tin bài sau khi được phóng viên nộp được biên tập viên thẩm định, xuất bản lên Web.
• Thành phần trên giao diện Giao diện
Hoạt động Xuất bản tin bài
bản lên Web.
Những bài viết sau khi được “chấm điểm” mới được xuất bản.
Người có quyền “Xuất bản” nhập điểm cho tin bài, sau đấy chọn “Cập nhật” để lưu lại nội dung.
Khi muốn xuất bản tin bài, người sử dụng chọn vào Check Box “Xuất bản”, sau đấy chọn “Xuất bản” tin bài.
Nếu muốn tin bài được hiển thị trong phần “Sự kiện trong ngày” thì chọn vào CheckBox “TinDB”.
Nếu không muốn sử dụng tin bài nào, người sử dụng chọn Hyperlink “Khong dùng”. Tin bài sẽ được đưa đến trạng thái tin không dùng.
TextBox: Nội dung tiêu đề của tin bài TextBox: Nội dung tóm tắt của tin bài
Image: Ảnh đại diện của tin bài, người sử dụng chọn “Browre…” để “Upload” ảnh lên server
TextEditor: Nội dung của tin bài, với control này, người sử dụng có thể thực hiện các chức năng chỉnh sửa như đang làm việc với chương Microsoft Office.
Button: cập nhật nội dung tin bài
Module “Danh sách tin bài đã xuất bản”: danh sách của tất cả các tin bài đã được xuất bản.
• Database: lấy dữ liệu trong bảng [dnn_MyNews_News] - Trường [NewID]: số định danh của một tin bài cụ thể - Trường [TieuDe]: tiêu đề của tin bài đã xuất bản - Trường [TenTacGia]: tên tác giả bài viết
• Chức năng: hiển thị danh sách của tất cả các tin bài đã được xuất bản.
• Thành phần trên giao diện Giao diện
Chọn chủ đề từ dropdownlist chủ đề, sau đấy click vào “Tìm kiếm”, hệ thống sẽ load tất cả tin bài đã xuất bản lên web trong chủ đề đã chọn.
Muốn sửa nội dung của tin bài chọn vào tiêu đề của tin bài hoặc biểu tượng “Xem”.
Muốn hủy xuất bản: xóa bỏ những tin bài đã được đưa lên web ta chọn biểu tượng “Hủy XB”.
Giao diện
Hoạt động Sửa bài viết
Người sử dụng chọn “Sửa” để thay đổi nội dung tin bài. DropDownList: các chủ đề tồn tại trong hệ thống
TextBox: Nội dung tiêu đề của tin bài TextBox: Nội dung tóm tắt của tin bài
Image: Ảnh đại diện của tin bài, người sử dụng chọn “Browre…” để “Upload” ảnh lên server
làm việc với chương Microsoft Office. Button: cập nhật nội dung tin bài
4.4 Giao diện chương trình
Soạn nộp tin bài
Biên tập viên Soạn nộp tin bài
Chủ đề
5. Tổng kết
Qua quá trình thực hiện chuyên đề tốt nghiệp, chúng tôi đã thu thập được rất nhiều kiến thức bổ ích về Dotnetnuke cũng như công nghệ .NET. Với quĩ thời gian có hạn của một chuyên đề tốt nghiệp, chúng tôi đã xây dựng một tòa soạn Báo điện tử đáp ứng được những chức năng cơ bản nhất mà nó cần phải có. Các chức năng nâng cao, phục vụ cho việc quản trị cũng như nâng cấp chương trình đòi hỏi nhiều thời gian và kĩ thuật đang được chúng tôi tìm hiểu và sẽ hoàn thành trong thời gian tới. Sau đây là những thành quả mà chúng tôi thu được trong quá trình thực hiện và những định