Xây dựng hệ thống CMS dựa trên nền tảng zend framework Xây dựng hệ thống CMS dựa trên nền tảng zend framework Xây dựng hệ thống CMS dựa trên nền tảng zend framework luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
Đinh Việt Bảo
XÂY DỰNG HỆ THỐNG CMS DỰA TRÊN NỀN TẢNG ZEND FRAMEWORK
Chuyên ngành: Công nghệ thông tin
Trang 2Đinh Việt Bảo - 13BCNTT2 1
Lời nói đầu
Ngày nay sự bùng nổ của ngành Công Nghệ Thông Tin, tin học hoá phát triển rất mạnh và nhanh chóng, nó đã trở thành một trong những ngành khoa học mũi nhọn của con người trong các tổ chức kinh tế, hành chính, đoàn thể trong các xí nghiệp và công ty
Việc áp dụng những thành tựu của ngành Công Nghệ Thông Tin vào mọi lĩnh vực của đời sống con người cũng ngày càng phát triển cả về chiều sâu lẫn chiều rộng,
nó đã làm giảm được rất nhiều khó khăn, đồng thời cũng nâng cao chất lượng và hiệu quả của công việc, vì vậy một hệ thống với kiến trúc hợp lý đóng vai trò không nhỏ trong sự thành công của dự án
Trong thời gian tìm hiểu vừa qua, em nhận thấy rằng đề tài Xây dựng hệ thống
CMS là một đề tài hay, được rất nhiều người làm và quan tâm, có tính thực tế, ứng
dụng cao Việc phát triển hệ thống này dựa trên nền tảng Zend Framework 2.0 sẽ giúp
cho việc xây dựng, thực hiện và triển khai hệ thống đạt hiệu quả tốt nhất Đó chính là
Trang 3Đinh Việt Bảo - 13BCNTT2 2
Mục lục
CHƯƠNG I TỔNG QUAN VỀ HỆ THỐNG CMS 4
1 Khái niệm 4
2 Lịch sử phát triển 4
3 Cấu trúc và chức năng của CMS 6
4 Xây dựng hệ thống CMS 7
5 Giới thiệu Zend Framework 9
5.1 Mô hình MVC 9
5.2 Tổng quan về Zend Framework 11
5.3 Các lớp phổ biến 13
5.4 Mô hình MVC trong Zend Framework 14
CHƯƠNG II XÂY DỰNG HỆ THỐNG CMS 18
1 Yêu cầu nghiệp vụ của hệ thống 18
1.1 Quản lý tài khoản cá nhân 18
1.2 Quản lý nhóm người dùng 18
1.3 Quản lý người dùng 19
1.4 Quản lý controler 19
1.5 Quản lý action 19
1.6 Quản lý menu 20
1.7 Quản lý hệ thống 20
1.8 Quản lý chuyên mục 21
1.9 Quản lý loại bài viết 22
1.10 Quản lý tag bài viết 22
1.11 Quản lý bài viết 22
1.12 Quản lý comment 25
1.13 Quản lý like 27
2 Mô hình tình huống người dùng 27
2.1 Quản trị hệ thống 27
2.2 Phóng viên / Cộng tác viên 37
2.3 Trưởng ban 41
2.4 Thư ký tòa soạn 45
2.5 Tổng biên tập 49
2.6 Quản trị phản hồi 53
2.7 Bạn đọc 55
3 Biểu đồ tuần tự 55
Trang 4Đinh Việt Bảo - 13BCNTT2 3
3.1 Phóng viên / Cộng tác viên 55
3.2 Trưởng ban 59
3.3 Thư ký tòa soạn 61
3.4 Tổng biên tập 63
4 Thiết kế cơ sở dữ liệu 65
4.1 Mô hình quan hệ 65
4.2 Danh sách các bảng 67
CHƯƠNG III THIẾT KẾ GIAO DIỆN CHƯƠNG TRÌNH 74
1 Thiết kế trang Back-End 74
1.1 Trang đăng nhập 74
1.2 Trang danh sách bài viết 76
1.3 Trang thêm bài viết 78
1.4 Trang chi tiết bài viết 84
2 Thiết kế trang Front-End 86
2.1 Trang chủ 86
2.2 Trang chuyên mục 88
2.3 Trang chi tiết bài viết 90
KẾT LUẬN 92
TÀI LIỆU THAM KHẢO 93
Trang 5Đinh Việt Bảo - 13BCNTT2 4
CHƯƠNG I TỔNG QUAN VỀ HỆ THỐNG CMS
1 Khái niệm
CMS viết tắt của Content Management System nghĩa là hệ thống quản trị nội dung Là phần mềm để tổ chức và tạo môi trường cộng tác thuận lợi nhằm mục đích xây dựng một hệ thống tài liệu và các nội dung khác nhau một cách thống nhất CMS
đã được áp dụng vào các chương trình quản lý nội dung Website, nó được dùng cho các trang web của một cá nhân hay tổ chức nào đó
CMS cung cấp những công cụ trực quan, đơn giản và thân thiện để người dùng phổ không cần biết nhiều về CNTT cũng có thể sử dụng để quản lý nội dung, các hoạt động của Website một cách dễ dàng
2 Lịch sử phát triển
Trong giai đoạn đầu phát triển của Internet, việc xuất bản một bài viết đều cần
như vậy sẽ làm cho người dùng mệt mỏi và tốn rất nhiều thời gian, nếu người dùng
viết lớn thì cách làm việc như vậy sẽ không thể thực hiện được, do đó, hệ quản trị nội dung CMS ra đời
CMS được xem như bước tiến dài trong lịch sử phát triển Internet Nó đã làm thay đổi cách quản lý và tiếp cận thông tin của người dùng, mà điều quan trọng là người dùng không cần phải biết về HTML để có thể đưa bài báo đó lên web Trước kia, khi ta cần tìm một thông tin nào đó, việc sử dụng những cách thức như tìm thông tin trên báo giấy, thông tin sổ sách sẽ rất vất vả Do đó, CMS được sử dụng khi mà
có quá nhiều thông tin cần xử lý, nó giúp ta tối ưu cả về công sức và chi phí, đồng
Trang 6Đinh Việt Bảo - 13BCNTT2 5
thời đem lại hiệu quả cao hơn rất nhiều Tuy nhiên người quản trị cần phải biên tập
và sắp xếp nội dung một cách phù hợp nhất mới có thể tìm kiếm thông tin một cách
dễ dàng
Có thể nói CMS là xu hướng chung của tất cả các Website ngày nay Blog là một dạng CMS, Wiki là một dạng CMS… CMS trong tương lai sẽ được tích hợp vào các hệ thống ERP của doanh nghiệp Các dữ liệu của doanh nghiệp sẽ được xuất bản trực tiếp lên Website mà không cần phải tốn nhiều công sức Ví dụ một nhà máy, họ vừa sản xuất ra một sản phẩm, sản phẩm này lập tức xuất hiện trên trang Web về thương mại điện tử của nhà máy đó, thông tin về sản phẩm sẽ được lấy từ dữ liệu của phòng kỹ thuật, giá cả thì lấy từ phòng kinh doanh, các phương thức khuyến mãi lại được truy cập trực tiếp từ phòng marketing Các báo cáo thuế của doanh nghiệp sẽ được xuất bản và gửi trực tiếp về phòng thuế… Một hệ thống CMS là một hệ thống quản lý mọi thứ, bời vì tất cả đều là content Cái hay của một hệ thống là làm sao tổ chức và quản lý được những content phi cấu trúc và quản lý được nhiều loại thông tin
W-CMS (Web CMS): Được sử dụng cho các trang tin tức, blog Hỗ trợ điều khiển và chỉnh sửa, biên tập nội dung Nội dung bao gồm tập tin điện tử, hình ảnh, video, file âm thanh, tài liệu điện tử và văn bản
E-CMS (Enterprise CMS): Được sử dụng cho các doanh nghiệp để nắm bắt, quản lý, lưu trữ, bảo quản và cung cấp nội dung và các tài liệu liên quan
T-CMS (Transactional CMS): Hỗ trợ việc quản lý các giao dịch thương mại điện tử
P-CMS (Publications CMS): Hỗ trợ việc quản lý các loại ấn phẩm trực tuyến (sổ tay, sách, trợ giúp, tham khảo )
Trang 7Đinh Việt Bảo - 13BCNTT2 6
L-CMS/LCMS (Learning CMS): Hỗ trợ việc quản lý đào tạo dựa trên nền Web
BCMS (Billing CMS): Hỗ trợ việc quản lý Thu chi dựa trên nền Web
3 Cấu trúc và chức năng của CMS
Hệ thống quản lý nội dung CMS chủ yếu được sử dụng để quản lý, xuất bản các văn bản dựa trên các tài liệu như bài viết, tài liệu dạng văn bản và thông tin Một CMS thường có các chức năng cơ bản sau:
Tạo lập nội dung
Lưu trữ nội dung
Chỉnh sửa nội dung
Truyền tải nội dung
Chia sẻ nội dung
Tìm kiếm nội dung
Phân quyền người dùng và nội dung
Đằng sau sự tiện lợi mà người dùng CMS sử dụng thì không thể không nhắc đến sự phức tạp, khó khăn của người phát triển hệ thống khi xây dựng CMS CMS
đích riêng Trên thực tế, tùy vào từng dự án, mô ̣t hoă ̣c mô ̣t vài thành phần có thể được
đáp ứng được các nhu cầu dưới đây:
Tính liên tục của thông tin
Khả năng quản lý người dùng
Khả năng quản lý truy câ ̣p
Khả năng quản lý mở rô ̣ng chức năng
Khả năng bảo mâ ̣t và báo lỗi
Trang 8Đinh Việt Bảo - 13BCNTT2 7
4 Xây dựng hệ thống CMS
Sự phát triển của Internet ngày nay giúp Website không còn là khái niệm quá
mơ hồ và xa lạ với người sử dụng máy tính Người dùng máy tính hoàn toàn có thể tạo dựng cho riêng mình một Website chỉ bằng vài cú bấm chuột dựa trên những hệ thống mã nguồn mở để hoạt động theo nhu cầu cá nhân, hoặc cao hơn nữa là dành cho một tổ chức Trong thời đại Công nghệ thông tin đang phát triển bùng nổ như hiện nay, việc sử dụng hệ thống CMS để xây dựng Website là một nhu cầu thiết yếu cho những cá nhân, công ty vừa và nhỏ trong và ngoài nước
Trên thế giới hiện đã có những hệ thống CMS phổ biến như: Joomla, Wordpress, Drupal, eZ Publish, OpenCMS, Magento , tuy vậy những CMS này đều có ưu và nhược điểm riêng, cụ thể như sau:
- Chưa đáp ứng các yêu cầu mở rộng như sự tương tác giữa các nhóm thành viên quản trị
Trang 9Đinh Việt Bảo - 13BCNTT2 8
- Mã nguồn của Joomla tương đối lớn dẫn tới tốn nhiều tài nguyên
- Giao diện chưa thân thiện
- Nhiều chức năng có độ phức tạp lớn, đòi hỏi người dùng phải có kiến thức CNTT
Có thể thấy những CMS phổ biến trên đều là những hệ thống CMS lớn, có quá nhiều chức năng, quá nhiều ứng dụng mở rộng (plugin hoặc extension) khiến người dùng có thể gặp khó khăn khi quản trị Chính vì vậy hệ thống CMS vừa và nhỏ có những chức năng cần thiết có sẵn mà không cần phải cài ứng dụng mở rộng, giao diện thân thiện, dễ sử dụng cần được ra đời, đáp ứng đủ cho một Website cung cấp nội dung, thông tin
Một hệ thống CMS bao gồm khá nhiều chức năng Do đó, trong đề tài này em chỉ đi sâu vào phân tích cụ thể các khâu về quản lý bài viết nghĩa là chỉ tập trung vào phần quản lý nội dung chứ chưa thể phân tích về các chức năng khác như: “quản lý tên miền, quản lý ngôn ngữ, quản lý giao diện, quản lý nhuận bút, lấy tin tự động ” Tóm lại, những chức năng: “quản lý nhóm người dùng, quản lý người dùng, quản lý controler, quản lý action, quản lý menu, quản lý chuyên mục, quản lý loại bài
Trang 10Đinh Việt Bảo - 13BCNTT2 9
viết, quản lý tag bài viết, quản lý bài viết, quản lý comment, quản lý like” sẽ là hướng phát triển của em
Về mặt phân tích và thiết kế hệ thống: kết quả thu được của đề tài từ các mô hình phân tích thiết kế hệ thống, cơ sở dữ liệu
Về mặt lập trình: trên cơ sở nghiên cứu và áp dụng Zend Studio để viết ứng dụng dựa trên nền tảng Zend Framework, hoàn thành các nội dung chủ yếu sau:
Hiểu và vận dụng thành công các lớp Zend Framework để xây dựng thành công các chức năng cơ bản và cần thiết của một hệ thống CMS
Đảm bảo hệ thống vận hành theo đúng cấu trúc của một ứng dụng Zend Framework (theo mô hình MVC)
Tối ưu hóa các lớp, sử dụng các lớp Zend Framework thay cho cách viết thẻ HTML
Đảm bảo sự độc lập của các chức năng, dễ dàng phát triển và nâng cấp
hệ thống
Trang giao diện người dùng phải đúng chuẩn SEO để tối ưu tìm kiếm
5 Giới thiệu Zend Framework
5.1 Mô hình MVC
MVC (Model-View-Controller) là mẫu kiến trúc phần mềm Khi sử đúng cách, mẫu MVC giúp cho người phát triển phần mềm cô lập các nguyên tắc nghiệp vụ và giao diện người dùng một cách rõ ràng hơn Phần mềm phát triển theo mẫu MVC tạo nhiều thuận lợi cho việc bảo trì vì các phần nghiệp vụ và giao diện ít liên quan đến nhau
Trang 11Đinh Việt Bảo - 13BCNTT2 10
Hình 2.1 Mô hình MVC
Model (Tầng dữ liệu): Là một đối tượng hoặc một tập hợp các đối tượng
biểu diễn cho phần dữ liệu của chương trình Nó được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu vào các kho chứa dữ liệu Tất cả các nghiệp vụ logic được thực thi ở Model Dữ liệu vào từ người dùng sẽ thông qua View đến Controller và được kiểm tra ở Model trước khi lưu vào cơ sở dữ liệu Việc truy xuất, xác nhận, và lưu dữ liệu
là một phần của Model
View (Tầng giao diện): Là phần giao diện với người dùng, bao gồm việc
hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa , để người dùng có thể thêm, xóa, sửa, tìm kiếm và làm các thao tác khác đối với dữ liệu trong hệ thống Thông thường, các thông tin cần hiển thị được lấy từ thành phần Model
Controller (Tầng điều khiển): Là phần điều khiển của ứng dụng, điều
hướng các nhiệm vụ (task) đến đúng phương thức (method) có chức năng
xử lý nhiệm vụ đó Nó chịu trách nhiệm xử lý các tác động về mặt giao
Trang 12Đinh Việt Bảo - 13BCNTT2 11
diện, các thao tác đối với Model, và cuối cùng là chọn một View thích hợp để hiển thị ra màn hình
Hình 2.2 Sơ đồ hoạt động của mô hình MVC
Ưu điểm và nhược điểm của MVC
Ưu điểm: Thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế
Do được chia thành các thành phần độc lập nên giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì
Nhược điểm: Đối với dự án nhỏ việc áp dụng mô hình MC gây cồng
kềnh, tốn thời gian trong quá trình phát triển Tốn thời gian trung chuyển
dữ liệu của các thành phần
5.2 Tổng quan về Zend Framework
Zend Framework là một tập hợp các lớp, các thư viện lập trình viết bằng PHP nhằm cung cấp một giao diện lập trình chuẩn cho các nhà phát triển ứng dụng Ngoài
ra, Zend Framework cũng có nhiều tính năng thú vị như các công cụ mã hóa code, một editor có thể kéo & thả dễ dàng sử dụng với sự hỗ trợ cho các công nghệ Front-End (HTML, CSS, JavaScript), debugging trực tuyến nhanh, các công cụ PHP Unit Testing, và một Database Wizard giúp kết nối cơ sở dữ liệu Zend Framework được
Trang 13Đinh Việt Bảo - 13BCNTT2 12
tạo ra với các phương pháp Agile tạo điều kiện để cung cấp các ứng dụng chất lượng cao
Zend Framework là một PHP Framework mạnh mẽ và ổn định được đóng gói với rất nhiều cấu hình tùy chọn vì thế nó rất tuyệt vời để sử dụng cho những dự án phức tạp Zend có các đối tác như IBM, Microsoft, Google và Adobe Trong phiên bản lớn phát hành sắp tới, Zend Framework 3 sẽ được tối ưu hóa cho PHP 7, nhưng vẫn sẽ hỗ trợ PHP 5.5 trở đi
Phiên bản hiện tại, Zend Framework 2 mà em sử dụng trong đề tài này là một Framework mã nguồn mở để phát triển các ứng dụng Web và các dịch vụ sử dụng được viết dựa trên ngôn ngữ lập trình phiên bản PHP 5.3 hoặc cao hơn
Zend Framework 2 sử dụng mô hình kiến trúc MVC và hoàn toàn viết theo kiểu hướng đối tượng Do được viết trên ngôn ngữ lập trình phiên bản PHP 5.3 hoặc cao hơn nên Framework này hỗ trợ Namespace, Late Static Binding, hàm Lambda và Closure
5.2.1 Lý do chọn Zend Framework
Hiện nay có rất nhiều loại PHP Framework như: Laravel, Symfony, CodeIgniter, Yii Hầu hết các PHP Framework đều có các điểm yếu và thế mạnh khác nhau, ví dụ Zend Framework đã được phổ biến từ phiên bản 1.3 và có đầy đủ các tính năng mạnh mẽ, cộng thêm một cộng đồng phát triển rộng lớn Theo thống kê trên trang chủ Zend Framework, tính đến thời điểm hiện tại, phiên bản Zend Framework 2 đã có tới 15 triệu lượt tải về Ngược lại, Laravel, Symfony, CodeIgniter, Yii lại là 1 loại PHP Framework khác, ra đời muộn hơn so với Zend Framework,
do đó những PHP Framework này ít cộng đồng phát triển hỗ trợ hơn Zend Framework, nhưng nó vẫn có người lựa chọn vì tính thân thiện với người dùng và dễ
Trang 14Đinh Việt Bảo - 13BCNTT2 13
(Business Analysis) rất chuẩn và khi cần mở rộng có thể dùng thể dùng tính chất thừa kế của OOP Nói chung là chúng ta không phải chỉnh sửa core của Zend Framework
Hầu như các phiên bản mới của Zend Framework ko có nhiều thay đổi trong core nên ta có thể dễ dàng update
Zend Framework tích hợp được gần như tất cả các thư viện PHP và các CMS khác để sử dụng Ví dụ: Smarty, Pear, FCKEditer, Drupal
Cách viết của Zend Framework rất thân thiện và đơn giản Tích hợp những công nghệ mới nhất của lập trình web như: JSON, Search, Syndication, Web Services
Zend Framework được sử dụng trong các dự án lớn và có kế hoạch phát triển dài lâu
Nhược điểm:
Mất nhiều thời gian để tìm hiểu về thư viện đồ sộ của Zend Framework
Một số lớp chưa ổn định, có sự thay đổi, gây khó khăn cho người sử dụng khi cập nhật các phiên bản
5.3 Các lớp phổ biến
Zend_Config: giúp chúng ta cấu hình ứng dụng, ví dụ như: cấu hình thông tin
kết nối cơ sở dữ liệu, cấu hình tên miền, email
Zend_Acl: giúp chúng ta phân quyền cho ứng dụng chi tiết trên từng action,
controller và module
Zend_Auth: sử dụng để xác thực tài khoản của người dùng khi đăng nhập vào
hệ thống
Zend_Crypt: sử dụng để mã hóa một chuỗi, thường dùng cho các trường hợp
mã hóa mật khẩu để lưu vào trong cơ sở dữ liệu
Zend_Db: dựa trên đối tuợng PDO (PHP Data Objects), cung cấp các thức kết
nối đến các loại cơ sở dữ liệu (MySQL, SQL Server, Couchbase )
Zend_Controller: giúp lấy các Request từ phía Client và thực thi nó bằng các
Action
Trang 15Đinh Việt Bảo - 13BCNTT2 14
Zend_View: chính là tầng View trong mô hình MVC, giúp chúng ta hiển thị
những kết quả trong xử lý từ Controller và Models ra bên ngoài
Zend_Router: cấu hình url của ứng dụng
Zend_Paginator: giúp phân trang dữ liệu khi hệ thống có số lượng bản ghi
lớn
Zend_Cache: giúp cho các ứng dụng Web tăng tốc độ tải dữ liệu, giúp cho hệ
thống không phải sử dụng CPU hoặc truy xuất vào cơ sở dữ liệu quá nhiều
Zend_Currency: dùng để xử lý, hiển thị định dạng liên quan đến tiền tệ
Zend_Date: xử lý tất cả các vấn đề liên quan thời gian
Zend_Mail: hỗ trợ sử dụng các giao thức gửi, nhận email
Zend_Feed: xử lý với Rss và Atom feeds
Zend_File: cung cấp, hỗ trợ mở rộng việc Upload và Download của các tập
tin Nó gắn liền với kiểm tra các chức năng của tập tin
Zend_Form: đơn giản hóa việc tạo form và xử lý các ứng dụng trên Website
Zend_Filters: lọc dữ liệu trước khi thực hiện một quá trình xử lý nào đó
Zend_Validate: dùng để kiểm tra dữ liệu nhập vào có phù hợp với yêu cầu
hay không
Zend_Pdf: sử dụng để tạo và xử lý các file PDF, lớp này thường được dùng
cho các chức năng liên quan đến báo cáo
Zend_Search: là một lớp cung cấp cho chúng ta các phương thức search trên
nội dung của các tập tin lưu trữ thông tin
Zend_Translate: là giải pháp cho các ứng dụng đa ngôn ngữ
5.4 Mô hình MVC trong Zend Framework
Zend Framework 2 được xây dựng theo mô hình MVC, do đó nó tuân thủ chặt chẽ những nguyên tắc mà mô hình MVC mang lại
Model: cung cấp tập hợp các lớp được trừu tượng hóa sử dụng cho việc truy
xuất dữ liệu Lớp phục vụ: Zend_DB, Zend_DB_Table
Trang 16Đinh Việt Bảo - 13BCNTT2 15
View: định nghĩa các thông tin hiển thị phía người dụng sau khi được xử lý và
JSON, XML )
Hình 2.3 Mô hình MVC trong Zend Framework
Cấu trúc thư mục của ứng dụng Zend Framework 2:
Để hỗ trợ các lập trình viên có thể dễ dàng tiếp cận - xây dựng nhanh chóng các ứng dụng Web, nhà phát triển Zend Framework cho ra đời bộ khung gọi là ZendSkeletonApplication Nó được xây dựng theo mô hình MVC mà thư viện Zend Framework 2 cung cấp và là nơi chứa toàn bộ thư viện Zend Framework 2, các modules mở rộng, các tập tin cấu hình để khởi tạo một ứng dụng
Những thư mục và tập tin quan trọng có trong bộ dự án mẫu (khung)
Trang 17Đinh Việt Bảo - 13BCNTT2 16
public
vendor
config: là nơi chứa những cấu hình của toàn bộ ứng dụng đang xây dựng;
nó bao gồm tập tin cấu hình application.config.php nơi khai báo các module sẽ được sử dụng, các thiết lập cấu hình cho toàn bộ ứng dụng…
và một thư mục autoload là những tập tin cấu hình tự động được load vào ứng dụng có đuôi mở rộng (*.local.php hoặc *.global.php) Những tập tin cấu hình có đuôi mở rộng là (*.local.php) sẽ bị bỏ qua khi commit dự
án lên Git, nên những thông tin nhạy cảm như tài khoản kết nối cơ sở dữ liệu cũng thường được đặt vào trong các tập tin này
data: thư mục chứa những dữ liệu được cached từ database, hoặc cache
những toàn bộ cấu hình của ứng dụng
module: nơi chứa những module mở rộng, mỗi lập trình viên đều có thể
xây dựng những module mới dành riêng cho ứng dụng của mình, và cũng
có thể đặt những module mở rộng đã được phát triển từ địa chỉ: http://modules.zendframework.com/ nhằm giúp xây dựng ứng dụng một cách nhanh chóng và hiệu quả nhất
public: là nơi những tập tin như css, js, font, hình ảnh để hỗ trợ cho
việc hiển thị Website trên trình duyệt, nó chứa những tài nguyên công khai và dễ dàng truy nhập
vendor: nơi chứa bộ thư viện Zend Framework 2 và những module mở
rộng khác Có thể đặt module mở rộng ở cả trong 2 thư mực module hoặc vendor
ZendSkeletonApplication cung cấp một module mẫu là Application, đây là module với các thành phần cơ bản nhất của Zend Framework Trong module này bao gồm các thư mục và file sau:
config: là thư mục chứa tập tin cấu hình của module: module.config.php
Các tập tin cấu hình của tất cả các module được khởi động chạy trong
Trang 18Đinh Việt Bảo - 13BCNTT2 17
ứng dụng sẽ được ghép thành một cấu hình chung để sử dụng trong quá trình khởi tạo và chạy ứng dụng
language : là thư mục chứa các tập tin ngôn ngữ, khi ứng dụng cần dùng
cho nhiều người dùng ở các quốc gia khác nhau, sử dụng ngôn ngữ khác nhau… Đây là một phần không thể thiếu khi phát triển một dự án hỗ trợ
đa ngôn ngữ
src: là nơi chứa mã nguồn phát triển của module Lập trình viên có thể
viết các lớp xử lý Controller, Model, View, Form… và sử dụng chúng ở bất cứ đâu trong module hoặc trong các module khác
view: là nơi chứa phần hiển thị tương ứng với các controller - action,
những mã html được viết trong các tập tin (*.phtml) tương ứng với từng action Nó còn gồm những trang thông báo lỗi 404 hoặc exception để hỗ trợ lập trình viên có thể kiểm soát và sửa lỗi
Module.php: là một tập tin không thể thiếu trong mỗi module, nó là một
lớp cùng tên dành riêng cho từng module Khi ứng dụng bước tới giai đoạn load các module, Module.php của từng module sẽ được khởi tạo và
nó giúp trả về các cấu hình cài đặt để sử dụng khi ứng dụng chạy
Trang 19Đinh Việt Bảo - 13BCNTT2 18
CHƯƠNG II XÂY DỰNG HỆ THỐNG CMS
1 Yêu cầu nghiệp vụ của hệ thống
1.1 Quản lý tài khoản cá nhân
1.1.1 Thông tin cá nhân
Chức năng cho phép người quản trị cập nhật thông tin cá nhân như: họ tên, mail, ảnh đại diện tương ứng với tài khoản mà họ đang đăng nhập hệ thống CMS 1.1.2 Thay đổi mật khẩu
e-Chức năng cho phép người quản trị cập nhật mật khẩu của tài khoản mà họ đang đăng nhập hệ thống CMS
Chức năng cho phép người quản trị xem được danh sách nhóm người dùng đã
có trong hệ thống, sau đó người quản trị có thể xem chi tiết thông tin của từng nhóm hiển thị ở danh sách nhóm hoặc cập nhật thông tin nhóm: thêm người dùng vào nhóm, phân quyền cho nhóm
Chức năng còn cho phép người quản trị tìm kiếm nhóm người dùng theo một hoặc nhiều ký tự xuất hiện trong tên nhóm Sau khi tìm kiếm xong hệ thống sẽ hiển thị danh sách nhóm người dùng để người quản trị có thể xem hoặc cập nhật thông tin của một nhóm bất kỳ
Trang 20Đinh Việt Bảo - 13BCNTT2 19
Chức năng còn cho phép người quản trị tìm kiếm người dùng đã có trong hệ thống theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thông tin người dùng Sau khi tìm kiếm, hệ thống sẽ hiển thị kết quả là danh sách người dùng, người quản trị sẽ chọn từng người dùng bất kỳ để cập nhật thông tin người dùng đó nếu muốn
1.4 Quản lý controler
1.4.1 Thêm controller
Chức năng cho phép người quản trị thêm các controller mới vào hệ thống (các controller này được phát triển trên nền tảng Zend Framework 2.0 dựa theo chuẩn mô hình MVC) Việc này nhằm đáp ứng ứng yêu cầu về tính mở của hệ thống
1.4.2 Danh sách controller
Chức năng cho phép người quản trị xem danh sách controller đã có trong hệ thống, người quản trị có thể chọn một controller từ danh sách và cập nhật thông tin của các controller đó
Chức năng còn cho phép người quản trị tìm kiếm các controller theo bất cứ ký
tự xuất hiện trong controller, sau khi tìm kiếm xong, hệ thống sẽ hiển thị danh sách controller để người quản trị có thể cập nhật thông tin của một controller bất kỳ nếu muốn
1.5 Quản lý action
1.5.1 Thêm action
Chức năng cho phép người quản trị thêm các action mới vào hệ thống (các action này được phát triển trên nền tảng Zend Framework 2.0 dựa theo chuẩn mô hình MVC) Việc này nhằm đáp ứng ứng yêu cầu về tính mở của hệ thống
Trang 21Đinh Việt Bảo - 13BCNTT2 20
1.5.2 Danh sách action
Chức năng cho phép người quản trị xem danh sách action đã có trong hệ thống, người quản trị có thể chọn một action từ danh sách và cập nhật thông tin của các action đó
Chức năng còn cho phép người quản trị tìm kiếm các action theo bất cứ ký tự xuất hiện trong action, sau khi tìm kiếm xong, hệ thống sẽ hiển thị danh sách action
để người quản trị có thể cập nhật thông tin của một action bất kỳ nếu muốn
Chức năng còn cho phép người quản trị tìm kiếm menu đã có trong hệ thống theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thông tin menu Sau khi tìm kiếm,
hệ thống sẽ hiển thị kết quả là danh sách menu, người quản trị sẽ chọn từng menu bất
kỳ để cập nhật thông tin menu đó nếu muốn
1.7 Quản lý hệ thống
1.7.1 Cấu hình hệ thống
Chức năng cho phép người quản trị cập nhật các thông tin cấu hình để sử dụng giá trị của tham số cấu hình đó trong toàn hệ thống với các mục đích khác nhau
Trang 22Đinh Việt Bảo - 13BCNTT2 21
- Info: Các log dạng thông báo
- Error: Các log thông báo lỗi
- System: Các thao tác của người dùng đã thực hiện trong hệ thống
Chức năng còn cho phép người quản trị tìm kiếm chuyên mục đã có trong hệ thống theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thông tin chuyên mục Sau khi tìm kiếm, hệ thống sẽ hiển thị kết quả là danh sách chuyên mục, người quản trị sẽ chọn từng chuyên mục bất kỳ để cập nhật thông tin chuyên mục đó nếu muốn
Trang 23Đinh Việt Bảo - 13BCNTT2 22
1.9 Quản lý loại bài viết
1.9.1 Thêm loại bài viết
Chức năng cho phép người quản trị thêm loại bài viết
1.9.2 Danh sách loại bài viết
Chức năng cho phép người quản trị xem danh sách loại bài viết đã có trong hệ thống Người quản trị có thể chọn bất kỳ loại bài viết nào từ danh sách để cập nhật các thông tin của loại bài viết đó
Chức năng còn cho phép người quản trị tìm kiếm loại bài viết đã có trong hệ thống theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thông tin loại bài viết Sau khi tìm kiếm, hệ thống sẽ hiển thị kết quả là danh sách loại bài viết, người quản trị sẽ chọn từng loại bài viết bất kỳ để cập nhật thông tin loại bài viết đó nếu muốn
1.10 Quản lý tag bài viết
1.10.1 Thêm tag bài viết
Chức năng cho phép người quản trị thêm tag bài viết
1.10.2 Danh sách tag bài viết
Chức năng cho phép người quản trị xem danh sách tag bài viết đã có trong hệ thống Người quản trị có thể chọn bất kỳ tag bài viết nào từ danh sách để cập nhật các thông tin của tag bài viết đó
Chức năng còn cho phép người quản trị tìm kiếm tag bài viết đã có trong hệ thống theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thông tin tag bài viết Sau khi tìm kiếm, hệ thống sẽ hiển thị kết quả là danh sách tag bài viết, người quản trị sẽ chọn từng tag bài viết bất kỳ để cập nhật thông tin tag bài viết đó nếu muốn
1.11 Quản lý bài viết
Chức năng cho phép các phóng viên, cộng tác viên, trưởng ban, thư ký toà soạn và tổng biên tập có thể đưa bài viết, biên tập và xuất bản bài viết đúng quy trình chung của các tòa soạn báo diện tử theo quy định và phê duyệt từ Bộ thông tin
và truyền thông
Trang 24Đinh Việt Bảo - 13BCNTT2 23
Quy trình nghiệp vụ xuất bản bài viết
False
False
False
Hình 3.1 Quy trình nghiệp vụ xuất bản bài viết
Ngoài ra chức năng cho phép cách tìm các bài viết trong hệ thống theo các tiêu chí sau:
- Theo ký tự xuất hiện trong tiêu đề, trích dẫn hoặc nội dung
- Theo trạng thái bài viết
- Theo chuyên mục của bài viết
- Thao tag bài viết
- Theo ngày xuất bản: từ ngày đến ngày
Trang 25Đinh Việt Bảo - 13BCNTT2 24
Kết quả tìm kiếm sẽ hiển thị danh sách tìm kiếm gồm các thông tin: số thứ tự, trạng thái, ngày xuất bản, tiêu đề, tác giả
1.11.1 Thêm bài viết
Chức năng cho phép người quản trị cập nhật bài viết, các thông tin liên quan đến bài viết gồm:
(a) Thông tin chung
(b) Nội dung bài viết
(c) Thông tin xuất bản:
- Ngày giờ xuất bản: Mặc định là ngày giờ hiện tại trong hệ thống, nếu là ngày giờ lớn hơn ngày giờ hiện tại thì hệ thống sẽ xuất bản bài viết vào ngày giờ đó
- Ghi chú: Là nội dung ghi chú về thao tác của người quản trị với bài viết (Hạ xuống, trả về trình bày soát lỗi, trả về biên tập )
- Chuyên mục: Là chuyên mục mà bài viết sẽ xuất bản vào đó, hệ thống cho phép bài viết xuất bản đồng thời vào nhiều chuyên mục
1.11.2 Danh sách bài viết cá nhân
- Danh sách bài viết của tôi: Chức năng cho phép người quản trị xem các bài viết mà mình đã đưa lên hệ thống
- Danh sách bài viết lưu tạm: Cho phép người quản trị xem các bài viết của mình
đã đưa lên hệ thống ở trạng thái lưu tạm
- Danh sách bài viết chờ biên tập: Cho phép người quản trị xem các bài viết của mình đã đưa lên hệ thống để chờ biên tập
- Danh sách bài viết chờ soát lỗi: Cho phép người quản trị xem các bài viết của mình đã đưa lên hệ thống để chờ soát lỗi
- Danh sách bài viết chờ xuất bản: Cho phép người quản trị xem các bài viết của mình đã đưa lên hệ thống để chờ xuất bản
- Danh sách bài viết đã xuất bản: Cho phép người quản trị xem các bài viết của mình đã đưa lên hệ thống và đã xuất bản
- Danh sách bài viết bị trả lại: Cho phép người quản trị xem các bài viết của mình đã đưa lên hệ thống và bị trả lại
Trang 26Đinh Việt Bảo - 13BCNTT2 25
- Danh sách bài viết bị hạ xuống: Cho phép người quản trị xem các bài viết của mình đã đưa lên hệ thống và đã xuất bản nhưng bị hạ xuống
1.11.3 Danh sách bài viết chờ xử lý
- Danh sách bài viết chờ biên tập: Chức năng cho phép người quản trị có quyền biên tập bài viết sẽ vào xem được danh sách bài viết đang chờ biên tập và biên tập lại nội dung Người có quyền biên tập sẽ trả bài viết về cho phóng viên nếu bài viết không đáp ứng được yêu cầu
- Danh sách bài viết chờ soát lỗi: Chức năng cho phép người quản trị có quyền soát lỗi bài viết vào xem được danh sách bài viết đang chờ soát lỗi để sửa lỗi
- Danh sách bài viết chờ xuất bản: Chức năng cho phép người quản trị có quyền xuất bản bài viết vào xem được danh sách bài viết đang chờ xuất bản để xuất bản Người có quyền xuất bản có quyền hạ những bài viết đã xuất bản, không cho phép hiển thị trên Front-End của Website
1.11.4 Danh sách bài viết đã xuất bản
Chức năng cho phép người quản trị có quyền xuất bản bài viết sẽ vào xem được danh sách bài viết đang đã xuất bản
1.11.5 Danh sách bài viết bị hạ xuống
Chức năng cho phép người quản trị có quyền xuất bản bài viết vào xem được danh sách bài viết đang bị hạ xuống
1.11.6 Danh sách tất cả bài viết
Chức năng cho phép người quản trị có quyền xem toàn bộ các bài viết trong hệ thống
1.11.7 Biên tập chuyên mục
Chức năng cho phép người quản trị biên tập bài viết đã xuất bản có trong hệ thống Người quản trị có thể sắp xếp thứ tự bài viết đã xuất bản trong các chuyên mục
1.12 Quản lý comment
Chức năng cho phép người quản trị xem danh sách comment về bài viết gửi lên
hệ thống (phần gửi thông tin comment về bài viết được bạn đọc thực hiện ở phía
Trang 27Đinh Việt Bảo - 13BCNTT2 26
Front End) Người quản trị có thể cập nhật thông tin từng comment: sửa, xóa, xuất bản, hạ xuống, từ chối nếu người quản trị có các quyền tương ứng
Chức năng còn cho phép người quản trị tìm kiếm comment đã có trong hệ thống theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thông tin comment, trạng thái, thời gian gửi Sau khi tìm kiếm, hệ thống sẽ hiển thị kết quả là danh sách comment, người quản trị sẽ chọn từng comment bất kỳ để cập nhật thông tin comment đó nếu muốn
1.12.1 Danh sách comment chờ xử lý
Chức năng cho phép người quản trị có thể xem danh sách comment chờ xử lý
về bài viết gửi lên hệ thống Người quản trị có thể cập nhật thông tin từng comment: sửa, xóa, xuất bản, hạ xuống, từ chối nếu người quản trị có các quyền tương ứng 1.12.2 Danh sách comment đã xuất bản
Chức năng cho phép người quản trị có thể xem danh sách comment đã xuất bản
về bài viết gửi lên hệ thống Người quản trị có thể cập nhật thông tin từng comment: sửa, xóa, xuất bản, hạ xuống, từ chối nếu người quản trị có các quyền tương ứng 1.12.3 Danh sách comment bị hạ xuống
Chức năng cho phép người quản trị có thể xem danh sách comment bị hạ xuống
về bài viết gửi lên hệ thống Người quản trị có thể cập nhật thông tin từng comment: sửa, xóa, xuất bản, hạ xuống, từ chối nếu người quản trị có các quyền tương ứng 1.12.4 Danh sách comment bị hạ xuống
Chức năng cho phép người quản trị có thể xem danh sách comment bị từ chối
về bài viết gửi lên hệ thống Người quản trị có thể cập nhật thông tin từng comment: sửa, xóa, xuất bản, hạ xuống, từ chối nếu người quản trị có các quyền tương ứng 1.12.5 Danh sách comment theo bài viết
Chức năng cho phép người quản trị có thể xem danh sách comment về bài viết gửi lên hệ thống theo danh sách bài viết trong hệ thống Tại mỗi bài viết, người quản trị có thể thấy được chi tiết số lượng comment chờ xử lý, đã xuất bản, bị hạ xuống, bị
từ chối Sau đó người quản trị có thể cập nhật thông tin từng comment: sửa, xóa, xuất bản, hạ xuống, từ chối nếu người quản trị có các quyền tương ứng
Trang 28Đinh Việt Bảo - 13BCNTT2 27
1.13 Quản lý like
1.13.1 Danh sách tất cả like
Chức năng cho phép người quản trị xem danh sách like bài viết gửi lên hệ thống (phần gửi thông tin like về bài viết được bạn đọc thực hiện ở phía Front End) Người quản trị có thể xem thông tin hoặc xóa từng like
Chức năng còn cho phép người quản trị tìm kiếm like đã có trong hệ thống theo tiêu chí: thời gian gửi Sau khi tìm kiếm, hệ thống sẽ hiển thị kết quả là danh sách like, người quản trị sẽ chọn từng like bất kỳ để xem thông tin hoặc xóa like đó nếu muốn
1.13.2 Danh sách like theo bài viết
Chức năng cho phép người quản trị có thể xem danh sách like bài viết gửi lên
hệ thống theo danh sách bài viết trong hệ thống Sau đó người quản trị có thể xem thông tin hoặc xóa like
2 Mô hình tình huống người dùng
Thêm nhóm người dùng
Sửa
nhóm người dùng
Phân quyền hệ thống
<<extend>>
<<extend>>
Quản lý người dùng
Trang 29Đinh Việt Bảo - 13BCNTT2 28
người dùng
Xem chi tiết
người dùng
Thêm người dùng
Trang 30Đinh Việt Bảo - 13BCNTT2 29
Trang 31Đinh Việt Bảo - 13BCNTT2 30
thích
Thống kê bình luận
Xem chi tiết
chuyên mục
Thêm chuyên mục
<<extend>>
Quản lý loại bài viết
Trang 32Đinh Việt Bảo - 13BCNTT2 31
loại bài viết
Xem chi tiết loại
Quản lý tag bài viết
tag bài viết
Xem chi tiết tag
Trang 33Đinh Việt Bảo - 13BCNTT2 32
Quản trị hệ thống Xem danh sách
<<extend>>
Phân rã use case: Thêm bài viết
Thêm bài viết
Trả về thư ký tòa soạn
Trả về phóng viên / biên tập viên
Trang 34Đinh Việt Bảo - 13BCNTT2 33
Xem danh sách bài viết
Trang 35Đinh Việt Bảo - 13BCNTT2 34
Quản lý phiên bản bài viết
So sánh phiên bản
Xem chi tiết phiên bản
Trả về thư ký tòa soạn
Trả về phóng viên / biên tập viên
Trang 36Đinh Việt Bảo - 13BCNTT2 35
Xóa bài viết
Trả về thư ký tòa soạn
Trả về phóng viên / biên tập viên
Trang 37Đinh Việt Bảo - 13BCNTT2 36
Xem danh sách comment <<extend>> Xuất bản
Hạ xuống
<<extend>>
Từ chối <<extend>>
Tìm kiếm comment
<<include>
Phân rã use case: Sửa comment
Sửa comment <<extend>> Xuất bản
Hạ xuống
<<extend>>
Từ chối <<extend>>
Phân rã use case: Xem chi tiết comment
Xem chi tiết comment <<extend>> Xuất bản
Hạ xuống
<<extend>>
Từ chối <<extend>>
Sửa comment
<<extend>>
Xóa comment
<<extend>>
Trang 38Đinh Việt Bảo - 13BCNTT2 37
tag bài viết
Xem chi tiết tag
Trang 39Đinh Việt Bảo - 13BCNTT2 38
Phân rã use case: Thêm bài viết
Thêm bài viết
Gửi trưởng ban
Trang 40Đinh Việt Bảo - 13BCNTT2 39
Xem danh sách bài viết