Phân phối vai trò đến người sử dụng

Một phần của tài liệu Xây dựng CMS MODULE cho hệ thống internet của công ty TMA (Trang 146)

2. Mô tả các chức năng

2.4Phân phối vai trò đến người sử dụng

Mỗi người sử dụng có thể sở hữu một hoặc nhiều vai trò trong hệ CMS.

Khi thêm người sử dụng mới vào hệ thống, người quản lý người sử dụng có thể

gán nhiều vai trò cho người sử dụng. Sau đó, người quản lý này có thể sửa đổi các vai trò đã được gán trước đó hay thêm vào các vai trò mới cho người sử dụng.

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

2.5 Ti ưu hoá các thông tin cu hình h thng

Hệ CMS này hỗ trợ tốt việc tối ưu hoá các thông tin cấu hình của hệ thống. Các thông tin cấu hình chính có thể chỉnh sửa được trình bày dưới đây:

• Kiểu dữ liệu MIME. Ví dụ: phần mở rộng .html được áp dụng kiểu dữ

liệu MIME text/html. Các tập tin .js được áp dụng kiểu dữ liệu MIME text/javascript và các tập tin .pdf được áp dụng kiểu dữ liệu MIME application/pdf.

• Ngôn ngữ hiển thị.

• Thêm, xoá hay sửa đổi các tiêu đề trên menu.

• Vị trí của các tham số khởi tạo trang của người quản lý.

• Các giá trị mặc định khi trang web được tạo ra.

• Các template được hỗ trợ bởi hệ thống.

• Giao thức được sử dụng cho kết nối đến web site.

2.6 Biên son ni dung trang web

Sử dụng chức năng này của hệ CMS, người sử dụng có thể tạo ra các trang web. Trong quá trình tạo ra các trang web này, người sử dụng có thể chọn các template cho trang vừa tạo ra.

Trong quá trình biên soạn nội dung tran web, CMS cung cấp một môi trường biên soạn tiện dụng WYSIWYG. Ngoài ra, trong quá trình này, họ có thể thêm vào các hình ảnh cũng như là các đọan video để minh họa cho đoạn văn bản trên trang web. Thêm vào đó, việc tạo ra các liên kết đến một tài liệu để download cũng được hỗ trợ.

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

Sau cùng, chức năng này cung cấp cơ chế cho phép xem lại và sửa đổi nội dung vừa biên tập xong.

2.7 Áp dng template vào trang web

Hệ CMS này cho phép tạo ra dễ dàng các template để áp dụng cho các trang web. Người quản lý cấu hình hệ thống có thể tạo ra các template để những người biên soạn nội dung có thể áp dụng các template này vào trang web họ vừa tạo ra.

2.8 Phân loi ni dung

Hệ thống CMS của TMA được xây dựng dựa trên chuẩn JSR 170, do đó hệ

thống này hỗ trợ rất tốt việc phân lọai nội dung. Người sử dụng có thể sắp xếp các trang web tùy theo lọai của nó.

Các trang web được tổ chức trong một cấu trúc cây mà trong đó toàn bộ web site là gốc của cây và mỗi loại là một node con của gốc đó.

2.9 Truy nhp vào h CMS

Do mã nguồn ban đầu của Magnolia được phát triển để hoạt động như một ứng dụng độc lập, khi chúng ta muốn tích hợp mã nguồn này dưới dạng một portlet vào portal hiện tại của công ty TMA, chúng ta cần phải bỏ qua cơ chếđăng nhập riêng của Magnolia.

Để làm được điều này, khi người sử dụng đăng nhập vào hệ CMS, hệ thống này sẽ lấy các thông tin người sử dụng được lưu trên portal, sau đó hệ thống này sẽ dựa trên các thông tin vừa thu nhận được để cấp quyền tương ứng cho người sử dụng trong hệ thống CMS.

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

2.10 Tìm kiếm ni dung

Hệ thống CMS này cung cấp cơ chế tìm kiếm thông tin giúp người sử dụng tìm nội dung mình cần trên trang web. (adsbygoogle = window.adsbygoogle || []).push({});

Kết quả tìm kiếm được trình bày cùng với các liên kết đến các trang chứa nội dung tìm được.

2.11 La chn ngôn ng

Chức năng này cho phép lựa chọn các ngôn ngữ khác nhau tùy thuộc vào từng người sử dụng.

Trong hệ thống CMS của TMA, các ngôn ngữ sau đây được hỗ trợ: Pháp, Anh, Trung Quốc, Đức, Ý, Nhật, Tây Ban Nha, Nga…

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

Chương 9

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

1. System Architecture ca Magnolia CMS

1.1 Mô hình mt s package quan trng ca Magnolia CMS

Hình 29: Các gói chính của Magnolia CMS

1.2 Mô t các package

1.2.1 Package info.magnolia.cms

Package này chịu trách nhiệm xác nhận các yêu cầu từ phía người sử dụng và thu thập các nội dung cần thiết để phản hồi yêu cầu.

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

Package này gọi đến các trang JSP hay servlet tương ứng để hồi đáp yêu cầu.

1.2.2 Package info.magnolia.cms. security

Quản lý các vấn đề về bảo mật trên Repository.

Cho phép khóa một thành phần tránh sự truy cập của người sử dụng.

Định nghĩa các phương thức dùng thao tác trên Repository, vai trò, người sử

dụng trong mỗi phiên làm việc.

1.2.3 Package info.magnolia.cms.servlets

Khởi tạo và đọc các thông tin cấu hình của ứng dụng từ Repository. Chịu trách nhiệm xử lý và phản hồi các yêu cầu được gởi tới.

1.2.4 Package info.magnolia.cms.core

Thiết lập các thông số cấu hình cho Repository.

Thực hiện chức năng Cache khi có một yêu cầu được gởi đến. Có nghĩa là nếu những thông tin dùng phản hồi yêu cầu đã được lưu trong Cache thì phản hồi ngay. Nếu không thì lưu những thông tin của yêu cầu đó vào trong Cache.

Thực hiện chức năng tìm kiếm trên Repository.

Thêm, xoá, di chuyển nội dung các Page, Paragraphs hay các Properties.

Định nghĩa các phương thức hỗ trợ quản lý phiên bản.

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

Cung cấp các lớp thể hiện Page, Paragraph, Dialog, Tree… (adsbygoogle = window.adsbygoogle || []).push({});

Định nghĩa các hằng số hỗ trợđa ngôn ngữ.

1.2.6 Package info.magnolia.module.templating

Xác định và lưu lại các thông số về template của Paragraph, Page.

1.2.7 Package info.magnolia.repository

Package này cung cấp các phương thức cho các thao tác trên Repository

1.2.8 Package info.magnolia.exchange

Quản lý việc xuất bản nội dung từ bản author (dành cho người quản trị) san bản public (trang web đã xuất bản). Bao gồm :

• Quản lý kết nối để truyền dữ liệu đến một URL cụ thể.

• Tạo nội dung để gởi đi.

• Activate, DeActivate nội dung.

2. Hướng tiếp cn để tích hp

Để tích hợp Magnolia CMS dưới dạng một portlet vào portal hiện tại của TMA, chúng ta có 2 cách tiếp cận như sau

2.1 Hướng tiếp cn th 1

Trong cách tiếp cận này, trước tiên chúng ta sử dụng mã nguồn của Liferay portal để tạo ra một dự án J2EE. Sau đó, chúng ta đưa mã nguồn của Magnolia vào

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

trong dự án này. Các thành phần của Magnolia được đưa vào các thư mục tương ứng của dự án J2EE này.

Tiếp theo, chúng ta sửa đổi dự án J2EE để đáp ứng được nhu cầu đề ra ban đầu. Cuối cùng. Chúng ta biên dịch toàn bộ dự án này để tạo ra một gói ext.ear duy nhất. Và chúng ta sẽ đưa gói vừa biên dịch xong vào thư mục

JBOSS_HOME/server/default/deploy của application server JBoss (http://www.jboss.org)để chạy portal và portlet vừa được biên dịch.

Tuy nhiên, cách làm này tồn tại rất nhiều giới hạn mà trong đó, việc quản lý mã nguồn là khó khăn lớn nhất. Thật vậy, nếu tiếp cận theo hướng này, khi muốn tích hợp một portlet mới vào portal, chúng ta cần phải đưa toàn bộ các thành phần của portlet vào từng thư mục tương ứng của dự án J2EE. Do đó, trong quá trình phát triển dự án, chúng ta cần phải nhớ các package nào tương ứng với portlet và các package nào thì không phải. Ngoài ra, khi xảy ra lỗi, chúng ta rất khó sửa chữa các lỗi này do mã nguồn trong dự án J2EE này khá nhiều. Khó khăn này càng gia tăng khi chúng ta muốn mở rộng các chức năng của portal và phát triển nhiều portlet hơn cho portal.

Trong thực tế, các lập trình viên của nhóm TIS trong công ty TMA đã từng tiếp cận theo cách này và họ đã gặp phải vấn đề tương tự. Hiện nay, họ đã chuyển sang hướng tiếp cận thứ 2 được trình bày dưới đây.

2.2 Hướng tiếp cn th 2

Trong hướng tiếp cận này, chúng ta cũng tạo ra một dự án J2EE. Tuy nhiên, chúng ta chỉđưa và mã nguồn của Magnolia CMS vào trong dự án mà thôi.

Tiếp theo, chúng ta sửa đổi mã nguồn của Magnolia CMS và mã nguồn của portal để đáp ứng yêu cầu đặt ra ban đầu.

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

Sau đó, gói ext.ear của Liferay portal vào trong thư mục

JBOSS_HOME/server/default/deploy của application server JBoss.

Cuối cùng, chúng ta biên dịch dự án J2EE để nhận được một gói magnolia.war

và đưa package này vào thư mục JBOSS_HOME/server/default/deploy của application server JBoss để chạy.

Trong thực tế, cách tiếp cận này có thể tránh được những khó khăn mà cách tiếp cận thứ 1 gặp phải. Do đó, chúng tôi sẽ tích hợp hệ CMS vào portal hiện tại của công ty TMA theo cách này.

3. Cách thc thc hin (adsbygoogle = window.adsbygoogle || []).push({});

Để thực hiện theo cách tiếp cận thứ 2 vừa nêu trên, chúng ta cần phải thực hiện các bước chính sau :

• Tạo ra một dự án J2EE dựa trên mã nguồn của Magnolia CMS

• Chuẩn hoá dự án J2EE này theo chuẩn JSR 168

• Tích hợp hệ thống bảo mật của Magnolia vào hệ thống bảo mật của portal hiện tại của TMA : nguyên nhân là Magnolia CMS được xây dựng

để hoạt động như một ứng dụng độc lập, do đó, hệ CMS này có hệ thống bảo mật riêng của nó. Ngoài ra, portal của TMA cũng có hệ thống bảo mật riêng của portal. Do đó, khi người sử dụng muốn sử dụng hệ CMS này thì họ cần phải đăng nhập đến 2 lần : 1 lần để được phép vào portal và 1 lần nữa để được phép vào hệ CMS. Mà trong portal thì phải hỗ trợ

cơ chếsingle sign-on, cơ chế cho phép người sử dụng chỉ phải đăng nhập 1 lần vào portal để có thể sử dụng mọi chức năng của portal. Do đó, để

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

tích hợp Magnolia CMS vào portal hiện tại, chúng ta cần phải kết hợp 2 hệ thống bảo mật này để chỉ phải đăng nhập 1 lần duy nhất mà thôi.

3.1 To d án J2EE da trên mã ngun ca Magnolia

Trước tiên, chúng ta sử dụng Eclipse để tạo một dự án J2EE (trong báo cáo này, chúng tôi xin phép không trình bày các bước để tạo một dự án J2EE trong Eclipse).

Sau đó, chúng ta đưa toàn bộ mã nguồn của Magnolia vào trong dự án này. Sau cùng, chúng ta cần phải đưa các thư viện (các tập tin .jar.class) cần thiết vào trong dự án.

3.2 Chun hoá d án J2EE theo chun JSR 168

Sau quá trình tìm hiểu chuẩn JSR 168, chúng ta nhận thấy cần phải sửa đổi dự

án J2EE này để tuân thủ theo chuẩn JSR 168. Có nghĩa là ngoài các thư mục và tập tin của dự án J2EE, chúng ta cần phải sắp xếp lại các thành phần của dự án và sửa đổi tập tin build.xml (tập tin sử dụng ngôn ngữ kịch bản ant (http://apache.org/) để hỗ trợ

Eclipse trong việc biên dịch dự án) để tạo ra gói magnolia.war có cấu trúc như sau : magnolia.war |--- html (thư mục chứa các tập tin JSP) |--- WEB-INF |--- tld (thư mục chứa thư viện các thẻ) |--- classes |--- config |--- portlet.xml

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

|--- liferay-portlet.xml

|--- liferay-display.xml

|--- web.xml

Hình vẽ sau sẽ minh hoạ cấu trúc tổ chức này trong dự án được tạo ra trên

Eclipse

Hình 30: Cấu trúc dự án J2EE của hệ CMS

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA <portlet> <portlet-name>magnolia_id</portlet-name> <display-name>magnolia</display-name> <portlet-class>com.liferay.portlet.JSPPortlet</portlet-class> <init-param> <name>view-jsp</name> <value>/index.jsp</value> </init-param> <expiration-cache>0</expiration-cache> <supports> <mime-type>text/html</mime-type> </supports> <portlet-info> <title>magnolia</title> <short-title>magnolia</short-title> <keywords>magnolia</keywords> </portlet-info> <security-role-ref> <role-name>Guest</role-name> </security-role-ref> <security-role-ref> <role-name>Power User</role-name> </security-role-ref> <security-role-ref> <role-name>User</role-name> </security-role-ref> </portlet>

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

Tập tin liferay-portlet.xml có nội dung như sau : <portlets>

<portlet id=“magnolia_id” struts-path=“magnolia” use-default- template=“true” />

</portlets>

Ngoài ra, nội dung của tập tin liferay-display.xml như sau : <display>

<category name=“category.cms”> <portlet id=“magnolia_id” /> </category>

</display> (adsbygoogle = window.adsbygoogle || []).push({});

Sau cùng, nội dung của tập tin web.xml như sau: <context-param> <param-name>company_id</param-name> <param-value>liferay.com</param-value> </context-param> <listener> <listener-class> com.liferay.portal.servlet.PortletContextListener </listener-class> </listener>

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

... <taglib>

<taglib-uri>http://java.sun.com/portlet</taglib-uri>

<taglib-location>/WEB-INF/tld/liferay-portlet.tld</taglib-location> </taglib>

3.3 Tích hp h thng bo mt

Sau khi tìm hiểu kiến trúc hệ thống của portal hiện tại và kiến trúc hệ thống của Magnolia CMS, chúng ta nhận thấy rằng để tích hợp hệ thống bảo mật của Magnolia vào hệ thống bảo mật của portal, chúng ta cần phải thực hiện các sửa đổi chủ yếu trên package info.magnolia.cms.security của Magnolia CMS. các package khác của Magnolia CMS cũng cần được sửa đổi, như : info.magnolia.logging, info.magnolia.module.adminInterface, info.magnolia.cms.servlets… Ngoài ra, chúng ta cũng cần phải sửa đổi các tập tin JSP sử dụng các chức năng của các package vừa nêu và chuẩn hóa các trang JSP theo chuẩn JSR 168.

Tiếp theo, chúng ta sử dụng các APIs được cung cấp bởi các lớp của portal, như : CompanyLocalManagerUtil, UserManagerUtil, PrincipalBean, …để lấy các thông tin người sử dụng được cung cấp bởi họ khi đăng nhập vào portal. Các thông tin này được sử dụng để đăng nhập vào CMS thay vì sử dụng các thông tin đăng nhập

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

Qua đề tài này, chúng tôi có thêm nhiều kiến thức và kinh nghiệm trong việc phát triển một hệ CMS và tích hợp một thành phần vào một hệ thống thông tin có sẵn.

Ngoài ra, chúng tôi còn có thêm kinh nghiệm trong việc xây dựng các hệ CMS dưới dạng một thành phần hay một ứng dụng độc lập. Các hệ thống này có thể ứng dụng vào các doanh nghiệp hay các tổ chức có nhu cầu, đặc biệt là các toà soạn báo

điện tử.

Sau 6 tháng thực tập tại công ty TMA, chúng tôi học hỏi thêm nhiều kinh nghiệm thực tế trong một môi trường làm việc chuyên nghiệp và đầy năng động.

Thêm vào đó, chúng tôi có cơ hội nâng cao khả năng nghiên cứu và ứng dụng các kiến thức nghiên cứu được vào trong thực tế. Chúng tôi hiểu rõ hơn về các mặt mạnh và các giới hạn của việc sử dụng các công cụ mã nguồn mở và miễn phí, như : Linux, Eclipse, JBoss, Lomboz, J2SDK, MySQL, Liferay, Magnolia…

Về cơ bản luận văn đã thực hiện tốt các yêu cầu đề ra ban đầu của công ty .

• Xây dựng thành công hệ CMS dưới dạng một portlet để tích hợp vào portal hiện tại của công ty TMA.

• Tích hợp hệ thống bảo mật của CMS vào hệ thống bảo mật của TMA portal.

• Hệ CMS được xây dựng được sử dụng như làm một nơi chứa nội dung tập trung của các trang web trong các module của hệ thống Intranet.

• Hệ CMS được xây dựng dưới dạng một module để có thể dược sử dụng bởi các module khác trong hệ thống Intranet của công ty.

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

Tuy nhiên do giới hạn về thời gian và hiểu biết, chúng tôi xây dựng hệ thống CMS này vẫn còn một sốđiểm giới hạn và cần được cải thiện trong các phiên bản tiếp theo.

• Hệ thống CMS lưu trữ dữ liệu trong hệ thống tập tin của hệ điều hành.

Một phần của tài liệu Xây dựng CMS MODULE cho hệ thống internet của công ty TMA (Trang 146)