XÂY D NG MODULE CHO DRUPAL ..... Tùy ch n cách upload file Advance uploading of file .... XÂY D NG MODULE CHO MOODLE ..... Enable module plugin Drupal ..... Giao di n trang ch Drupal ...
Trang 1Khoa công ngh thông tin
v(w
Khoá lu n t t nghi p
tài Xây d ng Website h c t p tr c tuy n
ngành công ngh thông tin
GVHD: NINH XUÂN H NG SVTH: TR NG V NH NGHI P - 10701086
PH M NG C HUY - 10761217
Niên khoá 2007 - 2011
Trang 2L I C M N
u tiên, chúng em xin g i l i c m n chân thành đ n quý Th y, Cô khoa Công
Ngh Thông Tin, tr ng i h c M đã t n tình gi ng d y, truy n đ t nh ng ki n th c,
kinh nghi m quý báu và đã khích l , h tr m i m t cho chúng em trong su t b n n m
đ i h c chu n b hành trang vào đ i
c bi t, chúng em xin c m n Th y Ninh Xuân H ng, ng i luôn s n sàng và
t n tình h ng d n, giúp đ , đ ng viên chúng em trong su t quá trình th c hi n đ án
này
Chúng em xin c m n t t c b n bè đã và đang luôn đ ng viên, chia s , giúp đ
chúng tôi t n tình trong su t th i gian h c t p c ng nh th c hi n đ án
Cu i cùng, chúng con kính g i l i c m n sâu s c nh t đ n toàn th gia đình C m
n Cha, M đã khó nh c sinh thành và giáo d ng chúng con C m n t t c m i ng i
đã tin t ng, khích l , đ ng viên và t o m i đi u ki n t t nh t cho chúng con trong su t
th i gian qua đ chúng con có đ c thành qu nh ngày hôm nay
TPHCM, tháng 2 n m 2011
Ph m Ng c Huy
Trang 3L I NH N XÉT GIÁO VIÊN H NG D N
Trang 4
Trang 5
M C L C
L I M U 11
PH N I DRUPAL 13
I T NG QUAN V DRUPAL 13
I.1 Khái ni m 13
I.2 L ch s 13
I.3 N n t ng 13
I.4 ng d ng 13
I.5 u đi m 13
I.6 Nh c đi m 14
II CÁCH HO T NG C A DRUPAL 14
II.1 Technology Stack 14
II.2 Core 15
II.3 Module 15
II.4 Hooks 16
II.5 Themes 16
II.6 Nodes 16
II.7 Blocks 17
III MODULE CHU N C A DRUPAL 17
III.1 Aggregator 17
III.2 Blog 17
III.3 Blog API 17
III.4 Book 17
III.5 Comment 18
III.6 Contact 18
III.7 Filter 18
III.8 Forum 18
III.9 Help 18
III.10 Legacy 18
III.11 Node 19
IV CÁC MODULE H TR THÊM 19
IV.1 Views 19
IV.2 Panels 19
IV.3 Content Construction Kit (CCK) 20
IV.4 Ckeditor 20
V XÂY D NG MODULE CHO DRUPAL 20
V.1 File info và module 20
V.1.1 File info 20
V.1.2 File module 21
V.2 M t s hook c b n 21
V.3 nh ngh a m t hook m i 24
V.3.1 Cách t o m t hook 24
Trang 6V.3.2 S d ng hook vào các module khác 24
V.4 jQuery trong Drupal 24
V.5 Form API 25
V.5.1 T o form 25
V.5.2 Giao di n hóa form 26
V.5.3 Ki m tra d li u 26
V.5.4 G i form lên trang web 26
VI T CH C L U TR C A DRUPAL 27
VII TÍNH AN TOÀN C A DRUPAL 29
VII.1 An toàn đ i v i ng i dùng 29
VII.2 An toàn đ i v i mã ngu n 29
VII.3 Tính an toàn đ i v i d li u 30
PH N II MOODLE 31
I T NG QUAN V MOODLE 31
I.1 Khái Ni m 31
I.2 L ch s 31
I.3 u đi m 31
II TÀI NGUYÊN MOODLE H TR 31
II.1 Nhãn (Label) 31
II.2 Trang v n b n (Text Page) 31
II.3 Trang web (Web Page) 32
II.4 Liên k t m t file hay website (URL) 32
II.5 Th m c (Folder) 32
II.6 Gói n i dung (IMS Content Package) 32
III CÁC HO T NG MOODLE H TR 32
III.1 Nhi m v (Assignments) 32
III.1.1 Tùy ch n cách upload file (Advance uploading of file) 33
III.1.2 Ki m tra tr c tuy n (Online Text) 33
III.1.3 Upload m t file (Upload a single file) 34
III.1.4 Ho t đ ng offline (Offline Activity) 34
III.2 Tán g u (Chat) 34
III.3 Di n đàn (Forum) 34
III.4 Bài h c (Lesson) 35
III.5 Câu h i (Quiz) 36
III.5.1 T o danh m c 37
III.5.2 T o câu h i 38
III.6 B ng thu t ng (Glossary) 38
III.7 Wiki 39
III.8 L a ch n (Choice) 40
III.9 Kh o sát (Survey) 41
III.10 Gói SCORM (SCORM Package) 42
IV XÂY D NG MODULE CHO MOODLE 42
IV.1 C u trúc module 42
Trang 7IV.2 Vi t module m i d a trên NEWMODULE Template 42
V QU N TR 43
V.1 Thông báo (Notification) 43
V.2 Ng i dùng (Users) 43
V.2.1 Ch ng th c (Authentication) 43
V.2.2 Tài kho n (Accounts) 45
V.2.3 Quy n (Permissions) 45
V.3 Khóa h c (Course) 46
V.4 nh v (Location) 49
V.5 Ngôn ng (Languages) 49
V.6 Modules 50
V.7 B o m t (Security) 51
V.8 Giao di n (Apperance) 52
V.9 Trang chính (Front Page) 54
V.10 Server 55
PH N III CHU N SCORM 56
I KHÁI QUÁT V SCORM 56
I.1 Quá trình phát tri n c a SCORM 56
I.2 L i ích kinh doanh c a SCORM 56
II CÁC KHÁI NI M C B N LIÊN QUAN N SCORM 57
II.1 Asset 57
II.2 SCO (Sharable Content Object) 57
II.3 S khác nhau gi a Asset và SCO 57
III C U TRÚC SCORM 58
III.1 CAM (Content Aggregation Model) 58
III.1.1 Content Model 58
III.1.2 Meta-data 59
III.1.3 Content Package 61
III.2 RTE (Run time Environment) 62
III.2.1 Launch 62
III.2.2 Application Program Interface (API) 62
III.2.3 Data Model 62
PH N IV XÂY D NG WEBSITE H C T P TR C TUY N NGÀNH CÔNG NGH THÔNG TIN NG D NG DRUPAL VÀ MOODLE 67
I PHÂN TÍCH 67
I.1 Mô t bài toán 67
I.2 Yêu c u ch c n ng 67
I.2.1 Yêu c u l u tr 67
I.2.2 Yêu c u nghi p v 67
I.3 Yêu c u phi ch c n ng 68
I.3.1 Tính ti n hoá 68
I.3.2 Tính b o m t 68
I.3.3 Tính t ng thích 68
Trang 8I.4 Ph ng pháp 68
II THI T K 68
II.1 Thi t k t ng th 69
II.1.1 Thi t k vi c trình bày tin t c 69
II.1.2 Thi t k khóa h c 69
II.1.3 Bài thi 69
II.1.4 N p bài t p 69
II.1.5 Di n đàn th o lu n 69
II.1.6 Ch m đi m 70
II.1.7 Thông báo 70
II.1.8 Qu n lý ng i dùng 70
II.1.9 ng nh p 70
II.2 S đ website 70
III Tri n khai 76
III.1 Chu n b 76
III.2 Cài đ t 76
III.2.1 Cài đ t Xampp 76
III.2.2 Cài đ t Drupal 78
III.2.3 Cài đ t Moodle 82
III.2.4 Cài đ t module h tr thêm trong Drupal 85
III.3 Xây d ng h th ng website 86
III.3.1 Drupal 86
III.3.1.1 Xây d ng trang “Gi i thi u” 86
III.3.1.2 Xây d ng trang “Tin t c – Thông báo” 91
III.3.1.3 Hi n th tin t website Moodle 95
III.3.1.4 Xây d ng trang “ nh ho t đ ng” 97
III.3.1.5 T o trang “Liên h ” 100
III.3.1.6 Xây d ng trang ch 101
III.3.1.7 Xây d ng menu cho user qu n tr 108
III.3.2 Moodle 112
III.3.2.1 Xây d ng khóa h c 112
III.3.2.1.1 Tài nguyên khóa h c 121
III.3.2.1.2 Ho t đ ng khóa h c 123
III.3.2.1.3 Các block c a khóa h c 128
III.3.2.2 Xây d ng đ thi 129
III.3.2.2.1 T o câu h i 129
III.3.2.2.2 Làm bài thi 132
III.3.2.3 i m s 133
III.3.2.3.1 Ch m đi m 133
III.3.2.3.2 Xem đi m 136
IV ÁNH GIÁ VÀ H NG PHÁT TRI N 139
IV.1 ánh giá 139
IV.2 H ng phát tri n 139
Trang 9TÀI LI U THAM KH O 140
PH L C 141
I Xây d ng bài gi ng 141
I.1 eXe 141
I.1.1 Cài đ t 141
I.1.2 Th c hành 141
I.1.2.1 Kh i đ ng m t d án bài gi ng 141
I.1.2.2 nh ngh a thu c tính ( Defining Properties) 141
I.1.2.3 Xác đ nh c u trúc bài gi ng (Defining an outline) 143
I.1.2.4 Ý ngh a các thành ph n iDevices 144
I.1.3 Minh ho s d ng m t s công c iDevice 146
I.2 PPT2Flash Professional 151
I.2.1 Cài đ t 151
I.2.2 Th c hành 151
II T o câu h i tr c nghi m 157
II.1 HotPotato 157
II.1.1 T ng quan 157
II.1.2 Jquiz: 158
II.1.3 M t s c u hình c n thi t chung c a HotPot6: 160
II.2 QuizCreator 161
II.2.1 Cài đ t 161
II.2.2 T o câu h i 161
II.2.3 Thi t l p 165
Trang 10M C L C HÌNH
Hình 1-1 Drupal’s Technology Stack 14
Hình 1-2 T ng quan v Drupal core (không bao g m t t c ch c n ng) 15
Hình 1-3 Module có th đ c thêm vào đ t ng c ng các ch c n ng 16
Hình 1-4 Ki u node đ c b t ngu n t m t node c b n và có th thêm các tr ng 27
Hình 1-5 M i quan h gi a các b ng trong c s d li u c a Drupal 28
Hình 3-1 C u trúc gói n i dung 61
Hình 3-2 Mô hình RTE 62
Hình 3-3 C ch giao ti p gi a LMS và SCO 64
Hình 3-4 SCO g i hàm LMSInittialize() t LMS 65
Hình 3-5 SCO ki m tra và truy n cho LMS qu n lý 65
Hình 3-6 SCO g i hàm LMSFinish() t LMS đ k t thúc phiên làm vi c 66
Hình 4-1 S đ website Drupal 71
Hình 4-2 Thi t k Tin t c – Thông báo 72
Hình 4-3 S đ website Moodle 73
Hình 4-4 Các khóa h c 74
Hình 4-5 Thi t k khóa h c 75
Hình 4-6 Start Apache và MySql 76
Hình 4-7 Cài đ t ch y service 77
Hình 4-8 Màn hình web server 78
Hình 4-9 T o c s d li u cho website Drupal 79
Hình 4-10 Ch n ngôn ng cài đ t Drupal 79
Hình 4-11 i n thông tin Database 80
Hình 4-12 i n thông tin site name, site email 81
Hình 4-13 i n thông tin ng i qu n tr 81
Hình 4-14 Drupal đã cài đ t thành công 82
Hình 4-15 L a ch n gói ngôn ng cài đ t 82
Hình 4-16 ng d n website 83
Hình 4-17 C u hình c s d li u 83
Hình 4-18 Ki m tra c u hình máy ch 84
Hình 4-19 Màn hình đang cài đ t 84
Hình 4-20 Màn hình cài đ t thành công Moodle 85
Hình 4-21 Enable module plugin Drupal 86
Hình 4-22 T o m t Content Type 87
Hình 4-23 i n thông tin Content Type 87
Hình 4-24 Content Type ‘Gioi thieu’ đã t o 88
Hình 4-25 T o trang Gi i thi u 88
Hình 4-26 i n tiêu đ và n i dung trang 89
Trang 11Hình 4-27 Tùy ch nh trang Gi i thi u 90
Hình 4-28 Menu Gi i thi u 90
Hình 4-29 N i dung trang Gi i thi u 91
Hình 4-30 T o Vocabulary Taxonomy 92
Hình 4-31 Ch n lo i content c n phân lo i 92
Hình 4-32 Add terms Taxonomy 93
Hình 4-33 Ch n lo i Tin t c – Thông báo 93
Hình 4-34 Các field sau khi add 94
Hình 4-35 Filter View 94
Hình 4-36 Truy n đ i s cho View 95
Hình 4-37 Enable Aggergator 95
Hình 4-38 Add Feed 96
Hình 4-39 Update Item 96
Hình 4-40 Aggregator item 97
Hình 4-41 T o ImageCache 98
Hình 4-42 Action ImageCache 98
Hình 4-43 Field c n Rewrite 99
Hình 4-44 Code Rewrite 100
Hình 4-45 Form liên h 101
Hình 4-46 Giao di n trang ch Drupal 102
Hình 4-47 T o Custom Page Trang ch 103
Hình 4-48 Ch n Layout Builder 104
Hình 4-49 Show layout designer 104
Hình 4-50 Giao di n tùy ch nh Layout Page 105
Hình 4-51 Add Content 106
Hình 4-52 Truy n đ i s cho View Tin t c – Thông báo 107
Hình 4-53 Xem Taxonomy Term ID 108
Hình 4-54 Menu cho user qu n tr 108
Hình 4-55 View qu n tr 109
Hình 4-56 Style Bulk Operation 110
Hình 4-57 Hi n th theo Bulk Operations 111
Hình 4-58 Menu qu n tr 112
Hình 4-59 Thêm/s a các khóa h c 113
Hình 4-60 Thêm m c m i 113
Hình 4-61 Khai báo và mô t m c m i 114
Hình 4-62 Thêm khóa h c m i 115
Hình 4-63 M t khóa h c theo ch đ 116
Hình 4-64 Activity completion condition 117
Hình 4-65 M t khóa h c theo tu n 118
Hình 4-66 Allow access form 119
Hình 4-67 M t khóa h c theo chu n SCORM 119
Hình 4-68 B t ch đ ch nh s a 120
Hình 4-69 Sau khi b t ch đ ch nh s a 121
Trang 12Hình 4-70 Tài nguyên d ng Page 122
Hình 4-71 Tài nguyên d ng Folder 122
Hình 4-72 Bài t p cho sinh viên 122
Hình 4-73 Gói SCORM 122
Hình 4-74 Di n đàn th o lu n 123
Hình 4-75 T o ch đ th o lu n m i 124
Hình 4-76 H i đáp tr c tuy n 125
Hình 4-77 Chat 125
Hình 4-78 Th m dò ý ki n 126
Hình 4-79 K t qu th m dò 126
Hình 4-80 Thi t l p thông tin n p bài t p 127
Hình 4-81 Upload file bài t p 128
Hình 4-82 Block Tin m i nh t 128
Hình 4-83 S ki n s p di n ra 128
Hình 4-84 Ho t đ ng g n đây 129
Hình 4-85 Thành viên tr c tuy n 129
Hình 4-86 Message 129
Hình 4-87 T o thi 130
Hình 4-88 T o câu h i 130
Hình 4-89 a câu h i vào thi 131
Hình 4-90 Question Bank 132
Hình 4-91 Thi gi a k 132
Hình 4-92 Thi cu i k 133
Hình 4-93 Xem bài t p đã n p 133
Hình 4-94 Ch m đi m bài t p 134
Hình 4-95 C p nh t 134
Hình 4-96 Chuy n thành b n nháp 135
Hình 4-97 Cho đi m bài t p 135
Hình 4-98 i m s 136
Hình 4-99 User Report (Giáo viên) 136
Hình 4-100 Grader Report 137
Hình 4-101 Xem đi m Sinh viên 137
Hình 4-102 User report (Sinh viên) 138
Hình 4-103 Overview Report 138
Hình 5-1 M file 141
Hình 5-2 Properties 142
Hình 5-3 Metadate 143
Hình 5-4 C u trúc bài gi ng 144
Hình 5-5 Activity (Ho t đ ng) 146
Hình 5-6 Các thao tác khi so n th o 147
Hình 5-7 Ch nh s a n i dung 147
Hình 5-8 Attachment (T p g n) 148
Trang 13Hình 5-9 Case Study (Nghiên c u tr ng h p) 148
Hình 5-10 Free Text Area (V n b n t do) 149
Hình 5-11 Images Gallery 149
Hình 5-12 Image Manyfier 150
Hình 5-13 Math 151
Hình 5-14 PPT2Flash Professional 151
Hình 5-15 T o các slide bài gi ng 152
Hình 5-16 Thay đ i giao di n 152
Hình 5-17 Tùy ch nh chung cho gói h c (Basic) 153
Hình 5-18 Tùy ch nh xu t file (Output) 153
Hình 5-19 Tùy ch nh cách ch i file (Playback) 154
Hình 5-20 Tùy ch nh âm thanh (Audio) 154
Hình 5-21 Xu t ra gói chu n scorm 155
Hình 5-22 Xu t ra d ng flash 156
Hình 5-23 Xu t ra d ng Email 156
Hình 5-24 Hot Potato 158
Hình 5-25 So n câu h i 159
Hình 5-26 Thi t l p Auto-Response 159
Hình 5-27 Export file 160
Hình 5-28 C u hình chung HotPotato 161
Hình 5-29 QuizCreator 162
Hình 5-30 Giao di n chính c a ch ng trình 163
Hình 5-31 Các lo i câu h i 163
Hình 5-32 S l ng câu h i đã có 163
Hình 5-33 T o câu h i 164
Hình 5-34 Chèn âm thanh 164
Hình 5-35 Quiz Properties 165
Hình 5-36 Quiz Information 166
Hình 5-37 Quiz Settings 167
Hình 5-38 Question Settings 168
Hình 5-39 Quiz Result 169
Hình 5-40 Nút Publish 170
Hình 5-41 Xu t d ng chu n SCORM 170
Hình 5-42 C u hình file xu t ra 171
Trang 14M C L C B NG
B ng 2-1 Mô t thông s Wiki 40
B ng 5-1 Ý ngh a các thành ph n iDevice 144
Trang 15L I M U
Tr i qua nhi u n m nay, ph ng th c qu n lý đào t o theo ki u truy n th ng cho
th y s đóng góp không th ch i cãi trong vi c c i thi n ch t l ng gi ng d y và h c t p Tuy nhiên, cùng v i xu h ng phát tri n c a công ngh thông tin và các ph ng ti n truy n thông, chính ph ng th c đó c ng b c l m t s y u kém nh h ng đ n vi c truy n đ t và ti p thu ki n th c, trong đó có th k đ n vi c qu n lý h s không đ t hi u
qu cao, n i dung các giáo trình, sách giáo khoa th ng khó có th c p nh t k p th i, hình
th c bài gi ng không t o nên s h ng thú h c t p cho h c viên, vi c tra c u các tài li u tham kh o r t h n ch và m t nhi u th i gian… i u đó mang l i hi u qu h c t p không cao mà chi phí cho h c t p và đào t o l i l n d n đ n s lãng phí không nh c v th i gian và ti n b c
Do đó, khái ni m h c t p tr c tuy n ra đ i nh m kh c ph c nh ng nh c đi m c a
ph ng pháp h c t p truy n th ng c ng nh đáp ng nhu c u ngày càng cao c a nhà
tr ng và h c viên Cùng v i s phát tri n m nh m c a Công ngh mã ngu n m c ng
đã ph n nào giúp nhà tr ng gi m chi phí trong vi c đào t o Trong s đó, Drupal và Moodle là hai công ngh mã ngu n m mi n phí đ c đánh giá cao nh t hi n nay tr giúp đ c l c trong vi c xây d ng website h c t p tr c tuy n
ó c ng chính là lý do chúng em ch n mã ngu n m Drupal và Moodle cho đ tài
“Xây d ng website h c t p tr c tuy n ngành Công ngh thông tin” Khóa lu n bao g m các n i dung sau:
• Ph n 1: Drupal
Trình bày t ng quan v Drupal: khái ni m, l ch s , u đi m…, cách t ch c ho t
đ ng Drupal, khái ni m và ý ngh a các Module chu n c a Drupal c ng nh các Module cài đ t thêm, tìm hi u v cách xây d ng module cho Drupal, cách t ch c
l u tr và tính an toàn c a Drupal
• Ph n 2: Moodle
Trình bày t ng quan v Moodle, ý ngh a, cách s d ng các tài nguyên và ho t
đ ng Moodle h tr , c ng nh cách qu n tr trong h th ng Moodle
Trang 16ng d ng xây d ng giao di n website d a trên Drupal và xây d ng h th ng h c
t p tr c tuy n d a trên Moodle
• Ph l c
H ng d n cách s d ng các công c so n th o bài gi ng và t o câu h i tr c nghi m cho khóa h c
Trang 17PH N I DRUPAL
I T NG QUAN V DRUPAL
I.1 Khái ni m
Drupal là m t khung s n phát tri n ph n m m h ng module, m t h th ng qu n
tr n i dung mi n phí và mã ngu n m C ng gi ng nh các h th ng qu n tr n i dung
hi n đ i khác, Drupal cho phép ng i qu n tr h th ng t o và t ch c d li u, tùy ch nh cách trình bày, t đ ng hóa các tác v đi u hành và qu n lý h th ng nh ng Drupal có
c u trúc l p trình r t tinh vi, d a trên đó, h u h t các tác v ph c t p có th đ c gi i quy t v i r t ít đo n mã đ c vi t, th m chí không c n ôi khi, Drupal c ng đ c g i là
"khung s n phát tri n ng d ng web", vì ki n trúc thông minh và uy n chuy n c a Drupal
Drupal đ c ch y trên r t nhi u môi tr ng khác nhau, bao g m Windows, Mac
OS X, Linux, FreeBSD, OpenBSD và các môi tr ng h tr máy ph c v web Apache (phiên b n 1.3+) ho c IIS (phiên b n 5+) có h tr ngôn ng PHP (phiên b n 4.3.3+) Drupal k t n i v i c s d li u MySQL ho c PostgreSQL đ l u n i dung và các thi t
l p
I.2 L ch s
u tiên, Drupal đ c Dries Buytaert và Hans Snijder (đ n t đ i h c Antwerp),
t o ra theo d ng m t h th ng b ng tin (Bulletin board system) n n m 2001, Drupal
tr thành m t công trình ngu n m Drupal, trong ti ng Anh, đ c chuy n ng t ch
"druppel" c a ti ng Hà Lan, ngh a là "gi t n c" Hi n nay, có m t c ng đ ng r ng l n đang giúp đ phát tri n Drupal
− H ng cá nhân/ t ch c: Blog, Calendar, Dicussing forum,…
− H ng c ng đ ng: Multi blog site, Organic Groups, Voting,…
− H ng doanh nghi p: Webservice, Brochure, Newsletter, News site,…
I.5 u đi m
Trang 18Ngoài các ki u n i dung c b n nh Page, Story, Forum, Blog, Drupal cho phép
t o thêm cá ki u n i dung m i nh h th ng Taxonomy hay b ng cách thêm vào các module
¬ Tùy ch nh ch c n ng tìm ki m
Drupal qu n lý trang b ng s node và có th thay th sao cho URLs tr nên thân thi n v i ng i dùng khi tìm ki m
¬ Quy n truy c p theo vai trò
H th ng phân quy n, c b n d a trên b ba: module + thao tác + vai trò Do đó d dàng m r ng thêm
I.6 Nh c đi m
Do không t ng thích ng c nên module ph i đ c vi t riêng cho t ng phiên b n 4.x, 5.x ,6.x và 7.x t i cùng m t th i đi m, Drupal ch h tr 2 phiên b n m i nh t i u này làm cho ng i s d ng b t ti n khi ph i nâng c p liên t c
II.1 Technology Stack
M c đích thi t k c a Drupal có th ch y t t trên các máy ch web và có th đ m
b o v hi u n ng và đ an toàn b ng vi c s d ng các công ngh ph bi n
Hình 1-1 Drupal’s Technology Stack
Theo hình 1-1, l p th p nh t là h đi u hành: Drupal có th ch y trên đa n n nh Linux, BSD, Mac OS X, Windows, Solaris K đ n là l p Web Server: Drupal có th
ch y trên nhi u máy ch web khác nhau đ c s d ng ph bi n là Apache và còn h tr
c IIS L p Database (c s d li u): Drupal h tr MySQL và PostgreSQL (MySQL,
Trang 19PostgreSQL là h qu n tr c s d li u) L p trên cùng là Language (l p ngôn ng ): Drupal s d ng ngôn ng PHP có h tr l p c s d li u tr u t ng (Database
Abstraction Layer) Nh l p này, làm cho PHP có th k t n i và truy v n đ n c s d
li u d dàng và an toàn h n
II.2 Core
M t khung s n nh đ c tích h p thành nhân c a Drupal: Cung c p các ch c
n ng c b n nh qu n lý ng i dùng, qu n lý n i dung có h tr phân lo i ki u n i dung (taxonomy) và các template (m u giao di n) H th ng s th c hi n các yêu c u c a
ng i dùng và m t th vi n dùng chung s đ c s d ng cùng v i các thành ph n
Drupal, nh hình bên d i:
Hình 1-2 T ng quan v Drupal core (không bao g m t t c ch c n ng)
II.3 Module
Module là ph n m r ng có th cài đ t vào Drupal đ thêm các ng d ng hay các
ch c n ng cho Drupal, có th b t ho c t t các module có s n trong Drupal Ngoài ra
ng i dùng có th tìm các module m r ng đ tích h p vào Drupal t i
http://api.drupal.org/ ho c t vi t các module m i cho trang web
Trang 20Hình 1-3 Module có th đ c thêm vào đ t ng c ng các ch c n ng
II.4 Hooks
Hook đ c xem nh là các s ki n (event) bên trong b nhân Drupal ho c đ c
g i là callbacks H th ng hook đa d ng giúp ng i l p trình can thi p vào m i ho t đ ng
mà không ph i s a b t kì dòng l nh nào c a nhân hay các ph n khác
II.5 Themes
Khi t o ra m t trang web g i t i trình duy t, nó có 2 ph n chính là m t nhóm các
d li u t ng ng (n i dung) và đánh d u d li u trên web Trong Drupal, l p ch đ
ch u trách nhi m t o ra HTML đ cung c p cho trình duy t web
c bi t Drupal khuy n khích tách bi t gi a n i dung và đánh d u n i dung
Drupal cho phép ng i qu n tr giao di n có th hi u ch nh và thay th giao di n cho trang web, m t cách đ n gi n nh t là dùng CSS (Cascading Style Sheet) đ thay đ i các
m u giao di n có s n
II.6 Nodes
Các ki u n i dung trong Drupal đ u k th a t ki u c b n là node C ng có th nói h t nhân c a Drupal là node v i c u trúc đ n gi n phát tri n các ki u n i dung
ph c t p, m i node s đ c liên k t v i m t n i dung có ki u khác nhau Node đ c qu n
lý nh h th ng phân lo i ki u n i dung (taxonomy), đây c ng là đ c tr ng c a Drupal Node ch a t t c các m c đ , n i dung, ngày tháng, …
Cách t ng tác v i node là m r ng chúng Có th thêm vào các node các ch c
n ng m r ng nh : đánh giá bài vi t, bình lu n, đính kèm file, …
M i node có m t đ a ch URL xác đ nh, d a vào node_id, c u trúc nh sau:
<đ a ch trang web>?q=node/node_id N u node_id không đ c xác đ nh thì h th ng s chuy n v trang ch
Trang 21II.7 Blocks
Block là thông tin có th kích ho t ho c vô hi u hóa trong m t v trí xác đ nh trên
m u s d ng c a trang web Các Block th ng đ c đ t các v trí: leftsidebar, sidebar, header ho c footer
right-Thông th ng, các Block đ c s d ng đ mô t thông tin đ c đi u ch nh t i
ng i dùng hi n hành Ví d : Block đi u h ng (navigation) ch a các liên k t t i ch c
n ng qu n tr mà ng i dùng có th truy c p S s p x p và vùng hi n th các block đ c
qu n lý thông qua giao di n qu n tr trang web
III MODULE CHU N C A DRUPAL
III.1 Aggregator
RSS là m t đ nh d ng t p tin thu c h XML dùng trong vi c chia s tin t c Web (Web syndication) đ c dùng b i nhi u website tin t c và weblog nh d ng RSS cung
c p n i dung web và tóm l c n i d ng web cùng v i các liên k t đ n phiên b n đ y đ
c a n i dung tin đó, và các siêu-d -li u (meta-data) khác Thông tin này đ c cung c p
d i d ng m t t p tin XML đ c g i là m t RSS feed, webfeed, RSS stream, hay RSS channel Aggreagator có kh n ng đi l y tin RSS t các website khác, l u l i trong
CSDL, r i trình bày ra giao di n ng i dùng Các ngu n tin RSS có th đ c phân m c theo 'Category'
III.2 Blog
Drupal là h th ng tiên phong trong l nh v c blog đa ng i dùng M i user có th
t o blog cho riêng mình Blogger s nh n đ c URL c a blog mình Tính n ng này làm cho drupal tr thành c u n i tuy t v i gi a blog cá nhân và c ng đ ng trên m ng
có th b t đ u vi c t o blog entry, ng i qu n tr c n ch đ nh quy n cho m i user Ngoài ra có th t o các danh m c ch a blog (s d ng v i Taxonomy Module), có
th cho phép upload file, l u l ch s , bình lu n trong blog
M i blog có th tùy ch nh theme khác nhau b ng cách cài đ t thêm module Blog Theme t i đ a ch http://drupal.org/node/19248
III.3 Blog API
Ng i dùng website có th dùng m t công c nào đó đ t o m t blog entry t xa (qua Google Docs ch ng h n) BlogAPI s đ ng ra đ m nh n vai trò trung gian nh n
i u này r t h u ích cho ng i dùng đóng góp vào vi c xây d ng các trang sách
nh ng không ph i m i đóng góp đ u mang m c đích đúng và t t đ p Vì th đ tránh
Trang 22hành vi ch nh s a, xóa b , vi t sai n i dung, các trang ph i thông qua s ch p thu n c a
ng i qu n tr m i đ c bi u di n trên website
Module cung c p ba quy n sau: Create Book Pages, Edit Own Book Pages,
Maintain Books
o Create Book Pages: Cho phép t o trang
o Edit Own Book Pages: Cho phép ch nh s a các trang do b n thân s h u
o Maintain Books: Cho phép ch nh s a toàn b
III.5 Comment
Khi xem m t trang n i dung (node, nh m t blog entry, m t article ch ng h n),
ng i xem có th g i ý ki n ph n h i c a mình Module này r t c n cho các website c n
t ng tác t phía ng i dùng
III.6 Contact
Ng i dùng có th g i mail cho ng i qu n lý website hay cho m t thành viên nào
đó c a website nh ch c n ng mà module này cung c p
Module này cung c p 2 hình th c liên h : Personal Contact Form, Sitewide
Contact Form
o Personal Contact Form: User có th cho phép nh ng user khác nhìn th y email c a mình và g i mail thông qua Contact tab
o Sitewide Contact Form: Có th t o ra các nhóm ng i liên h qua đó có th
g i mail cho nhi u ng i cùng lúc
III.7 Filter
Module này cung c p các ph ng th c trình bày khác nhau trên cùng m t tr ng
d li u i u này r t h u ích trong vi c ng n ch n các đo n code, script nguy hi m, l i cú pháp, các th HTML,…
Module này đ c b t m t cách t đ ng và có th c u hình b ng cách truy c p Administer / Input format
III.8 Forum
Module cho phép t o di n đàn th o lu n Ng òi qu n tr c n t o các Container
tr c khi t o các ch đ i u này giúp cho vi c t ch c và qu n lý d dàng h n
III.9 Help
Các module có ph n tr giúp ng i dùng, tuy nhiên ch khi b t module Help lên thì ng i dùng m i có th xem đ c ph n này
Chú ý module Help không cung c p m t cách chính xác c ng nh chi ti t v
h ng d n ng i dùng, vì v y đ t o thêm c ng nh ch nh s a có th s d ng Help Edit Module t i v t i đ a ch http://drupal.org/node/ 18031
III.10 Legacy
Module Legacy cung c p cho vi c nâng c p t b n cài đ t c Nh ng x lý giúp các tham chi u t đ ng chuy n h ng đ n các trang t b n cài đ t c và ng n ch n trang không tìm th y l i trang web
Trang 23Module legacy phân lo i x lý ki u cách trang taxonomy, ngu n c p d li u phân
lo i, và đ ng d n ngu n c p d li u cho blog (blog feed paths) Nó c ng x lý nâng c p URL t Drupal 4.1 Nó ghi đè URL ki u c sang các URL ki u m i (URL rõ ràng)
− Workflow: M i m t node s có m t dòng ch y c a nó D a vào dòng ch y c a
m t node, h th ng có th bi t đ c m t node đã đ c xu t b n hay ch a, khi đã
đ c xu t b n thì có đ c trình bày ra trang chính hay không, có đ c c đ nh
v trí trên cùng đ i v i các node khác hay không,
IV CÁC MODULE H TR THÊM
IV.1 Views
Views là m t b l c có vai trò l c và trình bày n i dung
− L c n i dung: View giúp l c các ki u n i dung c n theo m t s đi u ki n đ t ra
Ví d : c n l y ra 6 bài vi t m i nh t ho c l y ra các bài vi t thu c ch đ “tin th
gi i’ ó là vai trò chính c a Views Views giúp l y ra các n i dung mà ng i dùng c n
− Hi n th n i dung: Sau khi l c các n i dung ra có đ c danh sách các n i dung
c n hi n th Tuy nhiên, ng i dùng mu n trình bày các ki u n i dung này theo các cách khác nhau Ví d ng i dùng mu n trình bày d ng b ng các n i dung,
ho c danh sách các n i dung Ngoài ra đ t o hi u ng đ p có th trình bày theo
ki u slide ngh a là c m y giây l i có m t n i dung xu t hi n thay th n i dung
đã trình bày Vai trò th hai c a Views là trình bày các n i dung đã l c ra đ c
IV.2 Panels
Panels giúp chia nh ph n n i dung thành các vùng nh h n Drupal trình bày giao
di n thành các vùng đ ch a các block - block là các ph n n i dung Th ng thì m t theme c a drupal có m t s vùng c b n: header, footer, content, sidebar left, sidebar right Các vùng này bao quanh vùng n i dung Ngoài ra, có th thêm nhi u vùng vào theme tùy ý đó chính là s uy n chuy n c a Drupal Tuy nhiên các trang báo chia vùng nôi dung (vùng content) thành các ph n nh h n đ ti n trình bày Ví d chia vùng
Trang 24content thành c t trên đ u ch a tin nóng, hai c t hai bên ch a các block có các bài vi t
đ c phân lo i Vi c chia này gi ng nh s d ng layout trong Word Layout giúp trình bày n i dung d ng c t báo thì Panels c ng làm nhi m v này cho ph n n i dung(vùng content) c a theme Panels giúp chia ph n n i dung thành các ph n nh h n và trên m i
ph n đó ch a các block n i dung c a trang
IV.3 Content Construction Kit (CCK)
Drupal h tr hai lo i n i dung c b n là Page và Story nh ng c hai ki u n i dung này t ng t nhau g m có 2 field: Title và Body không th đáp ng đ c vi c phát tri n
n i dung website Do đó CCK ra đ i giúp cho vi c m r ng n i dung m t cách d dàng
h n Ng i qu n tr có th thêm các field m i vào ki u n i dung nh Text field, Image field, File field, Radio button có th thêm File field, Image field, Radio c n ph i cài
đ t thêm module File Field và Image Field dùng chung v i CCK
Sau khi đã t o thêm field m i, CCK t đ ng l u tr nh ng thông tin vào c s d
li u và bi u di n trong nh ng cách khác nhau
IV.4 Ckeditor
Ckeditor là trình so n th o mã ngu n m theo ki u WYSIWYG (“What You See
Is What You Get”) ngh a là ng i dùng không c n có ki n th c v HTML v n có th
đ nh d ng đ c đo n v n b n mình mu n CCK có giao di n thân thi n, d s d ng ch c
n ng t ng t nh trình so n th o word Tuy nhiên, ng i qu n tr c n ph i ch đ nh Filter HTML đ i v i ng i dùng bình th ng đ ng n ch n các mã đ c h i
Ngoài ra c n ph i tích h p module IMCE vào Ckeditor đ có th s d ng ch c
n ng tìm và chèn hình nh m t cách d dàng h n
V XÂY D NG MODULE CHO DRUPAL
V.1 File info và module
C u trúc c a m t module có th g m nhi u t p tin khác nhau nh ng ph i có ít nh t
m t t p tin <tenmodule>.info và m t t p tin <tenmodule>.module trong đó <tenmodule>
là tên c a th m c ch a module đ c t o, tên này không đ c trùng v i các module đã
t n t i trong h th ng
V.1.1 File info
Tr c khi th c s đi vào vi t mã cho m t module ph i t o ra m t file v n b n
ch a các thông tin c b n v module đó M t s thành ph n c a Drupal s s d ng các thông tin trong file này cho vi c qu n lý module
File info đ c vi t theo ki u c a file PHP ini, m t đ nh d ng file đ c xác đ nh cho vi c thi t l p N i dung m t file info có d ng nh sau:
name = “Xem diem”
description = “Xem diem sinh vien”
core = 6.x php = 5.1
Tr ng name khai báo tên c a module, tên này s hi n th trong danh sách các
module có khu v c ng i qu n tr Tr ng description ch a thông tin v module, mô
Trang 25t ch c n ng nhi m v mà module s th c hi n name và description là hai tr ng b t
bu c ph i có trong file info
Tr ng th ba là core M c này ch rõ module s ho t đ ng t t trên phiên b n nào
c a Drupal Giá tri 6.x cho bi t module này yêu c u phiên b n Drupal 6, bao g m các
phiên b n nâng c p t b n 6 Trong nhi u tr ng h p, Drupal s t đ ng đ t giá tr này
m t cách h p lý, nh ng nh ng ng i phát tri n làm vi c v i CVS (Concurrent Version System – h th ng qu n lý phiên b n ng d ng) đ c khuy n cáo nên t mình đ t giá tr cho tr ng core
Ch d n cu i cùng trong file info trên là php cho bi t phiên b n t i thi u c a PHP
File module là file quan tr ng nh t trong m t module, ch a các đo n mã PHP
th c hi n ch c n ng c a module đó File này thông th ng s đ c m r ng m t s hàm hook mà Drupal g i t i các th i đi m nh t đ nh đ i v i m t yêu c u
C ng gi ng nh file info, file module đ c đ t tên theo quy t c
<modulename>.module, trong đó <modulename> là tên th m c ch a module
N i dung file module b t đ u b ng th <?php sau đó là mã ngu n Theo quy c
c a Drupal, file này s không ch a d u đóng ?> Vi c này giúp tránh in nh ng ký t
tr ng trong đ u ra c a mã k ch b n trong m t s tr ng h p Ví d , n u các ký t tr ng
đ c xu t ra tr c khi ph n thông tin header c a HTML g i đi, trình duy t máy khách
s xu t hi n thông báo l i trên đ u c a trang web
V.2 M t s hook c b n
¬ Hook block
Hook này đ c s d ng đ t o m t block hi n th thông tin Khi hook_block đ c
g i, Drupal s truy n 3 tham s vào hàm: $op, $delta, $edit
Tham s $op ch a thông tin v lo i thao tác mà module s th c hi n Tham s này
có th nh n m t trong 4 giá tr sau:
o list: Giá tr này đ c dùng khi module cung c p thông tin v chính nó
o view: Giá tr này đ c truy n vào khi Drupal mu n hook block cung c p thông tin đ hi n th cho ng i dùng
o configure: Dùng đ đi u ch nh các thi t l p cho block
o save: Giá tr này đ c dùng khi thông tin v thi t l p c a block l y t form
d li u sinh ra b i configure c n đ c l u l i
Tham s $delta đ c đ t ph thu c vào các thao tác nh t đ nh c a module Khi
$op có tr là view thì $delta s đ c đ t Tham s này ch a các thông tin thêm v n i
Trang 26dung s hi n th trong block B ng cách s $delta, m t hàm hook_block() có th hi n th nhi u block khác nhau N i dung nào trong block s đ c s d ng tùy thu c vào giá tr
c a $delta truy n vào
Cu i cùng là tham s $edit đ c s d ng trong quá trình đi u ch nh các thi t l p
c a block (khi thao tác save đ c g i) $edit th c ch t là m t m ng các thay đ i mà
ng i qu n tr th c hi n lên các thi t l p c a block
Giá tr tr v c a hàm này ph thu c vào thao tác mà nó th c hi n Thông th ng, hàm s tr v m t m ng thông tin c a block (info), tiêu đ (subject) và n i dung
(content)
¬ Hook help
Hook này đ c dùng đ cung c p các thông tin tr giúp cho ng i s d ng Hàm hook_help() nh n hai tham s : $path ch a m t đo n URL cho bi t trang tr giúp nào
đ c g i và tham s $arg ch a m t s thông tin thêm
V i các tr ng ph c t p, l p trình viên có th s d ng phát bi u switch đ i v i giá
tr c a $path đ tr v các v n b n tr giúp khác nhau đ i v i m i đ ng d n Giá tr này tuân theo đ nh d ng admin/help#<module name> trong đó <module name> đ c thay
b ng tên c a module t ng ng K t qu c a hàm này đ c hi n th t i m c Administer
Trang thông tin ng i dùng c ng có th truy c p b i m t ng i qu n tr có quy n
t ng ng Ph n l n n i dung c a trang này đ c t o ra b i hook_user() B ng cách tri n khai hook này trong module, ng i phát tri n có th liên k t v i giao di n qu n lý ng i dùng
Th c ra, hook ng i dùng làm đ c nhi u vi c h n là hi n th trang tài kho n
ng i dùng Trong Drupal 6 có 13 thao tác mà hook này th c thi bao g m vi c thêm, s a
ch a ho c xóa b ghi nh đ ng nh p
M t b n tri n khai c a hook_user() s nh n 4 tham s sau:
o $op: Tên c a thao tác mà ng i dùng th c hi n Tham s này nh n 1 trong
13 giá tr t ng ng v i 13 thao tác (view, login, delete,…)
o $edit: M t m ng ch a các giá tr đ c g i lên t m t form Giá tr này đ c truy n vào qua tham chi u &$edit và đ c s d ng b i các thao tác x lý
d li u nh insert
o $account: c dùng đ ch a đ i t ng tài kho n cho m t ng i dùng nh t
đ nh Tham s này c ng đ c truy n qua tham chi u &$account
o $category: M t vài thao tác s d ng tham s này đ xác đ nh ph n nào c a thông tin ng i dùng s đ c trích xu t cho yêu c u
Chi ti t v hook này xem t i đ a ch http://api.drupal.org/api/function/hook_user/6
¬ Hook mail
Ph n l n các yêu c u v vi c g i mail trong Drupal đ u đ c h tr b i các hàm
có trong Mail API nên ng i phát tri n không c n ph i vi t mã cho nh ng thao tác này
Trang 27Tuy nhiên, tùy theo yêu c u, ng i phát tri n có th tùy ch nh đ nh d ng c a thông đi p
và vi c này th c hi n thông qua hook_mail() Vi c tri n khai hook này cho phép thi t l p các ph n đ u và thân c a thông đi p tr c khi g i đi
Khi hàm tri n khai hook mail đ c th c thi, nó s truy n 3 tham s sau:
o $key: M t khóa d ng chu i dùng đ xác đ nh thông tin v vi c thông đi p
s đ c đ nh d ng nh th nào
o $message: Là c u trúc d li u th hi n thông đi p mà Drupal đã kh i t o
tr c đó Tham s này ph i đ c truy n d i d ng tham chi u &$message
n u mu n thay đ i giá tr
o $params: M t t p các tham s đ c truy n vào t l i g i hàm drupal_mail()
c a module
¬ Hook view
Tr c khi m t node đ c hi n th đ n ng i dùng, thông tin c a nó có th đ c
c p nh t b ng cách s d ng hook_view() Hook này đ c g i khi h th ng n p m t đ i
t ng $node nh ng vào th i đi m tr c khi node đ c hi n th Hàm này s c n thi t trong m t s tr ng h p mà n i dung c a node có thêm m t s tr ng thông tin Drupal
o $teaser: Là c đánh d u cho bi t bài vi t s đ c hi n th đ y đ hay ch có
b n tóm t t Tham s này nh n giá tr logic True ho c False
o $page: Cho bi t node này s hi n th trang riêng hay không N u $page có giá tr True thì tiêu đ c a node s không đ c hi n th
Giá tr tr v c a hàm khai tri n hook_view() chính là $node Tham s này s đ c thay đ i n u c n thi t đ có th đ c bi u di n m t cách chính xác Các node đ c chu n
b cho vi c hi n th b ng cách t p h p m t m ng có c u trúc trong $node→content, thay cho vi c thao tác v i t ng thành ph n riêng $node→body và $node→teaser
Chi ti t c a hook này xem thêm t i đ a ch
http://api.drupal.org/api/function/hook_view/6
¬ Hook menu
Ch c n ng c b n c a hook_menu() là cho phép ng i phát tri n module đ ng ký
m t URI nh t đ nh (ho c chi ti t h n là m t đ ng d n URL t ng đ i) và ánh xa URI
đó v i m t hàm x lý Hook này th ng đ c dùng đ t o các th c đ n cho trang qu n lý
c a module
Gi ng nh các hook khác, m t b n tri n khai c a hook_menu) tr v m t m ng, trong tr ng h p này là m ng các m c th c đ n s đ c đ ng ký v i nhân Dupal M ng liên k t này s ch a m t đ a ch th c (giá tr ) cho m i đ ng d n đ c đ ng ký tr c (khóa)
D a vào nh ng tham s c u hình này, Drupal s xác đ nh cách chuy n m t yêu
c u t máy khách t i đ ng d n t ng ng đ x lý Vi c này đ c th c hi n b ng cách ánh x các hàm callback
Trang 28V.3 nh ngh a m t hook m i
M c đích c a vi c đ nh ngh a hook riêng là giúp ng i phát tri n module có th
ch đ nh n i dung s đ c đ a vào b n tin và cách hi n th chúng
V.3.2 S d ng hook vào các module khác
Vi c s d ng hàm hook t đ nh ngh a vào trong module c ng gi ng nh đ i v i các hook có s n c a Drupal B n tri n khai c a m t hook ph i đ c đ t theo quy t c
<modulename>_<hookname>( ) và có các tham s trùng v i ph n khai báo c a hook
Các hook đ c đ nh ngh a trong m t module có th đ c tri n khai trong module khác và module ch a khai báo hook ph i đ c b t
V.4 jQuery trong Drupal
jQuery là m t trong s các th vi n JavaScript m nh m hi n nay S d ng m t
mô hình thi t k h ng đ i t ng là Fluent Interface jQuery cho phép liên k t m t chu i các l i g i hàm v i nhau đ t o nên các truy v n ph c t p
Thông th ng, jQuery truy v n t i cây DOM (Document Object Model) là m t
c u trúc d li u đ nh ngh a nên c u trúc c a m t v n b n, th ng là HTML ho c XML
V n b n này s đ c bi u di n d i d ng cây v i thành ph n đ u tiên là g c DOM đ c
bi t đ n là m t mô hình đ i t ng ph c t p jQuery cung c p m t API nh h n và d s
d ng h n cho ng i l p trình
Tuy nhiên, jQuery đ c s d ng trong nhi u tr ng h p không ch riêng truy v n
Nó có m t b công c AJAX, công c x lý s ki n, hi u ng o và m t s hàm ti n ích khác
Thông tin thêm v jQuery có t i đ a ch http://jquery.com
M c đ nh jQuery s cài đ t cùng v i Drupal vì th vi c s d ng là khá d dàng
Mã ngu n c a jQuery đ c ch a trong file jQuery.js n m trong th m c misc File này s
đ c n p khi có l i g i hàm drupal_add_js() Hàm này có nhi m v nh n mã JavaScript
và thêm vào mã ngu n trang web Ví d :
Trang 29?>
Tham s đ u tiên c a hàm drupal_add_js( ) là đo n mã JavaScript s đ c th c thi Tham s th hai (inline) cho bi t Drupal s ghi đo n mã vào gi a hai th
</script></script> trong th <head> c a trang HTML
Tuy nhiên đ đ m b o r ng module ho t đ ng đúng nh mong đ i c n ph i b o
đ m các truy v n jQuery ch ch y khi trình duy t h tr JavaScript và AJAX N u trình duy t không h tr , các thay đ i đ i v i HTML phía máy khách s không đ c th c hi n
Th vi n JavaScript c a Drupal có hàm Drupal.jsEnabled( ) s ki m tra đi u ki n này Giá tr tr v c a hàm này là TRUE ho c FALSE t ng ng v i k t qu ki m tra
V.5 Form API
T phiên b n 4.7 tr v sau, Drupal cung c p API h tr vi c t o, xác th c và x
lý form trong HTML API này bi u di n các form b ng m t m ng ch a các thu c tính và giá tr M t s u đi m nh sau:
− M t thành ph n trong m t form có th đ c liên k t v i m t hàm giao di n riêng
− Có th thêm các b c xác th c và x lý riêng cho t ng form
− Các thao tác liên quan đ c b o v tránh vi c t n công b ng cách th c hi n nh ng thay đ i nh h ng x u đ n h th ng
V.5.1 T o form
Các thành ph n c a form đ c khai báo trong m t m ng có c u trúc phân c p và
có th ghép l ng nhau M i thành ph n g m có các c p thu c tính/giá tr Ví d sau đ nh ngh a m t thành ph n textfield:
<?php
$form['foo'] = array(
'#type' => 'textfield', '#title' => t('bar'), '#default_value' => $object['foo'], '#size' => 60,
'#maxlength' => 64, '#description' => t('baz'), );
Trang 30− Ki u c a thành ph n form đ c khai báo qua thu c tính #type
− Các khóa thu c tính đ c khai báo trong d u [], giá tr c a khóa có ki u xâu
− Th t khai báo các thu c tính không quan tr ng M t s thu c tính có giá tr m c
đ nh
− Không nên s d ng thu c tính #value cho các thành ph n có th thay đ i b i
ng i dùng thay vào đó nên s d ng thu c tính #default_value
V.5.2 Giao di n hóa form
Form Api cho phép tùy ch nh giao di n đ i v i t ng form, th m chí đ i v i riêng
t ng thành ph n trong m t form Vi c tùy ch nh đ c th c hi n b ng cách n p ch ng các thành ph n giao di n t i th i đi m t o form
Thêm thu c tính #theme vào form nh m t thành ph n c a form đó Các th đánh
d u có th là #prefix, #suffix ho c #markup Th này dùng đ ch đ nh v trí các đo n mã thi t l p giao di n trong form Ví d :
$form['access'] = array(
'#type' => 'fieldset', '#title' => t('Access log settings'), '#prefix' => '<div class="foo">', '#suffix' => '</div>',
$form_state[‘value’] ch a giá tr c n ki m tra Ví d :
function test_form_validate($form, &$form_state) {
if ($form_state['values']['name'] == '') { form_set_error('', t('You must select a name.'));
} }
V.5.4 G i form lên trang web
Trang 31Cách th c thông th ng đ c s d ng đ g i form lên là thông qua hàm M t form đ c g i lên b ng nút b m submit có thu c tính type = > ‘submit’ s đ c truy n
t i hàm t ng ng Ví d :
function test_form_submit($form, &$form_state) {
db_query("INSERT INTO {table} (name, log, hidden) VALUES ('%s',
VI T CH C L U TR C A DRUPAL
Nh Drupal, ki u node đ c xem là m t đ i t ng và m t node riêng l thì đ c coi là m t th hi n c a đ i t ng Và node c ng đ c xem là đ n v d li u Do đó, m i thông tin đ u đ c l u tr trong node (ngo i tr users, blocks, comments) Có nhi u ki u node khác nhau M t s ki u node chung nh blog, poll, page, story, book Và ki u n i dung đ c s d ng nh là ki u node, m c dù m t ki u node thì th t s là m t ki u tr u
t ng
T t c ki u n i dung đ u là node, chúng d a trên cùng ki n trúc d li u Do v y, giúp d dàng thao tác nh tìm ki m, t o m i, đi u ch nh, xóa và qu n lý n i dung trên node
Hình 1-4 Ki u node đ c b t ngu n t m t node c b n và có th thêm các tr ng
Trang 32Các ki u node đ c m r ng trên m t node c b n, thông th ng đ c thêm vào các thu c tính d li u riêng c a nó Ch ng h n, m t node ki u poll ch a các s l a ch n (voting) và ngày h t h n (expiration date) c a poll M t node ki u book ch a thu c tính parent, nh vào node ID cho m i node đ xác đ nh đâu là n i dung c a node phù h p
M t ki u node khác nh blog, thì không thêm thu c tính nào khác Thay vào đó, chúng
l i t o ra nh ng khung nhìn (view) khác nhau cho d li u b ng cách t o ra nh ng blog cho m i ng i dùng và RSS feeds (ngu n c p d li u RSS) cho m i blog
Hình 1-5 M i quan h gi a các b ng trong c s d li u c a Drupal
T t c các node có các thu c tính bên d i đ c ch a trong b ng c s d li u node và node_revisions:
− “nid”: Là unique ID (duy nh t) cho m t node
− “vid”: Là thu c tính khóa duy nh t cho m t node, giúp xác đ nh n i dung c a
node_revisions vid là unique cho c node và node_revisions
− “type”: M i node có m t ki u node Ví d : blog, story, article, image, …
− “title”: Tiêu đ c a m t node cho phép chu i dài 128 ký t
− “uid”: Thu c tính khóa cho tác gi (author) M c đ nh, m t tác gi có nhi u
node
− “status”: Giá tr b ng 0 là ch a đ c công b , có ngh a là n i dung đ c n đi vì
ch a đ c s cho phép c a ng i qu n tr Giá tr b ng 1 là node đã đ c công
b và n i dung đ c hi n th cho ng i dùng v i s cho phép truy c p n i dung
− “created”: Cho bi t th i gian khi m t node đ c t o
− “changed”: Ghi nh n th i gian khi có s đi u ch nh cu i cùng
− “comment”: Có ki u integer, mô t tr ng thái các comment c a node, có 3 giá
tr :
Trang 33+ 0: Các comment b vô hi u hóa cho node hi n hành ây là giá tr m c đ nh khi module comment đ c kích ho t
+ 1: Không cho phép thêm comment vào node hi n hành
+ 2: Các comment đ c hi n th và có th t o ra comment m i
− “promote”: M t tr ng ki u integer, xác đ nh cho phép mô t node trên trang
đ u hay không, v i 2 giá tr :
+ 1: Cho phép node hi n th trên trang đ u c a trang web Trang s ch a t t c các node mà có tr ng promote b ng 1, http:// example.com/?q=node là trang đ u m c đ nh
+ 0: Node s không đ c hi n th trang http://example.com/?q=node
− “moderate”: Có ki u integer, n u giá tr b ng 0 là moderate b vô hi u hóa và
giá tr b ng 1 là cho phép moderate
− “sticky”: Khi Drupal mô t danh sách các node trên m t trang hành vi m c đ nh
đ c li t kê đ u tiên v i nh ng node đ c đánh d u là sticky và danh sách còn
l i là các node “unsticky” s n m trong danh sách theo ngày t o ra Giá tr b ng
1 là sticky và b ng 0 là unsticky Có th có nhi u node sticky v i m t danh sách
VII.2 An toàn đ i v i mã ngu n
M c dù mã ngu n c a Drupal hoàn toàn có th xem và ch nh s a m t cách d dàng
nh ng c ng có nh ng cách riêng đ ng n ch n nh ng m i nguy h i chính:
− Vi t đo n mã t n công b ng cách ki m tra d li u xu t h p l
− a câu truy v n SQL đ t n công b ng cách s d ng l p tr u t ng (database abstraction layer)
− Gi i h n truy c p node b lo i b b ng cách s d ng db_rewrite_sql
C n s d ng l p Database Abstraction Layer h p lý Không bao gi , vi t d li u
ng i dùng vào trong đo n mã SQL D i đây là m t đo n SQL không an toàn:
db_query('SELECT foo FROM {table} t WHERE t.name = ' $_GET['user']);
thay vào đó ta ph i s d ng:
Trang 34db_query("SELECT foo FROM {table} t WHERE t.name = '%s' ", $_GET['user']);
VII.3 Tính an toàn đ i v i d li u
Khi x lý và xu t v n b n trong HTML, c n ph i quan tâm đ n vi c sàn l c d
li u M t khác, có th gây l i khi ng i dùng s d ng các d u đ c bi t nh <, &, ho c t
h n ng i dùng có th m và khai thác XSS (Cross-site scripting: M t d ng mà có th làm nh h ng t i s an toàn)
Khi x lý d li u, nguyên t c quan tr ng là ch a chính xác nh ng gì mà ng i dùng thao tác n i dung Trong tr ng h p ng i dùng đi u ch nh m t n i dung đã đ c
t i lên, thì form đ c thao tác tr c đó nên gi ng v i form c n đi u ch nh l i
Khi thao tác trên chu i nh n i chu i ph i đ m b o các chu i cùng đ nh d ng
− An toàn đ i v i module đ c thêm vào
− Các module s đ c nhóm Drupal Security Team ki m tra và thông báo v tình
o Security risk: Moderately critical
o Exploitable from: Remote
Trang 35PH N II MOODLE
I T NG QUAN V MOODLE
I.1 Khái Ni m
Moodle là m t h th ng qu n lý khóa h c (CMS) - m t gói ph n m m đ c thi t
k đ giúp các nhà đào t o t o ra các khóa đào t o tr c tuy n có ch t l ng m t cách d dàng Các h th ng e-learning nh th đôi khi c ng đ c g i là H th ng qu n lý đào t o (LMS) ho c Môi tr ng h c t p o (VLE)
I.2 L ch s
Moodle (vi t t t c a Modular Object-Oriented Dynamic Learning Environment)
đ c sáng l p n m 1999 b i Martin Dougiamas, ng i ti p t c đi u hành và phát tri n chính c a d án Do không hài lòng v i h th ng LMS/LCMS th ng m i WebCT trong
tr ng h c Curtin c a Úc, Martin đã quy t tâm xây d ng m t h th ng LMS mã ngu n
m h ng t i giáo d c và ng i dùng h n T đó đ n nay Moodle có s phát tri n v t
b c và thu hút đ c s quan tâm c a h u h t các qu c gia trên th gi i và ngay c nh ng công ty bán LMS/LCMS th ng m i l n nh t nh BlackCT (BlackBoard + WebCT)
c ng có các chi n l c riêng đ c nh tranh v i Moodle
I.3 u đi m
− Moodle đ c thi t k theo ph ng pháp module cho phép các tính n ng linh ho t thêm vào (ho c g b ) ch c n ng nhi u m c đ
− Moodle r t d nâng c p t phiên b n này sang phiên b n ti p theo - Phiên b n
ti p theo có m t h th ng n i b đ nâng c p databases và t s a ch a khi b m t
II.2 Trang v n b n (Text Page)
Cho phép t o ra m t trang v n b n đ n gi n (simple plain-text) Sau khi t o s nhìn th y link đ n trang v a t o Text Page v i các thông s sau:
− “Name”: Tên c a trang mu n t o
Trang 36− “Summary”: Mô t ý chính c a trang Giúp h c viên có th nhanh chóng quy t
đ nh đây có ph i là tài nguyên h u ích mà h dang tìm ki m không
− “Full Text”: N i dung c a trang v i các đ nh d ng h tr sau:
o Same window: N u mu n trang m trên cùng m t trình duy t ban đ u
o New window: N u mu n trang m trên m t trình duy t m i
− “Visible”:
o Show: N u mu n hi n tài ngyên này
o Hide: n tài nguyên này
II.3 Trang web (Web Page)
T o m t trang v n b n thông th ng (Text Page) không ph i là cách duy nh t t o
n i dung trong Moodle Moodle còn cho phép t o ra trang Web ph c t p v i đ nh d ng HTML,…Các thông s t ng t nh Text Page ch khác bi t là Compose Web Page v i Full Format Full Text
II.4 Liên k t m t file hay website (URL)
Không nh t thi t ph i t o t t c các n i dung tr c ti p trong Moodle Moodle cho phép upload b t k m t lo i file nào ho c link đ n b t k m t website nào i u c n quan tâm là ph i ch c ch n h c viên có th truy c p tài nguyên m t cách d dàng.Thi t l p v i các thông s đáng chú ý sau:
− “Location”: Cung c p đ ng d n đ n file ho c website
− “Force download”: N u đ c ch n, file s đ c t i v thay vì hi n th tr c ti p
trên web, n u không đ c ch n có th m file trên c a s m i (New Window)
ho c m trên cùng m t c a s (Same Window)
Có th upload m t file b ng cách ch n nút nh n “Chose or upload a file”
II.5 Th m c (Folder)
Hi n th m t th m c trên server (t t c các file và th m c con trong th m c này
s đ c hi n th ), d ng này thích h p v i nh ng tài li u tham kh o, bài gi ng,…(đ m t
th i gian đ a t ng file lên, ch upload t t c vào m t th m c nào đó)
II.6 Gói n i dung (IMS Content Package)
IMS Content Package là m t d ng tài nguyên đ c bi t, thích h p cho d li u đ c
s d ng l i các h th ng khác nhau mà không c n chuy n đ i v đ nh d ng
III.1 Nhi m v (Assignments)
Trang 37Cho phép giáo viên giao các nhi m v cho h c viên tr c tuy n ho c ngo i tuy n
Ví d : n p bài t p, bài lu n, thuy t trình…H c viên có th n p công vi c làm đ c theo
b t k đ nh d ng nào (file word, PDF, trang web, hình nh, audio hay video….)
III.1.1 Tùy ch n cách upload file (Advance uploading of file)
Cho phép m i h c viên có th upload nhi u file Các file đ c upload lên đ c xem nh là b n nháp cho đ n khi h c viên nh n “Send for marking” thì m i đ c công
nh n là đã g i
Thi t l p các thông s sau:
− “Assignment Name”: Tên assigment
− “Description”: Mô t thông tin assignment
− “Grade”: Thi t l p đi m s
− “Available from”: Th i h n nôp bài t p
− “Due to”: Th i h n k t thúc n p bài t p
− “Prevent late submissions”:
o Yes: Cho phép h c viên n p bài t p khi đã h t h n
o No: Không cho phép h c viên n p bài t p khi đã h t h n
− “Allow deleteting”:
o Yes: Cho phép xoá file upload
o No: Không cho phép xoá
− “Maximum size”: Dung l ng t i đa h c viên đ c phép upload
− “Maximum number of uploaded files”: S l ng file t i đa h c viên đ c
phép upload
− “Allow note”:
o Yes: Cho phép h c viên ghi chú
o No: Không cho phép h c viên ghi chú
− “Visible”: Cho phép n ho c hi n assigment
− “ID Number” : Dùng đ nh n d ng ho t đ ng này
III.1.2 Ki m tra tr c tuy n (Online Text)
Trang 38Cho phép h c viên có th n p tr c tuy n bài t p c a mình b ng cách s d ng vùng
so n th o m c đ nh Giáo viên đánh giá đi m và cho nh n xét tr c tuy n N u “Allow
resubmitting” đ c thi t l p, h c viên có th g i l i bài t p c a mình Ngoài ra h c viên
có th “Email alerts to teachers”, “Comment Inline” n u tùy ch n này đ c thi t l p
III.1.3 Upload m t file (Upload a single file)
Ch cho phép h c viên upload m t file duy nh t Có th gi i h n dung l ng
upload qua tùy ch n “Maximum size” và cho phép h c viên g i l i bài t p “Allow
resubmitting”
III.1.4 Ho t đ ng offline (Offline Activity)
Các ho t đ ng đánh giá x y ra ngo i tuy n Giáo viên v n ch m đi m t i đây và
h c viên có th nhìn th y đi m s c a h
III.2 Tán g u (Chat)
Tán g u là m t hình th c trao đ i thông tin trong th i gian th c (Soft - RealTime)
đ ng b gi a các ng i dùng qua trang Web ây là m t module r t quen thu c tr giúp
r t thu n ti n đ giao l u, tìm hi u l n nhau gi a các thành viên và hi u bi t h n v ch
đ đang đ c th o lu n Gi ng Yahoo Mesenger hay Google Talk, module này ch cho phép trao đ i d i d ng thu n v n b n không nhúng hình nh, âm thanh hay các đ nh
d ng file khác
Thi t l p các thông s :
− “Name of this chat room”: Tên phòng chat
− “Introduction Text”: Mô t thông tin phòng chat ho c h ng d n s d ng
− “Next chat time”: Thi t l p th i gian cho phiên chat ti p theo
− “Repeat session”: L p l i phiên chat
− “Save past sessions”: Thi t l p th i gian l u l i các cu c trò chuy n
− “Everyone can view past sessions”: N u thi t l p Yes h c viên có th xem các
cu c trò chuy n tr c đó N u thi t l p No ch có giáo viên m i đ c xem
III.3 Di n đàn (Forum)
Di n đàn là m t công c giao ti p m nh m trong Moodle Di n đàn cho phép giao
ti p v i nhau b t c lúc nào, b t c n i đâu thông qua Internet H c viên không c n ph i
đ ng nh p cùng m t th i đi m nh Chat H c viên v n có th th o lu n ch đ mình quan tâm b ng cách đ c l i các bài đã post tr c đó
B i vì di n đàn ho t đ ng theo c ch asynchronous (ngh a là không cùng m t
th i đi m) nên h c viên có nhi u th i gian ch nh s a câu tr l i c a mình H c viên s
vi t nháp và vi t l i cho đ n khi c m th y hài lòng v i k t qu tr l i không ph i ch u áp
l c so v i vi c ph i tr l i ngay l p t c H n n a nhi u nghiên c u cho th y sinh viên s n sàng tham gia th o lu n trên di n đàn h n là bày t ý ki n c a mình tr c l p h c Nhi u
h c viên e ng i , nhút nhát khi ph i nói tr c l p thì di n đàn là gi i pháp t t nh t Di n đàn giúp t o m t môi tr ng h c t p n ng đ ng và hi u qu
Thi t l p các thông s sau:
− “Forum Type”: có 4 lo i cho ta l ch n
Trang 39o A single simple discussion:
Ch cho phép t o m t ch đ th o lu n trong di n đàn này i u này s làm cho
cu c th o lu n t p trung h n vào m t ch đ đ c bi t nào đó
o Each person post one discussion:
M i ng i ch có th b t đ u b ng m t ch đ th o lu n i u này r t h u ích khi c n g i lên m t bài t p hay m t câu h i M i ch đ s có nhi u câu tr l i
o Q and A forum:
Di n đàn này đòi h i m i ng i ph i g i bài tr c khi xem tr l i c a ng i khác Sau khi g i có th xem và tr l i bài vi t
o Standard forum for general use:
Có th có m t ho c nhi u th o lu n trong di n đàn này V i b t c ai có quy n
đ c ch đ nh đ u có th g i nhi u ch đ
− “Force everyone to be subscribed?”: N u đ c thi t l p là Yes thì m i ng i
s nh n đ c mail là b n copy c a các bài vi t trong forum
− “Read tracking for this forum?”: ánh d u nh ng bài vi t nào ch a đ c
− “Maximum attachment size”: Gi i h n dung l ng file đính kèm trong bài vi t
− “Aggregate type”: Ch n ki u đánh giá bài vi t
− “Grade”: i m đánh giá
− “Restric ratings to post with dates in this range”: Thi t l p kho ng th i gian
đánh giá
III.4 Bài h c (Lesson)
Bài h c là s k t h p tuy t v i gi a gi ng d y và bài t p Bài h c cung c p s linh
ho t c a trang web, s t ng tác câu h i và kh n ng r nhánh
Bài h c cho phép giáo viên t o và qu n lý m t t p các trang đ c k t n i K t thúc
m i trang s có m t câu h i và h c viên s ph i tr l i N u tr l i đúng h c viên s chuy n đ n trang ti p theo N u tr l i sai h c viên s đ c chuy n đ n trang h ng d n (ho c trang gi i thích) ho c s nguyên trang đang hi n hành
Thi t l p các thông s sau:
− “Name”: Tên bài h c
− “Time limit”: Thi t l p th i gian cho bài h c đ c tình b ng phút
− “Maximum number of answers/branches”: S câu h i t i đa mà giáo viên ch
đ nh
− “Practice lesson”: N u thi t l p là Yes thì đi m s không đ c ghi l i
− “Custom scoring”: Thi t l p đi m cho m i câu tr l i
− “Maximum grade”: i m s t i đa cho bài h c
− “Student can re-take”: N u thi t l p Yes h c viên có th l y bài h c
− “Handling of re-take”: N u h c viên đ c l y bài h c thì đi m s đ c bi u
Trang 40− “Display review button”: N u đ c thi t l p nút Review s xu t hi n cho h c
viên tr l i l i câu tr l i sai
− “Maximum number of attempt”: S l n t i đa h c viên đ c phép tr l i câu
h i
− “Action after correct answer”: Hành đ ng h th ng đáp ng l i khi h c viên tr
l i đúng
− “Display default feedback”: N u đ c thi t l p h th ng s ph n h i l i “That
‘s correct answer” ho c “That ‘s wrong answer”
− “Minimum number of question”: S câu h i dùng đ tính đi m cho h c viên
− “Number of pages to show”: S trang h c viên nhìn th y
− “Slide show”: N u đ c thi t l p thì bài h c s đ c bi u di n nh m t trình
chi u v i vi c tùy ch nh chi u cao, chi u r ng, màu n n
− “Display left menu”: N u đ c thi t l p thì danh sách các trang đ c hi n th
− “Passwordd protect lesson”: Thi t l p password truy c p cho bài h c
− “Link to an activity menu”: Liên k t đ n m t ho t đ ng khác cu i trang bài
h c
Sau khi thi t l p nh n “Save Change” s đ c h th ng d n đ n m t trang h ng
d n xây d ng bài h c và đ c yêu c u làm công vi c gì đ u tiên nh sau:
• Import questions
N u ta ch n Import questions có th Import nh ng câu h i đ c t o b i Moodle và
nh ng h th ng qu n lý khóa h c khác Có các đ nh d ng sau: GIFT and Moodle XML, Aiken, Missing Word, BlackBoard, WebCT, Course Test Manager, Embedded Test Manager
• Import PowerPoint
Cho phép import file trình chi u PowerPoint vào bài h c
• Add a Branch Table
Branch Table là trang đ n gi n thi t l p nh ng d ng link đ n các trang khác trong bài h c
• Add a Question Page
Nh ng d ng câu h i này s đ c trình bày k h n ph n Quiz
III.5 Câu h i (Quiz)
Moodle cho phép t o câu h i cho đ thi hay bài ki m tra m t cách linh ho t M i câu h i là m t trang web v i đ y đ ch c n ng đ nh d ng HTML Vì th có th t o câu
h i v i b t c th gì nh text, image, audio, video…