# Hướng dẫn phát triển

> Tài liệu này mô tả về một số thiết kế của Moodle và làm thế nào bạn có thể bạn có thể đóng góp.

> It's a bit thin at the moment - better documentation will come eventually!

> Các phần trong tài liệu này:

> 1. Cấu trúc của Moodle
> 2. Làm thế nào bạn có thể đóng góp
>    - Các hoạt động học tập
>    - Themes
>    - Ngôn ngữ
>    - Giản đồ cơ sở dữ liệu
>    - Các định dạng cua học
>    - Tài liệu và các bài báo
>    - Tham gia vào hoạt động kiểm tra lỗi

## 1. Cấu trúc của Moodle

> Từ một hệ thống phối cảnh của nhà quản trị, Moodle được thiết kế theo các tiêu chuẩn sau:

> 1. Moodle nên chạy trên các nền phổ dụng nhất
>    Nền ứng dụng web mà chạy trên trên hầu hết các nền là PHP được biên dịch cùng với MySQL, và đây là môi trường mà Moodle được phát triển trong (trên Linux, Windows, và Mac OS X). Moodle cũng sử dụng thư viện ADOdb để chiết ra cơ sở dữ liệu, điều đó có nghĩa là Moodle có thể sử dụng nhiều hơn mười loại cơ sở dữ liệu khác nhau (không may mắn là, nó có thể chưa cài đặt các bảng trong tất cả các cơ sở dữ liệu này - chi tiết hơn ở lần sau).
> 2. Moodle nên dễ cài đặt, học tập và thay đổi
>    Phiên bản đầu tiên của Moodle (1999)được xây dựng sử dụng Zope - một ứng dụng web hướng đối tượng cao cấp. Không may mắn tôi nhận thấy rằng mặc dù công nghệ that although the technology was pretty cool, it had a very steep learning curve and was not very flexible in terms of system administration. Ngôn ngữ kịch bản PHP , nói cách khác, rất dễ để viết get into (đặc biệt khi bạn làm bất kỳ chương trình nào sử dụng bất kỳ ngôn ngữ kịch bản nào khác). Đầu tiên tôi tạo một mô tả để ngăn việc thiết kế lại một lớp, để duy trì nó đơn giản dễ hiểu đối những người chưa có kinh nghiệm. Mã sử dụng lại được lưu trữ bởi các thư viện của các hàm được đặt tên rõ ràng và cách bố trí phù hợp của các file kịch bản. PHP cũng dễ cài đặt (các nhị phân thì có sẵn đối vơí mọi nền) và được có sẵn rộng rãi để chỉ ra rằng tất cả các dịch vụ web hosting cung cấp nó như một chuẩn.
> 3. Nó nên dễ nâng cấp từ một phiên bản để trở thành phiên bản tiếp theo
>    Moodle knows what version it is (ví dụ như các phiên bản của tất cả các môđun plug-in ) và một kỹ xảo được xây dựng với mục đích để Moodle có thể tự nâng cấp một cách dễ dàng thành phiên bản mới (ví dụ nó có thể đổi tên các bảng cơ sở dữ liệu hoặc thêm các trường mới ). Nếu sử dụng CVS trong Unix đối với ví dụ này, một cách có thể làm một "cập nhật cvs " và sau đó thăm trang chủ để hoàn thành việc nâng cấp.
> 4. Nó nên môđun hóa để cho phép phát triển
>    Moodle có một số đặc trưng đó là các môđun, bao gồm themes, các hoạt động, các ngôn ngữ giao diện , giản đồ cơ sở dữ liệu và định dạng các cua học. Điều này cho phép bất kỳ ai thêm các đặc trưng vào phần mã chính hoặc ngay cả khi sắp xếp chúng một cách độc lập. Chi tiết hơn xem ở các phần sau.
> 5. Nó nên có khả năng được sử dụng chung với các hệ thống khác
>    Một trong những điều mà Moodle có thể là là duy trì tất cả các file đối với một cua học trong một thư mục thông thường trên server. Điều này sẽ cho phép một nhà quản trị hệ thống cung cấp các form liền mạch các truy cập mức file đối với mỗi giáo viên,ví dụ Appletalk, SMB, NFS, FTP, WebDAV vân vân. Các môđun chứng thực cho phép Moodle sử dụng LDAP, IMAP, POP3, NNTP và các cơ sở dữ liệu khác như các nguồn tài nguyên đối với thông tin người dùng. Mặt khác, chưa có công việc phải làm. Các tính năng được lên kế hoạch cho Moodle trong các phiên bản trong tương lai bao gồm: nhập và xuất dữ liệu của Moodle sử dụng các định dạng dựa trên XML (bao gồm IMS và SCORM); và tăng thêm sử dụng các kiểu dáng đối với các định dạng giao diện (vì thế nó có thể được tích hợp bên ngoài vào trong các web site khác ).

## 2. Làm thế nào bạn có thể đóng góp

> Như được đề cập ở trên đây, Moodle có một số đặc trưng mà nó là that are modular. Ngay cả khi bạn không là một lập trình viên có một số thứ mà bạn có thể thay đổi hoặc trợ giúp với.

> ### Các hoạt động học tập

> > Đây là những môđun quan trọng nhất và được đặt ở trong thư mục 'mod'. Có một số môđun mặc định: assignment, choice, forum, journal, quiz, resource, và survey. Mỗi môđun là một thư mục con riêng biệt chứa các phần tử có tính bắt buộc sau (plus extra scripts unique to each module):

> > - mod.html: một form để thiết lập hoặc cập nhật một ví dụ về môđun này
> > - version.php: định nghĩa một số thông tin biến đổi và cung cấp nâng cấp mã
> > - icon.gif: một biểu tượng 16x16 đối với môđun
> > - db/: Kết xuất SQL về tất cả các bảng db được yêu cầu và dữ liệu (đối với mỗi kiểu cơ sở dữ liệu )
> > - index.php: một trang liệt kê tất cả các ví dụ trong một cua học
> > - view.php: một trang để quan sát một ví dụ cụ thể
> > - lib.php: tất cả các hàm được định nghĩa bởi môđun nên được đặt ở đây. Nếu tên môđun nếu gọi widget, thì các hàm được yêu cầu bao gồm:
> >   - widget_add_instance() - mã để thêm một ví dụ mới về widget
> >   - widget_update_instance() - mã để cập nhật một trường hợp đã tồn tại
> >   - widget_delete_instance() - mẫ để xóa một trường hợp
> >   - widget_user_outline() - đưa ra một trường hợp, trả về tóm tắt đóng góp của một người
> >   - widget_user_complete() - đưa ra một trường hợp, hiển thị chi tiết về đóng góp của người dùng
> >   - Ngăn chặn khả năng xung đột, bất kỳ hàm môđun nào nên được đặt tên bắt đầu với widget_ và bất kỳ hằng bạn định nghĩa nên bắt đầu với WIDGET_
> > - Cuối cùng, mỗi môđun sẽ có một số file ngôn ngữ mà nó chứa các chuỗi đặc trưng cho môđun đó . Xem dưới đây.

> > Cách tốt nhất để bắt đầu một môđun hoạt động học tập mới là sử dụng cái mẫu trong mod/newmodule_template.zip. giải nén nó và làm theo các bước bên trong phần README.

> > Bạn cũng có thể muốn gửi lên đầu tiên trong Diễn đàn các môđun hoạt động trên Moodle.

> ### Themes

> > Themes (or skins) định nghĩa giao diện của site. Một số theme đơn giản được cung cấp trong phân phối chính, nhưng bạn có thể muốn tạo ra cho riêng mình một theme với màu sắc, logo, kiểu dáng và giản đồ của riêng mình.

> > Mỗi theme trong một thư mục con của thư mục "theme", và chứa tối thiểu các file sau:

> > - config.php: định nghĩa màu sắc của theme được sử dụng trong suốt site
> > - styles.php: chứa các định nghĩa CSS cho các phần tử HTML chuẩn như đối với nhiều phần tử của Moodle.
> > - header.html: Bao gồm ở đỉnh của mỗi trang. Đây là những gì bạn cần để soạn thảo thêm một logo ở đỉnh của các trang, ví dụ.
> > - footer.html: Bao gồm ở đáy của mỗi trang.

> > Tạo themes cho riêng bạn đối với các phiên bản hiện tại của Moodle:

> > 1. Copy folder theme đã tồn tại sang một cái khác với một tên mới. Tôi gợi ý bắt đầu với một trong những cái theme chuẩn.
> > 2. Soạn thảo file config.php và chèn các màu sắc của riêng bạn vào.
> > 3. Soạn thảo file styles.php và thay đổi kiểu dáng CSS của bạn.
> > 4. Soạn thảo file header.html và footer.html thêm các logo mới, hoặc thay đổi cách bố trí.

> > Chú ý rằng tất cả các bươc này là tùy chọn - bạn có thể tạo một cái trông khác hoàn toàn để site của bạn trở nên đơn giản bởi việc soạn thảo màu sắc trong file config.php

> > Chú ý rằng các nâng cấp của Moodle cũng có thể làm gián đoạn các themes, vì thế kiểm tra các ghi chú phiên bản một cách cẩn thận nếu bạn đang sử dụng một theme tùy chọn.

> > Cụ thể, Moodle 2.0 sẽ có một hệ thống hiển thị mới hoàn toàn, có thể dựa trên XSL sự biến đổi của đầu ra XML từ Moodle. Hầu như các theme cho điều này sẽ là một định dạng khác hoàn toàn ,nhưng lợi ích sẽ là là cao hơn rất nhiều (bao gồm di chuyển các phần tử xung quanh trang ).

> > Thảo luận nhiều hơn về điều này trong Các diễn đàn về theme trên Moodle.Nếu bạn tạo một theme đẹp mà bạn nghĩ những người khác có thể muốn sử dụng , vui lòng gửi file zip của bạn lên diễn đàn về theme!

> ### Các ngôn ngữ

> > Moodle được thiết kế cho toàn cầu. Mỗi 'string' hoặc 'page' văn bản mà được hiển thị như một phần giao diện được vẽ từ một tập các file ngôn ngữ . Mỗi ngôn ngữ là một thư mục con của thư mục 'lang'. Cấu trúc của thư mục lang là như sau:

> > lang/en - thư mục chứa tất cả các file đối với mỗi ngôn ngữ (ví dụ English)

> > - moodle.php - các chuỗi dành cho giao diện chính
> > - assignment.php - các chuỗi dành cho môđun bài tập lớn
> > - choice.php - các chuỗi dành cho môđun lựa chọn
> > - forum.php - các chuỗi dành cho môđun diễn đàn
> > - quiz.php - các chuỗi dành cho môđun bài thi
> > - resource.php - các chuỗi dành cho môđun tài nguyên
> > - survey.php - các chuỗi dành cho môđun khảo sát
> > - .... và nhiều môđun khác nữa nếu có thể.
> >   Một chuỗi được gọi từ những file này sử dụng hàm get_string() hoặc print_string() . Mỗi chuỗi hỗ trợ hành động thay thế các biến, hỗ trợ thứ tự biến trong các ngôn ngữ khác nhau.
> >   ví dụ $strdueby = get_string("assignmentdueby", "assignment", userdate($date));
> >   Nếu một chuỗi không tồn tại tỏng ngôn ngữ riêng biệt, thì một chuỗi bằng tiếng anh tương ứng sẽ được tự động thay thế .

> > lang/en/help - chứa các trang trợ giúp( trợ giúp phù hợp với từng ngữ cảnh )

> > > Các trang trợ giúp chính thường ở đây, đôi khi các trang trợ giúp chỉ ra mỗi môđun được định vị trong các thư mục con với tên của môđun đó.

> > > Bạn có thể chèn motọ nút trợ giúp vào trong một trang với hàm trợ giúp.

> > > ví dụ helpbutton("text", "Nhấn chuột vào đây để được trợ giúp về văn bản ");

> > > và chi tiết về các môđun

> > > helpbutton("forumtypes", "các kiểu diễn đàn", "forum");

> > Chú ý rằng bạn có thể soạn thảo các ngôn ngữ trực tuyến, sử dụng công cụ quản trị web bởi "Kiểm tra ngôn ngữ này". Điều này làm cho nó không chỉ dễ tạo các ngôn ngữ mới mà còn tinh lọc những cái đã tồn tại. Nếu bạn đang bắt đầu một ngôn ngữ mới, vui lòng liên lạc với tôi , Martin Dougiamas.

> > Bạn cũng có thể muốn gửi lên Diễn đàn các ngôn ngữ sử dụng Moodle.

> > Nếu bạn đang duy trì một ngôn ngữ dựa trên một bản đã tồn tại, tôi có thể đưa cho bạn điền vào CVS truy cập mã nguồn của Moodle vì thế bạn có thể duy trì trực tiếp các file.

> ### Giản đồ cơ sở dữ liệu

> > Đưa ra một cơ sở dữ liệu làm việc với các bảng được định nghĩa, SQL sử dụng trong Moodle sẽ làm việc tốt với sự đa dạng của các kiểu cơ sở dữ liệu khác nhau.

> > Một vấn đề tồn tại vơí tạo tự động các bảng mới trong một cơ sở dữ liệu, nó là những gì moodle cố gắng làm để chông lại các cài đặt ban đầu. Bởi vì mọi cơ sở dữ liệu thì rất khác nhau, chưa tồn tại bất kỳ cách nào để làm điều này theo một cách không phụ thuộc nền. Để hỗ trợ điều này tự động trong mỗi cơ sở dữ liệu , các giản đồ có thể được tạo mà danh sách yêu cầu SQL tạo các bảng trong Moodle trong một cơ sở dữ liệu đặc biệt . Có nhiều file trong lib/db và bên trong thư mục con db của mỗi môđun.

> > Hiện tại, chỉ có MySQL và PostgreSQL là hỗ trợ hoàn toàn theo cách này.

> > Moodle 1.2 sẽ sử dụng một phương pháp mới của giản đồ XML không phụ thuộc cơ sở dữ liệu mà sẽ làm tất cả những điều không cần thiết .

> ### Các định dạng cua học

> > Moodle hiện tại hỗ trợ 3 định dạng cua học khác nhau: theo tuần, theo chủ đề và các vấn đề xã hội.

> > Những cái này là một bộ phận nhỏ được kết nối tới phần còn lại của mã ( và kể từ đây, "pluggable" kém đi;)nhưng nó quá dễ để thêm vào nhiều cái mới.

> > Nếu bạn có bất kỳ ý kiến nào về các định dạng khác mà bạn muốn thì bạn có thể liên lạc với tôi để tôi sẽ làm nó một cách tuyệt đối nhất để có sẵn ở các phiên bản trong tương lai.

> ### Tài liệu và các bài báo

> > Nếu bạn cảm thấy muốn viết một tài liệu hướng dẫn, một bài báo, hoặc bất kỳ cái gì khác về Moodle, vui lòng làm thực hiện như sau!

> > Đặt nó trên web và đảm bảo rằng bạn chứa các đường link tới http://moodle.org/

> ### Tham gia vào hoạt động kiểm tra lỗi

> > Cuối cùng, tôi muốn mời bạn đăng ký vào " hoạt động kiểm tra lỗi " ở http://moodle.org/bugs vì thế bạn có thể sửa bất kỳ lỗi nào mà bạn tìm thấy và có thể tham gia thảo luận và cố định chúng .

> > "Các lỗi" không chỉ bao gồm các lỗi phần mềm với các phiên bản hiện hành. của Moodle, mà còn các ý kiến mới, các yêu cầu đặc trưng và nhận xét kiến trúc các đặc trưng đã tồn tại Điều tuyệt vời nhất của mã nguồn mở là bất kỳ ai cũng có thể tham gia theo nhiều kiểu khác nhau và trợ giúp tạo một sản phẩm tốt hơn cho tất cả chúng ta thưởng thức. Trong dự án này, rất ủng hộ mọi người tham gia vào!

> > > Xin chân thành cám ơn vì đã sử dụng Moodle!
> > > Martin Dougiamas, nhà phát triển chính

Tài liệu của Moodle

Phiên bản: $Id$