Do được xây dựng dưới dạng một thành phần ứng dụng bổ sung cài đặt vào hệ thống quản trị nội dung Joomla, ứng dụng được phép sử dụng các tài nguyên và dữ liệu có sẵn của Joomla, chúng ta chỉ cần tạo thêm các bảng để lưu trữ cơ sở dữ liệu riêng của ứng dụng. Trong phiên bản thứ hai của ứng dụng, có 08 bảng được bổ sung vào cơ sở dữ liệu Joomla. Thông tin xây dựng cơ sở dữ liệu của các bảng này được mô tả chi tiết tại Phụ lục 1 của luận văn, sau đây chúng ta sẽ tìm hiểu sơ bộ về các bảng này.
Hình 3.7: Mô hình thiết kế cơ sở dữ liệu ứng dụng
- nb_gmaps_adapters: Bảng lưu dữ liệu bổ sung từ bên ngoài vào bản đồ.
- nb_gmaps_category: Bảng lưu dữ liệu liên quan tới việc phân loại trong ứng dụng bản đồ, cụ thể trong ứng dụng này là các loại hình trường học.
- nb_gmaps_config: Bảng lưu dữ liên quan tới cấu hình ứng dụng, bao gồm các thông số cài đặt ứng dụng, các thông số mặc định của bản đồ.
- nb_gmaps_icons: Bảng lưu dữ liệu quản lý hình ảnh, biểu tượng dùng trong bản đồ.
- nb_gmaps_maps: Bảng chứa dữ liệu quản lý các bản đồ trong ứng dụng.
- nb_gmaps_markers: Bảng chứa dữ liệu liên quan tới tầng dữ liệu bổ sung cho bản đồ như điểm đánh dấu, đường, khoanh vùng, … Trong ứng dụng cụ thể này, bảng dùng để lưu trữ các điểm trường.
- nb_gmaps_points: Bảng lưu dữ liệu quản lý các thẻ trong cửa sổ thông tin điểm trường, bổ trợ cho bảng nb_gmaps_markers.
- nb_gmaps_sysadapters: Bảng lưu trữ các dữ liệu bổ sung từ các ứng dụng khác trong cùng hệ thống.
3.4.3.2. Kiến trúc mã nguồn
Theo mô hình kiến trúc Joomla và khung làm việc Joomla, các ứng dụng bổ sung được hỗ trợ xây dựng theo mô hình kiến trúc Model-View-Controller (MVC). Như vậy, để phát triển ứng dụng WebGIS quản lý trường học tích hợp vào Joomla dưới dạng một thành phần ứng dụng bổ sung, tác giả xây dựng mã nguồn từ khung làm việc Joomla tuân theo kiến trúc MVC. Trong giai đoạn đầu nghiên cứu về Google Maps API, tác giả sử dụng Javascript API phiên bản 2 để phát triển ứng dụng. Sau khi Google công bố Javascript API phiên bản 3 với những cải thiện đáng kể, tác giả đã chuyển sang xây dựng ứng dụng phiên bản 2 hoàn toàn mới sử dụng Google Map Javascript API phiên bản 3. Đây là một ứng dụng WebGIS động, mã API của Google được nhúng trong mã lập trình PHP chạy phía máy chủ, toàn bộ dữ liệu hiển thị khi chạy ứng dụng được chuyển cho quản trị hệ thống tạo ra và được lưu trong cơ sở dữ liệu MySQL. Như vậy, chúng ta có thể sử dụng phần mềm để tạo ra các ứng dụng với mục đích khác nhau, không những là thành phần ứng dụng bổ sung cho Joomla phục vụ việc quản lý mạng lưới trường học mà phần mềm có thể xây dựng cá ứng dụng bản đồ khác theo mục đích của người quản trị hệ thống.
Mã nguồn của ứng dụng tuần theo mô hình MVC và quy tắc xây dựng ứng dụng bổ sung cho Joomla. Joomla hỗ trợ 3 lớp theo mô hình MVC gồm
Jmodel, Jview và Jcontroller [15].
- Kiến trúc của một thành phần ứng dụng bổ sung đơn giản: Giả sử ta đặt tên cho một ứng dụng mới tạo là hello, như vậy khi cài đặt vào hệ thống, Joomla sẽ tạo ra các thư mục con cùng mang tên com_hello đặt trong thư mục components của cả trang chủ và trang quản trị. Thư mục com_hello trong trang
chủ và trang quản trị có kiến trúc giống nhau, tuy nhiên chúng thực hiện nhiệm vụ khác nhau, kiến trúc mã nguồn cơ bản gồm các thư mục và tập tin:
+ com_hello/hello.php là tập tin tiếp nhận yêu cầu và gọi các thành phần thực thi trong ứng dụng.
+ com_hello/controller.php là tập tin chứa các thành phần điều khiển cơ bản cho ứng dụng.
+ com_hello/views/hello/view.html.php là tập tin khai thác dữ liệu cần thiết và nạp vào các tập tin giao diện.
+ com_hello/views/hello/tmpl/default.php là tập tin chứa các đoạn mã kết xuất được về dạng HTML sử dụng làm giao diện hiển thị.
+ hello.xml là tập tin giao tiếp với Joomla để cung cấp các tham số giúp Joomla cài đặt ứng dụng.
Đối với các ứng dụng thực tế, ta có thể sử dụng lớp JViews linh hoạt để tiện cho việc hỗ trợ đổi giao diện và ngôn ngữ cho hệ thống, cũng theo đó kiến trúc thư mục và tập tin có một số thay đổi để phù hợp với mô hình MVC.
- Xây dựng một Model cho ứng dụng: Trong thư mục chính của ứng dụng, chúng ta cần tạo thư mục con models và tạo tập tin mô hình có tên trùng với tên của ứng dụng, cụ thể là com_hello/models/hello.php, ví dụ nhỏ về tập tin này như sau:
<?php
//Hello Model for Hello World Component // No direct access
defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.model' ); // Hello Model
class HelloModelHello extends JModel {
function getGreeting() {
return 'Hello, World!'; }
} ?>
Khi lập trình hệ thống, khung làm việc Joomla hỗ trợ các trình điều khiển để tự động tải mô hình cùng tên với ứng dụng thông qua phương thức
JView::getModel().
- Sử dụng cơ sở dữ liệu:Toàn bộ cơ sở dữ liệu của ứng dụng được lưu trữ trong cơ sở dữ liệu chung của Joomla thông qua việc sử dụng các đối tượng dữ liệu và các lớp thao tác trên cơ sở dữ liệu đã có của Joomla, dữ liệu của ứng dụng được lưu tại các bảng được tạo thêm trong cơ sở dữ liệu của Joomla.
Sử dụng phương thức getDBO trong lớp Jfactory để truy cập các đối tượng cơ sở dữ liệu trong hệ thống, đoạn mã dưới đây là ví dụ về việc tạo và thao tác với dữ liệu trong cơ sở dữ liệu hệ thống
Tạo bảng __hello trong cơ sở dữ liệu Joomla:
DROP TABLE IF EXISTS `#__hello`;
CREATE TABLE `#__hello` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `greeting` VARCHAR(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
INSERT INTO `#__hello` (`greeting`) VALUES ('Hello, World!'), ('Bonjour, Monde!'), ('Ciao, Mondo!');
Thao tác với cơ sở dữ liệu:
function getGreeting() {
$db =& JFactory::getDBO();
$query = 'SELECT greeting FROM #__hello'; $db->setQuery( $query );
$greeting = $db->loadResult();
return $greeting; }
- Tạo giao diện quản trị hệ thống: Như quản điểm đã trình bày liên quan tới yêu cầu về tính động của ứng dụng, toàn bộ cài đặt và cơ sở dữ liệu ứng dụng phía người dùng được tạo ra bởi người quản trị hệ thống, lập trình viên chỉ xây dựng phần mềm có các chức năng cần thiết để người quản trị có thể thực hiện các yêu cầu xây dựng dữ liệu cho ứng dụng. Một ứng dụng bổ sung cho Joomla thường có cấu trúc thư mục như sau:
Thư mục chứa ứng dụng người dùng: <root>/components/com_hello Thư mục chứa ứng dụng quản trị:
<root>/administrator/components/com_hello
Hai thư mục này có cùng kiến trúc và nguyên tắc xây dựng, chúng có liên hệ với nhau, cùng sử dụng môi trường ứng dụng người dùng và quản trị của Joomla [15].
3.5. Cài đặt và chạy thử ứng dụng
Yêu cầu tối thiểu để cài đặt và sử dụng phần mềm bao gồm máy chủ đã được cài đặt PHP 5.2.x hoặc cao hơn, MySQL 5.0.x, do đây là ứng dụng viết dưới dạng thành phần bổ sung cho Joomla nên máy chủ cần phải được cài đặt sẵn hệ quản trị nội dung Joomla 1.5.x. Ngoài ra, trong quá trình chạy, ứng dụng dùng dữ liệu bản đồ Google Map, thư viện Google Map Javascript API và các
thư viện liên quan, vì vậy nếu cài đặt ứng dụng tại máy cá nhân để thử nghiệm thì máy đó cần phải có kết nối Internet. Sau đây chúng ta sẽ tiến hành các công việc cần thiết để cài đặt và chạy thử nghiệm ứng dụng tại máy tính cá nhân.
Do Joomla là phần mềm mã nguồn mở, viết trên các công cụ mã nguồn mở thông dụng nên hệ quản trị nội dung này có thể chạy trên nhiều môi trường hệ điều hành khác nhau, tương thích với các máy chủ web thông dụng như IIS hoặc Apache, để tiết kiệm thời gian cài đặt và cấu hình, trong thử nghiệm này tác giả sử dụng phần mềm XAMPP 1.6.4 đã tích hợp đủ các phần mềm cần thiết để cài đặt Joomla bao gồm máy chủ web Apache 2.x cho windows, PHP 5.2.4, MySQL server 5.0.45. Tải miễn phí XAMPP cho Windows tại địa chỉ http://www.apachefriends.org/en/xampp-windows.html, sau khi cài đặt XAMPP theo hướng dẫn đi kèm, chúng ta đã có một máy chủ hoàn chỉnh phục vụ cho việc thử nghiệm [12].
3.5.1. Cài đặt ứng dụng
- Trước khi cài đặt ứng dụng, ta cần cài đặt Joomla làm website chính của hệ thống. Tải Joomla tại địa chỉ http://joomla.org sau đó cài đặt vào máy chủ localhost theo địa chỉ http://localhost/ninhbinh. Sau khi cài đặt Joomla, chúng ta cần cấu hình Joomla theo những hướng dẫn đi kèm bao gồm các tùy chỉnh về giao diện, ngôn ngữ, các thành phần ứng dụng đi kèm [15].
- Ứng dụng đóng gói hoàn chỉnh được cài đặt vào Joomla thông qua chức năng cài đặt thành phần ứng dụng bổ sung. Việc cài đặt ứng dụng thực được thực hiện tự động thông qua tập tin .xml nằm trong ứng dụng. Sau khi cài đặt xong ứng dụng, chúng ta cần sử dụng chức năng quản lý trình đơn của Joomla để bổ sung liên kết truy cập ứng dụng trong menu của website chính. Trong thực nghiệm này, tác giả lựa chọn ứng dụng quản lý trường học là ứng dụng hiển thị mặc định trên trang chính của Joomla tại địa chỉ http://localhost/ninhbinh; khu vực quản trị của Joomla tại địa chỉ http://localhost/ninhbinh/administrator cũng sẽ hiển thị mặc định giao diện quản trị ứng dụng sau khi người dùng đăng nhập.
3.5.2. Cập nhật dữ liệu
Sau khi cài đặt thành công ứng dụng WebGIS, chúng ta chưa có dữ liệu hiển thị, các chức năng xây dựng dữ liệu hiển thị phía người dùng đã được cung cấp sẵn trong khu vực quản trị hệ thống để người quản trị hoàn toàn chủ động tạo ra dữ liệu theo mục đích cụ thể. Để xây dựng dữ liệu hiển thị phía người dùng, người quản trị hệ thống cần tạo ra một hoặc một số bản đồ theo các nhóm
khác nhau; tạo ra các điểm trường và gắn các điểm trường với các bản đồ, cụ thể quy trình cập nhật dữ liệu trong khu vực quản trị ứng dụng như sau:
3.5.2.1. Bảng công cụ quản trị ứng dụng
Khu vực quản trị ứng dụng cung cấp một bảng gồm các công cụ cho phép người quản trị có thể thực hiện các thao tác cấu hình, cập nhật dữ liệu bản đồ, điểm trường, loại hình trường, …
Hình 3.8: Bảng công cụ quản trị ứng dụng
Tùy vào quyền hạn của người quản trị mà họ có thể được sử dụng một trong các chức năng được cung cấp trong khu vực này.
3.5.2.2. Cấu hình ứng dụng
Chức năng cấu hình ứng dụng chỉ dành cho người quản trị tối cao của hệ thống, bao gồm các chức năng cho phép thiết lập các thông số cơ bản sử dụng mặc định trong ứng dụng, các thông số này được lưu trong bảng
nb_gmaps_config thuộc cơ sở dữ liệu, cụ thể các nhóm chức năng thiết lập cấu hình bao gồm:
- Cấu hình địa chỉ ứng dụng dạng URL, ví dụ: http://localhost/ninhbinh. - Các thông số mặc định của bản đồ dùng trong ứng dụng: Bao gồm các thông số cung cấp cho Google Map API hiển thị bản đồ cho ứng dụng như kiểu bản đồ, độ phóng đại, kích thước mặc định của bản đồ, …
- Các thông số khai báo để sử dụng bản đồ Google Map: Bao gồm API Key, đường dẫn API Key, đường dẫn tới máy chủ lưu trữ bản đồ, …
- Tọa độ vị trí đặt làm trung tâm của bản đồ mặc định sử dụng trong ứng dụng. Tọa độ được khai báo phù hợp với chuẩn của Google Map dạng Geocode.
- Cài đặt phân quyền cho người dùng: Bao gồm các quyền thao tác, chỉnh sửa điểm trường.
- Cài đặt các đường dẫn vật lý trên máy chủ cài đặt ứng dụng phục vụ việc truy suất các thư mục quan trọng như thư mục chứa biểu tượng, thư mục chứa các hàm thư viện bản đồ cho ứng dụng, …
Hình 3.9: Giao diện chức năng quản lý cấu hình ứng dụng 3.5.2.3. Quản lý bản đồ
Chức năng quản lý bản đồ cho phép người quản trị có thể tạo tạo ra các bản đồ để hiển tại trang người dùng. Tùy mục đích hiển thị và yêu cầu nghiệp vụ cụ thể mà các bản đồ được tạo ra có thể được khai báo thông số phù hợp, nội dung khai báo đối với một bản đồ bao gồm:
- Thông tin cớ bản: Bao gồm các khai báo về tiêu đề bản đồ, kiểu bản đồ, khai báo cho phép phát hành, ngoài ra mục này còn hiển thị các thông số đã có trong bản đồ (đối với trường hợp sửa bản đồ) như số điểm trường gắn với bản đồ, số lượt truy cập vào bản đồ, …
- Mô tả bản đồ: Cho phép nhập mô tả chi tiết về bản đồ.
- Thộc tính: Cho phép khai báo các thuộc tính của bản đồ bao gồm kích thước bản đồ, các tùy chọn hiển thị như độ phóng đại, các lớp thư viện bổ sung, cách thức hiển thị các đối tượng điều khiển bản đồ, …
- Tọa độ: Cho phép khai báo tọa độ điểm trung tâm của bản đồ.
- Giao diện hiển thị: Cài đặt một số giao diện hiển thị như trình đơn loại hình trường, bổ sung phần cuối của bản đồ, màu nền, …
- Quyền truy cập: Khai báo nhóm người dùng nào có quyền truy cập bản đồ, sửa chữa hoặc thêm bớt các điểm trường, …
- Loại hình trường: Khai báo loại hình trường mà bản đồ cho phép thêm vào, mặc định bản đồ sẽ chấp nhận tất cả các loại hình trường.
- Các tầng bổ sung: Khai báo các tầng bổ sung chồng lặp cho bản đồ. Ứng dụng được thiết kế gồm 07 tầng bổ sung, khi khai báo một bản đồ khác trong hệ thống làm tầng bổ sung cho bản đồ đang chọn, các điểm trường gắn với bản đồ thuộc tầng bổ sung sẽ được gắn vào bản đồ đang chọn.
- Dữ liệu bổ sung: Khai báo các nguồn dữ liệu bổ sung cho bản đồ đang chọn, nguồn dữ liệu phải được định nghĩa trước trong chức năng quản lý dữ liệu bổ sung cho bản đồ.
Hình 3.10: Giao diện chức năng quản lý bản đồ của ứng dụng 3.5.2.4. Quản lý điểm trường
Chức năng quản lý điểm trường là chức năng quan trọng của ứng dụng, tùy quyền hạn mà người quản trị có thể quản lý danh sách điểm trường trong phạm vi toàn tỉnh, một huyện, hoặc một trường. Các chức năng chính của việc khai báo và quản lý dữ liệu cho một điểm trường bao gồm:
- Thông tin cơ bản: Bao gồm các thông tin như tên trường, kiểu đánh dấu điểm trường trên bản đồ, …
- Mô tả: Toàn bộ nội dung mô tả về điểm trường, các thông tin điểm trường được nhập tại mục này.
- Cài đặt cửa sổ thông tin: Khai báo các sự kiện xảy ra khi người dùng tác động vào điểm trường.
- Nội dung các thẻ trong cửa sổ thông tin: Khai báo nội dung các thẻ trong cửa sổ thông tin. Thông thường, một điểm trường khi tương tác với người dùng thường cung cấp hai thẻ đó là thẻ thông tin điểm trường và thẻ tìm đường đi từ một địa điểm bất kỳ tới trường.
- Thuộc tính của điểm trường: Bao gồm các thông tin như ngày khởi tạo, trang thái thẩm định, phát hành, …
- Loại hình trường: Cho phép chọn một hoặc một số loại hình trường. - Quyền truy cập: Khai báo lớp người dùng nào có thể nhìn thấy điểm trường này trên bản đồ.
- Đường dẫn ảnh: Khai báo đường dẫn ảnh minh họa cho điểm trường. - Công cụ bản đồ trực quan: Hỗ trợ xác định vị trí của điểm trường trực