XÂY DỰNG COMPONENT QUẢN LÝ DỰ ÁN PHẦN MỀM CHO WEBSITE JOOMLA

  • Số trang: 93 |
  • Loại file: DOC |
  • Lượt xem: 76 |
  • Lượt tải: 0
nguyen-thanhbinh

Đã đăng 8358 tài liệu

Mô tả:

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN Tel. (84-511) 3736 949, Fax. (84-511) 842 771 Website: itf.ud.edu.vn, E-mail: cntt@ud.edu.vn BÁO CÁO THỰC TẬP TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN MÃ NGÀNH : 05115 ĐỀ TÀI : XÂY DỰNG COMPONENT QUẢN LÝ DỰ ÁN PHẦN MỀM CHO WEBSITE JOOMLA SINH VIÊN : Nguyễn Thị Thu Thiện Lê Thị Hồng Thủy LỚP : 04T4 CBHD : T.S Nguyễn Thanh Bình Th.S Nguyễn Văn Nguyên ĐÀ NẴNG, 05/2009 LỜI CẢM ƠN Tôi chân thành cảm ơn Thầy cô trong khoa Công nghệ thông tin cũng như các thầy cô giảng dạy trong trường Đại học Bách khoa Đà Nẵng đã truyền đạt những kiến thức quý báu cho chúng tôi trong những năm học vừa qua. Đặc biệt, tôi xin chân thành cảm ơn thầy giáo Nguyễn Thanh Bình và thầy Nguyễn Văn Nguyên - thuộc khoa Công nghệ thông tin, trường Đại học Bách khoa Đà Nẵng đã tận tình hướng dẫn, động viên và giúp đỡ tôi trong suốt thời gian thực hiện đề tài. Và để có được kết quả như ngày hôm nay, tôi rất biết ơn gia đình đã động viên, khích lệ, tạo mọi điều kiện thuận lợi nhất trong suốt quá trình học tập cũng như quá trình thực hiện đề tài tốt nghiệp này. Xin chân thành cám ơn các bạn trong khoa Công nghệ thông tin – khóa 04, đặc biệt là các bạn lớp 04T4 đã ủng hộ, giúp đỡ, chia sẻ kiến thức, kinh nghiệm và tài liệu có được cho tôi trong quá trình nghiên cứu và thực hiện đề tài. Một lần nữa tôi xin chân thành cảm ơn ! LỜI CAM ĐOAN Tôi xin cam đoan: 1 Những nội dung trong báo cáo này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của thầy T.S Nguyễn Thanh Bình và thầy Th.S Nguyễn Văn Nguyên. 2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố. 3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm. Sinh viên, Ngưyễn Thị Thu Thiện Lê Thị Hồng Thủy MỤC LỤC MỞ ĐẦU..................................................................................................................1 I. Đặt vấn đề.......................................................................................................1 II. Lý do chọn đề tài.........................................................................................1 III. Hướng nghiên cứu của đề tài.......................................................................2 III.1. Về mặt lý thuyết...............................................................................2 III.2. Công cụ xây dựng đề tài...................................................................2 IV. Dự kiến kết quả đạt được............................................................................2 V. Nội dung tóm tắt các chương tiếp theo........................................................3 CƠ SỞ LÝ THUYẾT..............................ERROR! BOOKMARK NOT DEFINED. VI. Giới thiệu về joomla....................................................................................1 VI.1. Joomla là gì?....................................................................................1 VI.2. Các dòng phiên bản của Joomla.......................................................1 VI.3. Kiến trúc Joomla..............................................................................1 VII. Một số khái niệm trong Joomla...................................................................2 VII.1. Front-end và back-end......................................................................2 VII.1.1. Front-end......................................................................................2 VII.1.2. Back-end.......................................................................................2 VII.2. Template..........................................................................................2 VII.3. Menu................................................................................................2 VII.4. Các thành phần mở rộng..................................................................3 VII.4.1. Module.........................................................................................3 VII.4.2. Component...................................................................................3 VII.4.3. Mambot (Plug-in).........................................................................4 VIII. Cách xây dựng một component trong Joomla 1.5....................................6 VIII.1. Giới thiệu mô hình MVC.................................................................6 VIII.2. Cài đặt Joomla MVC........................................................................6 VIII.3. Tạo một component..........................................................................7 VIII.3.1. Tạo một entry point......................................................................7 VIII.3.2. Tạo Controller..............................................................................8 VIII.3.3. Tạo View......................................................................................9 VIII.3.4. Tạo Template..............................................................................10 VIII.3.5. Đóng gói tất cả- Tạo file hello.xml.............................................10 VIII.4. Bổ sung Model vào component......................................................12 VIII.4.1. Tạo Model..................................................................................12 VIII.4.2. Sử sụng Model............................................................................13 VIII.4.3. Bổ sung file vào package............................................................14 VIII.5. Sử dụng cơ sở dữ liệu trong component MVC...............................15 VIII.5.1. Lấy dữ liệu..................................................................................15 VIII.5.2. Tạo file SQL trong quá trình cài đặt và gỡ bỏ component..........16 VIII.5.3. Cập nhật file cài đặt....................................................................17 VIII.6. Tạo giao diện quản trị trong MVC.................................................19 VIII.6.1. Tạo Framework cơ sở.................................................................19 i VIII.6.2. VIII.6.3. VIII.6.4. Model Hellos..............................................................................20 View Hellos................................................................................22 Template hellos..........................................................................23 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG.........................................................25 IX. Phân tích hệ thống thông tin......................................................................25 IX.1. Sơ đồ Use Case..............................................................................26 IX.1.1. Use Case “Projects Management”..................................................26 IX.1.2. Use Case “Tasks Management”......................................................26 IX.1.3. Use Case “Delivery Management”.................................................27 IX.1.4. Use Case “Requirements Management”.........................................27 IX.1.5. Use Case “Design Management”....................................................28 IX.1.6. Use Case “Coding Management”...................................................28 IX.1.7. Use Case “Risks Management”......................................................29 IX.1.8. Use Case “File Manage”................................................................29 IX.1.9. Use Case “Calendar Management”.................................................30 IX.1.10. Use Case “Board Management”.................................................30 IX.1.11. Use Case “Profile Management”................................................31 IX.1.12. Use Case “User Management”....................................................31 IX.2. Danh sách Actor, Phân Quyền và Use Case...................................31 IX.2.1. Actor..............................................................................................31 IX.2.2. Use Case.........................................................................................32 IX.3. Đặc tả chi tiết.................................................................................35 IX.3.1. Use Case “Login”...........................................................................35 IX.3.2. Use Case “Projects Management”..................................................36 I.1.2. Use Case “Tasks Management”......................................................38 I.1.2. Use Case “Delivery Management”.................................................39 I.1.2. Use Case “Requirements Management”.........................................41 I.1.2. Use Case “Design Management”....................................................42 I.1.3. Use Case “Coding Management”...................................................44 I.1.4. Use Case “Risks Management”......................................................45 I.1.5. Use Case “File Manage”................................................................46 I.1.2. Use Case “Calendar Management”.................................................48 I.1.3. Use Case “Board Management”.....................................................49 I.1.4. Use Case “Profile Management”....................................................51 I.1.5. Use Case “User Management”.......................................................51 I.2. Sơ đồ tuần tự......................................................................................53 I.2.1. Chức năng “Login”.........................................................................53 I.2.2. Chức năng “Projects Management”................................................53 I.2.3. Chức năng “Tasks Management”...................................................55 I.2.4. Chức năng “Delivery Management”...............................................56 I.2.5. Chức năng “Requirements Management”.......................................57 I.2.6. Chức năng “Design Management”................................................58 I.2.7. Chức năng “Coding Management”.................................................59 I.2.8. Chức năng “Risks Management”....................................................60 I.2.9. Chức năng “File Manage”.............................................................61 I.2.10. Chức năng “Calendar Management”..............................................62 ii Mục lục iii I.2.11. Chức năng “Board Management”...................................................63 I.2.12. Chức năng “User Management”.....................................................64 I.3. Thiết kế hệ thống...............................................................................65 I.3.1. Tổ chức dữ liệu..............................................................................65 XÂY DỰNG CHƯƠNG TRÌNH VÀ KẾT QUẢ THỰC HIỆN.........................76 I. Công cụ và môi trường phát triển..................................................................76 I. Một số kết quả đạt được................................................................................76 I.1. Màn hình khởi động...........................................................................76 I.2. Màn hình “Tasks Management”.........................................................77 II. Màn hình “Delivery Management”...........................................................77 II.1. Màn hình “Requirements Management”............................................78 II.2. Màn hình “Design Management”.......................................................78 II.3. Mành hình “Coding Management”....................................................79 II.4. Màn hình “Risks Management”.........................................................79 II.5. Màn hình “Upload File”.....................................................................80 II.6. Màn hình “Calendar Management”....................................................80 II.7. Màn hình “Update profile”................................................................81 II.8. Màn hình “User Management”..........................................................81 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN................................................................82 Mục lục iv CHƯƠNG 1 MỞ ĐẦU .I Đặt vấn đề Ngày nay, các ứng dụng mã nguồn mở hầu như đáp ứng đầy đủ các yêu cầu sử dụng của doanh nghiệp. Từ việc triển khai các trang web với Joomla, diễn đàn với PhpBB, hệ thống elearning Moodle cho đến các ứng dụng quản lý khách hàng SugarCRM, quản lý dự án... Một trong những thuận lợi đầu tiên của việc ứng dụng mã nguồn mở là tiết kiệm chi phí. Ngoài ra, khi ứng dụng phần mềm chạy trên nền web người dùng sẽ dễ dàng truy cập và sử dụng bằng các trình duyệt như Firefox hay IE mà không cần phải cài đặt gì thêm. Có nhiều chương trình mã nguồn mở khác nhau, chúng tôi chọn tìm hiểu về hệ thống quản lý tin Joomla CMS vì Joomla được sử dụng ở khắp mọi nơi trên thế giới, từ những website cá nhân cho tới những hệ thống website doanh nghiệp có tính phức tạp cao, cung cấp nhiều dịch vụ và ứng dụng. Joomla có thể dễ dàng cài đặt, dễ dàng quản lý và có độ tin cậy cao. Joomla giúp mọi người có thể phát triển việc kinh doanh, học tập, giảng dạy, giới thiệu, quảng bá hình ảnh, dịch vụ, sản phẩm của mình, của công ty, của trường mình một cách tốt nhất, hiệu quả nhất với chi phí thấp nhất.. Ngoài ra, chương trình này còn được hỗ trợ bởi một cộng đồng rộng lớn, đáp ứng các yêu cầu về an toàn và bảo mật thông tin... Để tìm hiểu mô hình hoạt động và cách xây dựng một ứng dụng trên nền Joomla, chúng tôi xin giới thiệu đề tài « Xây dựng component quản lý dự án phần mềm cho website Joomla » Mặc dù ứng dụng đã triển khai được phần lớn các yêu cầu chính trong việc quản lý một dự án phần mềm, tuy nhiên việc xây dựng một chương trình quản lý dự án là khá phức tạp. Do đó ứng dụng này không tránh khỏi những thiếu sót, rất mong nhận được nhiều ý kiến nhận xét của thầy cô và các bạn để chúng tôi có thể rút kinh nghiệm cho việc xây dựng những ứng dụng thực tế sau này. .II Lý do chọn đề tài Trong thuật ngữ của chuyên ngành Kĩ nghệ phần mềm, Quản lý dự án phần mềm là các hoạt động trong lập kế hoạch, giám sát và điều khiển tài nguyên dự án, thời gian thực hiện, các rủi ro trong dự án và cả quy trình thực hiện dự án; nhằm đảm bảo thành công cho dự án. Khi triển khai một dự án phần mềm thì các vấn đề sau thường xảy ra: thời gian thực hiện quá mức dự kiến, kết quả của dự án không như mong đợi...Để tránh những vấn đề đó xảy ra đòi hỏi người quản lý phải làm tốt về:  Quản lý thời gian: lập lịch, kiểm tra đối chiếu quá trình thực hiện dự án với lịch trình, điều chỉnh lịch trình khi cần thiết Tên tác giả, LỚP XXX 1  Quản lý nhân lực: xác định, điều phối nhân lực cho hợp lý  Quản lý sản phẩm: thêm, bớt các chức năng phù hợp với yêu cầu của khách hàng  Quản lý rủi ro: xác định, phân tích rủi ro và đề xuất giải pháp khắc phục. Xuất phát từ những yêu cầu trên, chúng tôi đã chọn đề tài « Xây dựng component quản lý dự án phần mềm cho website Joomla » làm đề tài tốt nghiệp. Việc xây dựng một ứng dụng như vậy nhằm áp dụng những kiến thức mà chúng tôi đã được học ở trường trong thời gian qua vào thực tiễn với mong muốn sẽ làm cho công việc quản lý dự án doanh nghiệp phần mềm sẽ thuận tiện hơn. Chương trình được viết trên nền web nên những người tham gia dự án chỉ cần truy cập vào website của công ty để lấy những thông tin về dự án, trao đổi về công việc. Hơn nữa người quản lý vẫn có thể xem xét quá trình làm dự án, trực tiếp quản lý dự án đó khi vắng mặt ở công ty. .III Hướng nghiên cứu của đề tài .III.1. Về mặt lý thuyết  Tìm hiểu về CMS Joomla, ngôn ngữ PHP, MySQL, cách xây dựng component cho website Joomla.  Tìm hiểu về các thao thác cơ bản trong việc quản lý dự án nói chung và quản lý dự án phần mềm nói riêng.  Đưa ra một số định hướng để phát triển đề tài. .III.2. Công cụ xây dựng đề tài  Công cụ nghiên cứu cơ sở lý thuyết: Các tài liêu tham khảo về ngôn ngữ PHP, MySQL, Joomla, quản lý dự án...  Công cụ thiết kế phần mềm: trình duyệt Firefox, Internet Explore, Joomla 1.5.9, Jcode studio for Joomla, StarUML... .IV Dự kiến kết quả đạt được Xậy dựng component cho website Joomla thực hiện một số công việc cơ bản của quản lý dự án phần mềm như:  Hiển thị thông tin các dự án mà công ty đang thực hiện. Chương trình cho phép admin và trưởng dự án trực tiếp chỉnh sửa, cập nhật thông tin về dự án trên đó. Nhân viên sau khi xem thông tin về dự án nếu muốn tham gia có thể gởi yêu cầu và nếu đựợc admin hay trưởng dự án đồng ý thì sẽ trở thành thành viên của dự án. Tên tác giả, LỚP XXX 2  Trưởng dự án có thể chia một dự án ra thành nhiều task nhỏ, mỗi task có một thời hạn deadline riêng, do một nhân viên trực tiếp chịu trách nhiệm để tiện cho việc quản lý  Mỗi dự án phần mềm được chia ra thành những phần cụ thể như :  Task: Mỗi dự án chia ra thành các công việc nhỏ hơn. Mỗi công việc có một thời hạn deadline riêng.  Requirement: đưa ra những yêu cầu của khách hàng về dự án phần mềm đó  Design: đưa ra các bản thiết kế cho phần mềm sao cho phù hợp với requirement, mỗi requirement có thể có nhiều mẫu design khác nhau  Coding: phần này để quản lý việc coding của dự án, ứng với mỗi design thì có một hoặc nhiều phần coding khác nhau  Risks: là nơi đưa ra những rủi ro dự kiến được của dự án, hậu quả và cách khắc phục...  Delivery: trưởng dự án đưa ra thông tin về kế hoạch chuyển giao cho khách hàng ở đây để mọi người tham khảo và điều chỉnh kế hoạch làm việc của mình cho kịp tiến độ  Quản lý file: Các thành viên của dự án có thể đưa những tài liệu có liên quan lên đây cho mọi người. Chương trình cho phép tạo một thư mục mới và liên kết với task có liên quan.  Diễn đàn thảo luận nội bộ của các thành viên trong dự án: là nơi để các thành viên trong dự án đưa lên những ý kiến của mình, những khó khăn khi thực hiện để trưởng dự các và các thành viên khác xem xét, cân nhắc, đưa ra ké hoạch làm việc phù hợp.  Quản lý thành viên: Mỗi nhân viên phải có tài khoản đăng kí trên website của công ty. Nếu muốn nhân viên đó trở thành thành viên của dự án thì admin hay trưởng dự án sẽ dùng tên tài khoản mà nhân viên đã đăng kí hoặc địa chỉ mail của nhân viên để add vào dự án .V Nội dung tóm tắt các chương tiếp theo Chương 1: Cơ sở lý thuyết Chương 2: Phân tích và thiết kế hệ thống Chương 3: Xây dựng chương trình và kết quả thực hiện Chương 4: Kết luận Tên tác giả, LỚP XXX 3 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT Tên tác giả, LỚP XXX 1 .I Giới thiệu về joomla .I.1. Joomla là gì? Joomla là một hệ quản trị nội dung mã nguồn mở (Open Source Content Management Systems).Joomla được viết bằng ngôn ngữ PHP và kết nối tới cơ sở dữ liệu MySQL , cho phép người sử dụng có thể dễ dàng xuất bản các nội dung của họ lên Internet hoặc Intranet. Joomla có các đặc tính cơ bản là: bộ đệm trang (page caching) để tăng tốc độ hiển thị, lập chỉ mục, đọc tin RSS (RSS feeds), trang dùng để in, bản tin nhanh, blog, diễn đàn, bình chọn, lịch biểu, tìm kiếm trong Site và hỗ trợ đa ngôn ngữ. Joomla! được sử dụng rất phổ biến, từ những website cá nhân cho tới những hệ thống website doanh nghiệp, cung cấp nhiều dịch vụ và ứng dụng. Joomla dễ dàng cài đặt, quản lý và có độ tin cậy cao. Joomla có mã nguồn mở do đó việc sử dụng Joomla là hoàn toàn miễn phí. .I.2. Các dòng phiên bản của Joomla Joomla có 2 dòng phiên bản chính: Joomla 1.0.x và Joomla 1.5.x  Dòng phiên bản 1.0.x: Là phiên bản phát hành ổn định. Được sử dụng rộng rãi, có nhiều thành phần mở rộng (component, module, mambot)...  Dòng phiên bản 1.5.x: Là phiên bản cải tiến từ Joomla 1.0.x (phần mã được viết lại hoàn toàn, tuy nhiên vẫn giữ cách hành xử như cũ) . Joomla 1.5 hỗ trợ đa ngôn ngữ. Joomla 1.5 dùng charset mặc định là UTF-8 (thay vì ISO-8859-1 trong Joomla 1.0.x) .I.3. Kiến trúc Joomla Joomla! 1.5 gồm có 3 tầng hệ thống.  Tầng dưới cùng là mức nền tảng, chứa các thư viện và các plugin (còn được biết với tên gọi mambot).  Tầng thứ hai là mức ứng dụng và chứa lớp JApplication. Hiện tại tầng này gồm 3 lớp con: JInstallation, JAdministrator và JSite.  Tầng thứ ba là mức mở rộng. Tại tầng này có các thành phần (component), mô đun (module) và giao diện (template) được thực thi và thể hiện Hình 1: Kiến trúc Joomla .II Một số khái niệm trong Joomla .II.1. Front-end và back-end .II.1.1. Front-end Front-end (tiền sảnh), còn được biết với tên gọi Public Front-end: phần giao diện phía ngoài, nơi tiếp xúc với mọi người sử dụng. Bất cứ ai cũng có thể trông thấy khi gõ đúng đường dẫn URL vào trình duyệt. Front-end chứa 1 trang đặc biệt là FrontPage (homepage) - trang chủ. .II.1.2. Back-end Back-end, còn được biết với tên gọi Public Back-end, Administrator, Control Pane: phần dành cho người quản trị. Những người bình thường không biết đường dẫn để truy cập, hoặc nếu có biết thì cũng phải qua bước kiểm tra tài khoản. Phần back-end được truy http://your_domain/administrator. cập thông qua đường dẫn: .II.2. Template Là giao diện, khuông dạng, kiểu mẫu, hình thức được thiết kế để trình bày nội dung của trang Web và có các vị trí định sẵn để tích hợp các bộ phận, thành phần của trang Web. Joomla! cho phép cài đặt và thay đổi Temp cho Web Site hay cho từng trang Web khác nhau một cách dễ dàng. .II.3. Menu Joomla! có rất nhiều kiểu Menu, mỗi Menu sẽ là một trang hiển thị có nội dung và cách trình bày theo nhiều kiểu khác nhau. Các Menu này được quản lý theo mã số ID nên có thể thay đổi tên và vị trí mà ảnh hưởng đến nội dung, địa chỉ liên kết của chúng. Joomla! cho phép lựa chọn và quyết định Menu nào làm Trang chủ (Home) là trang sẽ xuất hiện đầu tiên khi truy cập vào địa chỉ của trang Web. Tất cả các thành phần, nội dung,... trong Joomla! đều có thể cho phép hiển thị hay không hiển thị (sử dụng hay không sử dụng) thông qua chức năng Published hay Unpublish .II.4. Các thành phần mở rộng .II.4.1. Module Module là một trong 3 thành phần mở rộng chính của Joomla! Đó là một đoạn mã nhỏ thường được dùng để truy vấn các thông tin từ cơ sở dữ liệu và hiển thị các kết quả tìm được. Nó có thể được nạp vào một vị trí bất kỳ trên template (vị trí left, right, top, bottom... hoặc vị trí do người dùng định nghĩa); có thể hiện trên tất cả các trang của Website hay một số trang được ấn định. Khả năng tương tác giữa người sử dụng và hệ thống thông qua module là hạn chế (chúng ta thường chỉ nhận thông tin trả về). Module có tên bắt đầu bằng mod_. Chúng ta có các module thông dụng:  Lastest News (mod_latestnews): Module hiển thị các tin mới nhất  Popular News (mod_mostreads): Module hiển thị các bài được quan tâm nhiều nhất  Related Items (mod_related_items): Module hiển thị các bài viết liên quan  Random Image (mod_random_image): Module hiển thị các ảnh ngẫu nhiên  Search Module (mod_search): Module công cụ tìm kiếm  Login Module (mod_login): Module hiển thị form đăng nhập hệ thống  Stats Module (mod_stats): Module hiển thị các thông tin thống kê về hệ thống  Menu Module (mod_mainmenu): Module hiển thị các menu của website  Banners Module (mod_banners): Moudule hiển thị các banner quảng cáo  ... .II.4.2. Component Component là một thành phần mở rộng lớn nhất và phức tạp nhất của Joomla CMS. Các component có thể xem như là các ứng dụng con và nếu joomla là một hệ điều hành thì các component là các ứng dụng desktop. Ví dụ component nội dung (com_content) là một ứng dụng mini xử lý tất cả các vấn đề về nội dung được trả lại như thế nào mỗi khi có yêu cầu duyệt nội dung được đưa ra. Một component có hai thành phần chính: phần quản trị và phần trên site. Phần trên site là phần được sử dụng để tải về các trang khi được triệu gọi trong quá trình hoạt động của một website thông thường. Phần quản trị cung cấp giao diện để cấu hình, quản lý các khía cạnh khác nhau của component và được truy cập thông qua ứng dụng quản trị của Joomla Component có thể có thêm modul để hỗ trợ cho việc hiển thị các chức năng và nội dung của component Thông thường sau khi cài đặt joomla có sẵn các component: Banner (quản lý các bảng quảng cáo), Contact ( quản lý việc liên hệ giữa người dùng với ban quản trị website), Search (quản lý việc tìm kiếm), Web links (quản lý các liên kết ngoài website), và các component quản lý nội dung của trang web .II.4.3. Mambot (Plug-in) Mambot (plug-in) là chức năng được bổ sung thêm cho component, các mambot này sẽ can thiệp, bổ sung vào nội dung của trang web trước khi nó được hiển thị. Mambot được xem như là phương tiện giao tiếp giữa hệ thống joomla với component, chẳng hạn tìm kiếm thông tin .III Cách xây dựng một component trong Joomla 1.5 .III.1. Giới thiệu mô hình MVC Bắt đầu từ phiên bản Joomla 1.5.x hoặc các phiên bản sau này, Joomla đã đưa vào một framework mới, mang lại những thuận tiên rất lớn cho những người phát triển. Các đoạn code giờ đây rất dễ dàng để kiểm tra và khá rõ ràng. Framework này đưa ra một mẫu thiết kế mới, thiết kế MVC (Model-View-Controller) trong Joomla. Model-View-Controller (gọi tắt là MVC) là một mẫu thiết kế phần mềm được dùng để tổ chức các đoạn mã theo cách mà việc xử lý dữ liệu và biểu diễn dữ liệu tách rời nhau. Điều này tạo ra tiền đề cho hướng tiếp cận sau này khi mà việc xử lý dữ liệu được nhóm vào trong một section, khi đó giao diện hay quá trình tương tác với người dùng bao quanh dữ liệu có thể được định dạng và tùy biến lại mà không phải lập trình lại việc xử lý dữ liệu nữa. Model: là thành phần của component đóng gói dữ liệu cho ứng dụng. Nó thường cung cấp các thủ tục để quản lý, thao tác dữ liệu trong đó có thêm các thủ tục để lấy dữ liệu từ model. Có thể là bổ sung (insert), loại bỏ (delete) hay cập nhật (update) thông tin về một trường nào đó trong cơ sở dữ liệu (CSDL). Theo cách này, nếu một ứng dụng chuyển đổi sang việc sử dụng một file bình thường để lưu trữ thông tin của nó thay vì sử dụng CSDL thì chỉ có thành phần Model là thay đổi còn các thành phần View và Controller là không đổi. View: là một thành phần của component được sử dụng để trả lại dữ liệu từ model. Đối với ứng dụng web, view thông thường là các trang HTML để trả lại dữ liệu. View lấy dữ liệu từ Model (dữ liệu này được chuyển qua View tới Controller). Sau cùng là đưa dữ liệu vào trong template (dữ liệu này sẽ hiển thị với người dùng). View không làm thay đổi dữ liệu, nó chỉ hiển thị dữ liệu lấy từ Model mà thôi) Controller: Controller chịu trách nhiệm phản hồi các hành động của người dùng. Trong các ứng dụng web, một hành động của người dùng thông thường là một yêu cầu tải trang. Controller sẽ xác định yêu cầu gì được người dùng đưa ra và phản hồi thích hợp bằng việc yêu cầu Model tính toán dữ liệu phù hợp và chuyển từ Model vào View. Controller không thể hiện dữ liệu từ Model, nó kích hoạt các phương thức trong Model để hiệu chỉnh dữ liệu và sau đó chuyển từ Model sang View để hiển thị dữ liệu Trong Joomla, mô hình MVC được hỗ trợ thông qua 3 lớp JModel, JView và Jcontroller. .III.2. Cài đặt Joomla MVC Trong Joomla mấu MVC được thực hiện sử dụng 3 lớp:  JModelJViewJController .III.3. Tạo một component Đối với component cơ sở của chúng ta, chúng ta chỉ cần 5 file:  hello.php - đây là điểm vào cho component của chúng ta  controller.php - file này có chứa controler cơ bản  views/hello/view.html.php - file này nhận các dữ liệu cần thiết và đặt nó lên template  views/hello/tmpl/default.php - file này là temple cho đầu ra  hello.xml - đây là một file XML nói cho joomla biết cách cài đặt component của chúng ta như thế nào .III.3.1. Tạo một entry point Joomla luôn luôn được truy cập thông qua một điểm vào đơn: index.php cho các ứng dụng site và administrator/index.php cho ứng dụng quản trị. Sau đó ứng dụng sẽ tải các component cần thiết dựa trên giá trị chọn lựa trong URL hoặc trong dữ liệu POST. Đối với component của chúng ta URL sẽ như sau:index.php? option=com_hello&view=hello. Việc này sẽ tải file chính của chúng ta và có thể được xem như một điểm vào đơn cho component của chúng ta: components/com_hello/hello.php. execute( JRequest::getVar( 'task' ) ); $controller->redirect(); ?> Câu lệnh đầu tiên là câu lệnh kiểm tra bảo mật. JPATH_COMPONENT trường hợp của chúng ta component hoặc admin JPATH_COMPONENT là đường dẫn tuyệt đối tới component hiện tại, trong là components/com_hello. Nếu bạn cần xác định site component thì bạn có thể sử dụng và JPATH_COMPONENT_ADMINISTRATOR. DS là dấu phân cách thư mục trong hệ thống của bạn: có thể là “\” hoặc “/”. Điều này được thiết lập tự động bởi frameword, vì thế developer không phải quan tâm đến việc phát triển các phiên bản khác nhau cho các hệ điều hành khác nhau. DS sẽ luôn được sử dụng khi tham chiếu đến các file trên máy chủ cục bộ. Sau khi tải controler cơ bản, chúng ta sẽ kiểm tra một controler cụ thể cần đến. Trong component này, controler cơ bản chỉ là một controler nhưng chúng ta đề cập đến điều này cho các công việc trong tương lai. JRequest:getVar() tìm một biến trong URL hoặc POST dữ liệu. Bởi vậy nếu URL của chúng ta là: index.php? option=com_hello>controller=controller_name thì chúng ta có thể nhận được tên controler của chúng ta trong component bằng sử dụng câu lệnh sau: echo JRequest::getVar(’controller’); Bây giờ chúng ta đã có controler cơ sở ‘HelloController’ trong com_hello/controller.php, và nếu cần thiết bổ sung thêm các controler dạng như: ‘HelloControllerController1’ trong com_hello/controllers/controller1.php. Sau khi controler được tạo ra, chúng ta cho controler chạy nhiệm vụ như được chỉ ra trong URL: index.php?option=com_hello&task=sometask. Nếu không có nhiệm vụ nào được thiết lập thì nhiệm vụ mặc định ‘display’ sẽ được giả định. Khi ‘display’ được sử dụng, biến ‘view’ sẽ quyết định cái gì sẽ được hiển thị. Các nhiệm vụ khác như ‘save’, ‘edit’, ‘new’, … Controler có thể quyết định redirect the page (thực hiện tải lại một trang), thông thường là sau khi một nhiệm vụ như ‘save’ được hoàn thành. Câu lệnh cuối cùng thực hiện việc này. Điểm vào chính (hello.php) về bản chất đã thông qua việc điều khiển controler thực hiện các nhiệm vụ được đặt ra trong request. .III.3.2. Tạo Controller Component của chúng ta chỉ có một nhiệm vụ - greet the world (thể hiện lời chào). Bởi vậy controler sẽ rất đơn giản. Không cần đến việc tính toán trên dữ liệu. Tất cả những gì cần thiết phải làm là tải view thích hợp. Chúng ta sẽ chỉ có một phương thức trong controler là display(). Hầu hết các hàm cần thiết được xây dựng trong lớp JControler, bởi vậy tất cả những gì chúng ta cần là gọi phương thức JControler::display(); Code của controler cơ sở như sau: Việc khởi tạo của JController sẽ luôn luôn đăng ký một nhiệm vụ display() khi không có nhiệm vụ cụ thể nào được chỉ ra (bằng việc sử dụng phương thức registerDefaultTask()), nó sẽ được thiết lập như một nhiệm vụ mặc định. Phương thức display() này thật sự không cần thiết bởi vì tất cả những gì nó làm là gọi hàm khởi tạo của cha nó. Tuy nhiên, đó là một cơ sở khá tốt để chỉ ra điều gì cần phải làm trong controler. Phương thức JController::display() sẽ xác định view và layout từ request, tải view đó và thiết lập layout. Khi bạn tạo ra một menu item cho component của bạn, menu manager sẽ cho phép admin lựa chọn view mà họ thích để thể hiện và trên layout cụ thể. Một view thông thường được xem như một cách hiển thị của một tập các dữ liệu nào đó (ví dụ, danh sách các car, danh sách các event, một car đơn, một event đơn, …). Một layout là một cách tổ chức view. Trong component của chúng ta chúng ta sẽ có một view đơn được gọi là hello, và một layout đơn (default). .III.3.3. Tạo View Nhiệm vụ của view là rất đơn giản: nó nhận dữ liệu được thể hiện và đặt nó lên template. Dữ liệu được đặt lên template sử dụng phương thức JView::assignRef. Đoạn mã của view như sau: assignRef( 'greeting', $greeting ); parent::display($tpl); } } ?> .III.3.4. Tạo Template Joomla template/ layout là các file PHP thông thường, được sử dụng để bố trí, xếp đặt dữ liệu từ view theo một cách cụ thể nào đó. Các biến được gán bởi phương thức JView::assignRef có thể được truy cập từ template sử dụng $this→{propertyname} (xem mã template bên dưới như một ví dụ). Template của chúng ta rất đơn giản, chúng ta chỉ muốn thể hiện một lời chào hợp quy cách từ view.

greeting; ?>

.III.3.5. Đóng gói tất cả- Tạo file hello.xml Có thể cài đặt thủ công một component bằng cách copy tất cả các file bằng FPT client và hiệu chỉnh CSDL. Nhưng sẽ hiệu quả hơn nếu tạo ra một file được đóng gói để Joomla! Installer thực hiện điều này cho bạn. File đóng gói này sẽ chứa nhiều dạng thông tin khác nhau như:  Các miêu tả chi tiết cơ bản về component của bạn (ví dụ như tên), và tùy ý một số mô tả thông tin về bản quyền ….  Một danh sách các file cần copy.  Một file PHP thực hiện bổ sung các thao tác cài đặt và gỡ bỏ (file này là không bắt buộc).  Một file SQL có chứa các câu truy vấn dữ liệu mà sẽ được thực hiện vào lúc cài đặt hoặc gỡ bỏ (file này là không bắt buộc). Định dạng của file XML như dưới đây: Hello 2007 02 22 John Doe john.doe@example.org http://www.example.org Copyright Info License Info Component Version String Description of the component ... index.html hello.php controller.php
- Xem thêm -