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ế mạnh có sẵn của DotNetNuke làm nền tảng cho sự phát triển sau này của
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ống 4.3.1 Các chức năng chính của hệ thống a. Đăng nhập hệ thống Phóng viên Đăng nhập Kiểm tra Lựa chọn chức năng True
Soạn nộp tin bài Danh sách tin bài
cá nhân False
Biên tập viên
Đăng nhập Kiểm tra Chọn chức năng
Danh sách tin bài không dùng Soạn nộp tin bài
Danh sách tin bài hủy xuất bản Danh sách tin bài
đã xuất bản Xuất bản tin bài
Chủ đề tin Danh sách tin bài
cá nhân
True
False
b. Sản xuất nội dung
Soạn nộp tin bài
Soạn nộp tin bài
Chọn
Thêm bài viết mới Sửa bài Nộp bài
Nhập thông tin
Yêu cầu xác nhận
Chọn
Thay đổi thông tin
Hệ thống tạo bài mới True Chọn bài cần xóa Hệ thống yêu cầu xác nhận xóa Chọn Hệ thống xóa bài True Chọn bài cần nộp Database False Xóa bài Yêu cầu xác nhận Chọn Hệ thống cập nhật dữ liệu True
False Hệ thống yêu cầu
xác nhận nộp False Chọn Hệ thống cập nhật trạng thái nộp bài True False
Hiển thị danh sách tin bài cá nhân
Danh sách tin bài cá nhân
Xem các tin bài
Hệ thống hiển thị thông tin bài và trạng thái
Database
Biên tập viên
Hiển thị danh sách tin bài cá nhân
Danh sách tin bài cá nhân
Xem các tin bài
Hệ thống hiển thị thông tin bài và trạng thái
Soạn nộp tin bài cá nhân
Soạn nộp tin bài
Chọn
Thêm bài viết mới Sửa bài Nộp bài
Nhập thông tin
Yêu cầu xác nhận
Chọn
Thay đổi thông tin
Hệ thống tạo bài mới True Chọn bài cần xóa Hệ thống yêu cầu xác nhận xóa Chọn Hệ thống xóa bài True Chọn bài cần nộp Database False Xóa bài Yêu cầu xác nhận Chọn Hệ thống cập nhật dữ liệu True
False Hệ thống yêu cầu
xác nhận nộp False Chọn Hệ thống cập nhật trạng thái nộp bài True False
Chủ đề tin bài
Chọn
Tạo chủ đề tin Sửa chủ đề tin Xóa chủ đề tin
Nhập thông tin
Yêu cầu xác nhận
Chọn
Thay đổi thông tin
Hệ thống tạo chủ đề mới Chọn bài cần xóa Hệ thống yêu cầu xác nhận xóa Chọn Hệ thống chủ đề Database Chủ đề tin Yêu cầu xác nhận Chọn Hệ thống cập nhật dữ liệu
True True True
Xuất bản tin bài
Chọn
Chấm điểm tin bài Sửa bài
Chọn bài cần chấm điểm
Chấm điểm
Chọn bài cần sửa Chọn bài cần xuất bản Xuất bản tin bài
Thay đổi thông tin
Chọn Hệ thống cập nhật dữ liệu Hệ thống yêu cầu xác nhận xuất bản Chọn Hệ thống cập nhật dữ liệu True True Xuất bản False False
Danh sách tin bài đã xuất bản
Chọn chủ đề tìm kiếm
Xem bài Hủy xuất bản
Hệ thống hiển thị
thông tin bài Chọn bài cần hủy
Database
Danh sách tin bài đã xuất bản
Hệ thống yêu cầu xác nhận hủy Chọn Hệ thống hủy xuất bản False True
Danh sách tin bài đã hủy xuất bản
Chọn
Xem nội dung Tái xuất bản
Hệ thống hiển thị thông tin
Chọn bài cần tái xuất bản
Database
Danh sách tin bài đã hủy xuất bản Hệ thống yêu cầu xác nhận tái xuất bản Chọn Hệ thống tái xuất bản False True
Danh sách tin bài không dùng
Chọn
Xem nội dung Sử dụng lại tin bài
Hệ thống hiển thị thông tin
Chọn bài cần sử dụng lại
Database
Danh sách tin bài không sử dụng
Hệ thống yêu cầu xác nhận sử dụng
lại tin bài Chọn
Hệ thống sử dụng lại tin bài
False
c. Quy trình đưa bản tin lên Web
Soạn nộp tin bài Xuất bản tin bài
Tin bài đã xuất bản Tin bài hủy xuất
bản
Lưu giữ
Tin bài không dùng Nộp bài
Xuất bản
Không dùngTái sử dụng
Tái xuất bản Hủy xuất bản
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
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 13 UserIDModify Int 1 ID của người sửa tin bài 14 NgayCapNhat Datetime 1 Ngày sửa tin bài
15 NopBai Bit 0 =0: tin bài chưa nộp =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
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.
Hệ thống Module Quản lý chủ đề tin Module Soạn nộp tin bài Module Xuất bản tin bài Module Danh sách tin bài đã xuất bản
Module Hủy xuất bản Module Chủ đề tin Module Tin tức Module Sự kiện đặc biệt
Trình diễn nội dung
Module Tin đọc nhiều nhất
Quản trị nội dung
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.
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.
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à 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
- 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ủ đề.
- nếu không có cặp giá trị CategoryID=value, load toàn bộ tin bài mới nhất của tất cả các 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.
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ủ đề.
Mỗi khi (2), (3), (5), (6), (7) được chọn, chuỗi URL được thay đổi:
http://localhost/dnn2005/Default.aspx?tabid=58&Ne wID=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 [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).
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?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ị.
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?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 “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
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
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
Chức năng
- 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.
Giao diện
Hoạt động Tạo / Sửa bài viết
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