




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、本 科 畢 業(yè)(設(shè)計)論 文(二七 屆)題 目: moodle的研究和開發(fā)理論 分院系部: 計算機(jī)與信息科學(xué)系 專 業(yè): 計算機(jī)科學(xué)與技術(shù) 姓 名: 導(dǎo)師姓名: 導(dǎo)師職稱: 二一一 年 六 月基于moodle下課程展示平臺的設(shè)計與開發(fā)姓名(學(xué)校 計算機(jī)與信息科學(xué)系,地址 650224)摘 要:信息化學(xué)習(xí)的不斷發(fā)展促進(jìn)了網(wǎng)絡(luò)課程管理系統(tǒng)的發(fā)展。moodle就是伴隨著網(wǎng)絡(luò)教育的出現(xiàn)而發(fā)展起來的一個教學(xué)管理系統(tǒng),moodle 作為一個著名的開源課程管理系統(tǒng)被全球的教育機(jī)構(gòu)使用著。論文分析了 moodle 的基本構(gòu)架和可行的二次開發(fā)和設(shè)計的形式, 并利用php技術(shù)對課程展示平臺進(jìn)行設(shè)計與開發(fā)。論文首先
2、簡要介紹了moodle教學(xué)平臺的搭建方法、結(jié)構(gòu)及平臺建設(shè)注意事項;然后詳細(xì)介紹了moodle主題風(fēng)格的體系結(jié)構(gòu)及如何自定義個性化的主題風(fēng)格,論文對此進(jìn)行了詳細(xì)介紹。關(guān)鍵詞:信息化學(xué)習(xí); 課程管理系統(tǒng); moodle;php技術(shù);教學(xué)平臺;主題風(fēng)格design and development of course display platform based on moodlename( , southwest forestry college, , 650224, china)abstract: the continuous development of information technolo
3、gy to promote learning of the network management system development program. moodle is accompanied by the emergence of online education and developed a learning management system, moodle, as a well-known open source course management system is used with educational institutions around the world. moo
4、dle paper analyzes the basic framework and viable form of secondary development and design, and using php technology demonstration platform for the curriculum design and development. paper first introduces the platform for moodle teaching methods, structure and platform considerations; and then deta
5、ils the architecture of moodle theme style and how to customize the theme of personal style, the paper describes this in detail.keywords: information technology learning; course management system; moodle; php technology; teaching platform; theme style目 錄1引言12moodle概述22.1moodle概述22.2moodle的發(fā)展歷程22.3mo
6、odle的特點32.3.1先進(jìn)的教學(xué)理念32.3.2功能強(qiáng)大32.3.3易于操作42.3.4模塊化的結(jié)構(gòu)設(shè)計42.3.5支持多種語言42.3.6開放源代碼43moodle結(jié)構(gòu)分析63.1moodle的系統(tǒng)架構(gòu)63.2moodle的課程活動模塊73.2.1作業(yè)(assignment)模塊73.2.2選項(choice)模塊83.2.3討論區(qū)(forum)模塊83.2.4日志(journal)模塊83.2.5資源(resource)模塊83.2.6測試(quiz)模塊83.2.7調(diào)查(survey)模塊93.2.8聊天室(chat)模塊93.2.9工作坊(workshop)模塊93.3moodle
7、的主要功能93.3.1管理員功能93.3.2教師功能103.3.3學(xué)生功能103.4模塊化構(gòu)架分析113.5moodle數(shù)據(jù)庫模型114moodle的二次開發(fā)理論134.1moodle二次開發(fā)的形式134.2moodle二次開發(fā)的準(zhǔn)備134.2.1開發(fā)環(huán)境和工具134.2.2熟悉目錄結(jié)構(gòu)144.2.3總體開發(fā)約定154.3moodle二次開發(fā)指南154.3.1通用規(guī)則154.3.2編碼風(fēng)格164.3.3數(shù)據(jù)庫結(jié)構(gòu)204.3.4安全問題225課程展示平臺的設(shè)計與開發(fā)245.1moodle平臺的安裝245.2創(chuàng)建課程255.2.1用戶注冊265.2.2課程設(shè)置265.2.3板塊設(shè)置265.2.4創(chuàng)
8、建和引用資源275.2.5活動使用275.3theme的設(shè)計開發(fā)285.3.1了解theme結(jié)構(gòu)和開發(fā)約定285.3.2了解主題風(fēng)格的目錄文件305.3.3開發(fā)方法316結(jié)論32參考文獻(xiàn)33指導(dǎo)教師簡介34致 謝35附 錄366 結(jié)論1 引言在實現(xiàn)計算機(jī)運用和信息網(wǎng)絡(luò)化的今天,效率的大幅提高以及信息交換的深入和擴(kuò)大人類的生活越來越離不開數(shù)字化、信息化。信息決定著我們的生存。以多媒體計算機(jī)技術(shù)和網(wǎng)絡(luò)通訊技術(shù)為主要標(biāo)志的信息技術(shù),對當(dāng)代社會產(chǎn)生著重大的影響,改變著我們的工作方式、學(xué)習(xí)方式和生活方式。信息技術(shù)在教育領(lǐng)域的運用是導(dǎo)致教育領(lǐng)域徹底變革的決定性因素,它必將導(dǎo)致教學(xué)內(nèi)容、手段、方法、模式甚至
9、教學(xué)思想、觀念、理論以及體制的根本變革。 網(wǎng)絡(luò)教育是隨著信息技術(shù)的發(fā)展而發(fā)展的?,F(xiàn)代教育技術(shù)的廣泛應(yīng)用,使得網(wǎng)絡(luò)教育具有社會和教育意義上的極大優(yōu)勢:教育信息的及時傳遞,網(wǎng)絡(luò)教育資源的最充分共享和更有效利用;實時和非實時地任意交流、討論;學(xué)生自主學(xué)習(xí)、個性化學(xué)習(xí)及協(xié)作學(xué)習(xí);教學(xué)空間的無限擴(kuò)展,教育對象的空前膨脹;虛擬技術(shù)模擬現(xiàn)實,解決教學(xué)難題;促使教育社會化,使教育從學(xué)校走向社會與家庭;促進(jìn)終生教育和全民教育的開展等等。隨著信息社會、知識經(jīng)濟(jì)的到來,社會對教育有著極大的需求,而目前傳統(tǒng)教育由于規(guī)模有限、教育資源分配不均、時間、空間固定等原因還遠(yuǎn)遠(yuǎn)不能滿足社會發(fā)展的需要;網(wǎng)絡(luò)教育的優(yōu)勢和社會對教育
10、的極大需求預(yù)示著網(wǎng)絡(luò)教育有著極大的發(fā)展前景。 網(wǎng)絡(luò)教育不僅僅是運用了先進(jìn)技術(shù)手段,提高了教學(xué)效率,更重要的是改變了以教師為中心的傳統(tǒng)教學(xué)模式,形成了以學(xué)生為中心的個性化學(xué)習(xí)方式。這對于提高學(xué)生應(yīng)用語言的能力和自主學(xué)習(xí)能力,尤其是擴(kuò)大教學(xué)規(guī)模,解決師資不足的問題,保證我國高等教育大眾化的實現(xiàn)有著極其重要的意義。網(wǎng)絡(luò)教育使用的平臺很多,如 claroline、moodle、dokeos、blackboard 等。通過對moodle課程管理系統(tǒng)的研究,本文試圖對moodle平臺進(jìn)行全面分析和客觀評價,并為moodle環(huán)境下的課程設(shè)計與開發(fā)提供理論和實踐指導(dǎo)。- 43 -2 moodle概述2.1 m
11、oodle概述moodle 是伴隨著網(wǎng)絡(luò)教育的發(fā)展而發(fā)展起來的一個課程管理系統(tǒng)。moodle 這個詞本是 modular object-oriented dynamic learning environment(模塊化面向?qū)ο蟮膭討B(tài)學(xué)習(xí)環(huán)境)的縮寫。它是一個動詞,表述的是一個這樣的過程:遇事不慌不忙,想起什么就做什么,快樂的瞎忙活可也經(jīng)常會帶來一些領(lǐng)悟和創(chuàng)新。moodle 的開發(fā)就是這樣,學(xué)生與教師在在線課程中學(xué)習(xí)與教課也是這樣。moodle 的核心思想是“社會建構(gòu)主義教育學(xué)(social constructionist pedagogy)” ,它允許師生或?qū)W生彼此間共同的思考,合作解決問題。
12、從這些過程中,與別人互動,或與教師互動時,學(xué)生很自然地就能建立概念,因為他們在交談時,共同創(chuàng)造出一個可論述的世界,和一個共同架構(gòu),在其中可以產(chǎn)生溝通。moodle 既適合于 100%在線的課程,又可以作為傳統(tǒng)課程的補(bǔ)充。網(wǎng)站管理上,由 admin 用戶管理,包括網(wǎng)站的主題,模塊,語言以及新的活動模塊插件的增添。學(xué)習(xí)管理由教師管理,教師對課程進(jìn)行設(shè)置,對特定的學(xué)生采取多方面的管理。學(xué)生的課程設(shè)計也可以通過 moodle 的課程設(shè)計模塊相互交流、測驗、提交和批閱。各類用戶可以通過 e-mail、聊天室、bbs 發(fā)表意見,共同尋找、開發(fā)利用網(wǎng)絡(luò)中豐富的教育資源,充分發(fā)揮 internet 在教學(xué)上的
13、作用。mood1e是由澳大利亞martin dougiamas博士主持開發(fā)的學(xué)習(xí)管理系統(tǒng)(lms),該系統(tǒng)是一套基于“社會建構(gòu)主義學(xué)習(xí)理論”設(shè)計開發(fā)的開放源代碼的軟件,能夠幫助教師高質(zhì)量的創(chuàng)建和管理網(wǎng)絡(luò)課程。moodle有兩層含義:一層含義是modular object-oriented dynamic learning environment,即模塊化面向?qū)ο蟮膭討B(tài)學(xué)習(xí)環(huán)境,一個用來構(gòu)建網(wǎng)絡(luò)學(xué)習(xí)環(huán)境的軟件包;另一層含義是一個動詞,表示想起什么就做什么,自由地發(fā)揮創(chuàng)造力和想象力。2.2 moodle的發(fā)展歷程moodle的原創(chuàng)者martin dougiamas博士曾經(jīng)擔(dān)任澳大利亞卡丁技術(shù)大學(xué)(
14、curtin university of technology)網(wǎng)絡(luò)管理員,具有計算機(jī)和教育方面的知識背景。他對社會建構(gòu)主義的熱情、對網(wǎng)絡(luò)教育的興趣以及對自由軟件的向往是他開發(fā)moodle的初衷,他的理想是建立一個自由、靈活、易用的網(wǎng)絡(luò)課程管理系統(tǒng)。在經(jīng)歷了幾個原型版本之后,moodle 1.0于2002年8月20日正式發(fā)布。moodle自從誕生之日起就以自由軟件的形式出現(xiàn),遵循gpl(gnu public license)協(xié)議,這給moodle帶來了無窮的活力,吸引了一大批開發(fā)者,目前已發(fā)展到1.8版本。受益于軟件本身良好的多語言支持特性,moodle已在世界各地的大學(xué)、中學(xué)和小學(xué)等各種教育
15、機(jī)構(gòu)應(yīng)用起來。像linux等其他自由軟件一樣,moodle也已逐漸形成了自己的社群,就是為moodle使用者、開發(fā)者和研究人員協(xié)作交流而創(chuàng)建的網(wǎng)站,相關(guān)的商業(yè)支持網(wǎng)站也于2003年建立起來。2.3 moodle的特點2.3.1 先進(jìn)的教學(xué)理念martin dougiamas本人非常推崇社會建構(gòu)主義學(xué)習(xí)理論,moodle是其將該理論應(yīng)用于實踐的一個試驗,在其設(shè)計開發(fā)過程中處處體現(xiàn)著這一教育理念。建構(gòu)主義認(rèn)為學(xué)習(xí)是學(xué)習(xí)者與環(huán)境的相互作用中主動的意義建構(gòu)過程,社會建構(gòu)主義則更強(qiáng)調(diào)這一過程中學(xué)習(xí)者之間的對話、協(xié)作、互動等社會性活動對個人及群體意義建構(gòu)的作用。因此,moodle的設(shè)計
16、不是僅僅停留在教學(xué)內(nèi)容的管理與呈現(xiàn)上,而是更加關(guān)注對教學(xué)過程中各種“活動”的支持。moodle對教師角色的定位不是知識的提供者,而是一個學(xué)習(xí)社團(tuán)中有影響力的榜樣,是各種學(xué)習(xí)活動的引導(dǎo)者,是與學(xué)生平等對話、共同實現(xiàn)預(yù)定學(xué)習(xí)目標(biāo)的組織者。moodle不僅具備當(dāng)前新興的各種社會軟件(blog、wiki、bbs等)的功能,還支持多樣化的教學(xué)方式,它適用于多種組織類型,例如:傳授接受型的教學(xué)組織、研究項目型的教學(xué)組織和社區(qū)小組型的教學(xué)組織等。更值得關(guān)注的是,moodle課程還注重多樣化教學(xué)評價,如過程性評價、總結(jié)性評價、檔案袋評價、集體評價、同伴評價和教師評價等,這有利于及時發(fā)現(xiàn)和解決學(xué)生在學(xué)習(xí)過程中存
17、在的問題。moodle的出現(xiàn)更新了教師的教育理念,教師任務(wù)由先前的教案設(shè)計轉(zhuǎn)變成課程設(shè)計,由課程內(nèi)容設(shè)計轉(zhuǎn)變成教學(xué)資源與活動的設(shè)計。2.3.2 功能強(qiáng)大moodle具備任何e-learning平臺具有的功能,如內(nèi)容管理、論壇、測驗、作業(yè)、聊天、選項表、日志、標(biāo)簽和調(diào)查等。此外,它還擁有諸如任務(wù)分配、聯(lián)系、對話、簽到、日歷和文件管理等功能。因為moodle采用模塊化的設(shè)計方法,所以很容易創(chuàng)建新的功能模塊。2.3.3 易于操作moodle的操作十分簡單,教師經(jīng)過短期培訓(xùn),就能掌握它的使用方法。moodle適合小學(xué)、中學(xué)、大學(xué)、成人教育以及企業(yè)培訓(xùn),每一位教師都可以輕松的在網(wǎng)上創(chuàng)建自己的課程。2.3
18、.4 模塊化的結(jié)構(gòu)設(shè)計正如moodle的名字一樣,它的系統(tǒng)結(jié)構(gòu)是模塊化的。這種結(jié)構(gòu)設(shè)計使得系統(tǒng)的靈活性格外突出,修改和擴(kuò)充十分方便,最能體現(xiàn)moodle這一特點的是課程開發(fā)過程中各種活動模塊的使用。moodle為教師提供了基于社會建構(gòu)主義教學(xué)設(shè)計理念的十幾種課程活動,包括討論區(qū)、學(xué)習(xí)日志、聊天室、學(xué)習(xí)資源、單元小結(jié)和在線調(diào)查等。教師通過簡單的設(shè)置就可以給課程加入這些活動模塊,管理員可以通過管理界面選擇安裝各種活動模塊,而開發(fā)者可以依據(jù)定義的接口開發(fā)新的活動模塊。正是這種模塊化的結(jié)構(gòu)設(shè)計使得moodle給使用者、管理員和開發(fā)者提供了極大的方便和選擇空間。目前,越來越多的模塊被添加進(jìn)去。2.3.5
19、 支持多種語言moodle專門配備了一個scorm 模塊,從moodle 1.2起,它可以導(dǎo)入ims qti數(shù)據(jù)流。此外,moodle還有一個webctims向moodle轉(zhuǎn)換的工具。2.3.6 開放源代碼moodle是一個開放源代碼的自由軟件。自由軟件精神源于對商業(yè)軟件人為制造技術(shù)壁壘的批判,有利于集成眾多開發(fā)者的智慧,開發(fā)出更加完美的軟件。教育事業(yè)的公益性和社會性與自由軟件的精神相得益彰, moodle社群中除了有開發(fā)者,還有大量的教師和學(xué)生,來自他們的反饋和建議是moodle茁壯成長的沃土,這是很多商業(yè)公司求之不得的寶貴財富,再加上自由軟件所共有的免費獲取、跨平臺支持及優(yōu)秀的國際特性,促
20、進(jìn)了moodle的迅速成長。3 moodle結(jié)構(gòu)分析3.1 moodle的系統(tǒng)架構(gòu)moodle平臺采用模塊化的結(jié)構(gòu)設(shè)計和面向?qū)ο蟮拈_發(fā)方法,從系統(tǒng)架構(gòu)上說,符合當(dāng)前流行的三層b/s結(jié)構(gòu),基本實現(xiàn)了數(shù)據(jù)訪問、業(yè)務(wù)邏輯和用戶界面的分離,具有較好的靈活性和可擴(kuò)展性。其系統(tǒng)結(jié)構(gòu)如圖3-1所示。圖3-1系統(tǒng)結(jié)構(gòu)圖從moodle的網(wǎng)絡(luò)課程結(jié)構(gòu)上看,整個系統(tǒng)由多個學(xué)科類別構(gòu)成。例如,計科系教學(xué)等。對應(yīng)的某一學(xué)科類別中可以包含多門不同的課程,例如,教育管理學(xué)科包括教育評價、學(xué)校管理、班級管理等課程。課程又由版塊、資源和活動三個模塊構(gòu)成,如圖3-2所示。圖3-2 moodle網(wǎng)絡(luò)課程系統(tǒng)結(jié)構(gòu)版塊模塊:包含htm
21、l、主菜單、人物(教師和學(xué)生)、即將發(fā)生的事件、顯示在線用戶、論壇搜索、日歷、最新新聞、活動目錄、消息(師生、生生一對一溝通)、登錄、課程管理、顯示課程、課程站點描述、rss種子、隨機(jī)詞條(詞匯表)、blog。 moodle中所有核心代碼和模塊代碼都是使用php腳本來編寫, 但是不排除和其他技術(shù)整合的可能性, 特別是在soa的構(gòu)架下, service是可以使用很多技術(shù)實現(xiàn)的, php在調(diào)用功能模塊時, 可以調(diào)用非php構(gòu)架的service, 當(dāng)然最終的html表現(xiàn)還是需要php來完成。3.2 moodle的課程活動模塊moodle平臺提供了各種各樣的課程活動模塊,教師可以根據(jù)教學(xué)需要選擇合適的
22、模塊,為教學(xué)活動創(chuàng)建互動式環(huán)境。以下是moodle提供的標(biāo)準(zhǔn)課程活動模塊。3.2.1 作業(yè)(assignment)模塊通過作業(yè)模塊,教師可以給學(xué)生布置一項任務(wù),學(xué)生可以將自己的工作成果(任何格式的文件)上傳到服務(wù)器上。典型的作業(yè)包括論文、項目和報告等。這一模塊使用起來具有很大的靈活性。3.2.2 選項(choice)模塊通過選項模塊,教師可以提出一個問題并給出多種不同答案供學(xué)生選擇。該模塊可以用于引導(dǎo)學(xué)生對某一話題進(jìn)行思考,調(diào)查學(xué)生對課程的態(tài)度等等。3.2.3 討論區(qū)(forum)模塊討論區(qū)模塊是最重要的課程活動模塊,交流和討論都在這里進(jìn)行。教師可以根據(jù)不同的教學(xué)目的選擇不同的討論區(qū)類型,還可
23、以設(shè)置不同的顯示格式以及對張貼的內(nèi)容進(jìn)行評分來作為評價的依據(jù)。通過訂閱討論區(qū),學(xué)生和教師可以通過電子郵件收到最新的張貼內(nèi)容。3.2.4 日志(journal)模塊日志模塊提供一種重要的反思活動。教師指定一個開放性的問題引導(dǎo)學(xué)生思考和寫作,學(xué)生可以在一定時間內(nèi)反復(fù)編輯和修改,每個學(xué)生所寫的內(nèi)容只有他本人和教師可以看到,教師可以給予反饋。3.2.5 資源(resource)模塊資源模塊給教師提供了呈現(xiàn)教學(xué)內(nèi)容和學(xué)習(xí)資源的途徑。教師上傳的文件、在moodle所提供的界面上直接編輯的內(nèi)容以及網(wǎng)址鏈接,都可以通過這個模塊呈現(xiàn)。3.2.6 測試(quiz)模塊測驗?zāi)K允許教師設(shè)計、編制測驗,包括選擇題、是
24、非題、匹配題和簡答題。題目分門別類儲存于題庫中,可以在課程中重復(fù)使用,還可以供其它課程使用。測驗可以多次作答,每次作答都是自動打分,教師可以選擇是否給予反饋信息或是否顯示正確答案。這個模塊包含了評分工具。3.2.7 調(diào)查(survey)模塊調(diào)查模塊提供了一些預(yù)設(shè)的調(diào)查問卷,這些問卷可以用來了解學(xué)生的意見、態(tài)度等。目前問卷包括colles和attls兩種,它們可以在課程開始前作為診斷摸底工具,在課程結(jié)束時作為評價工具。3.2.8 聊天室(chat)模塊聊天室模塊允許平順、實時的文字溝通。在聊天窗口中可顯示大頭照,支持urls、表情圖示、嵌入式的html、圖形等。所有的討論都會被記錄下來以備為日后
25、參考,而且學(xué)生也能看到。3.2.9 工作坊(workshop)模塊工作坊模塊允許學(xué)生之間對作業(yè)進(jìn)行評價,而且教師可以管理并加以評分。工作坊支持范圍相當(dāng)廣泛的評價量表,學(xué)生對作業(yè)評分時可由教師提供范本。3.3 moodle的主要功能moodle提供了覆蓋管理員、教師和學(xué)生需要的各種功能,主要功能如下:3.3.1 管理員功能管理員的主要任務(wù)是搭建支持網(wǎng)上學(xué)習(xí)的軟硬件環(huán)境、設(shè)置課程體系,并且確定哪些人可以在允許范圍內(nèi)使用該系統(tǒng)。管理員又可分為站點管理員和課程管理員。站點管理員主要負(fù)責(zé)修改系統(tǒng)配置,維護(hù)課程用戶信息,設(shè)置站點首頁、安裝和維護(hù)功能模塊等;課程管理員主要負(fù)責(zé)創(chuàng)建新課程,設(shè)置課程信息和任命教
26、師。管理員功能如圖3-3所示。圖3-3 管理員功能3.3.2 教師功能教師又分為主講教師和輔導(dǎo)教師。在指定教師時,如果不賦予教師編輯權(quán)限,該教師就是輔導(dǎo)教師。主講教師可以編輯課程的資源和組織教學(xué)活動;輔導(dǎo)教師具有管理成績、查看日志、查看學(xué)生活動報告、進(jìn)入教師討論區(qū)等權(quán)限,他的任務(wù)主要是解答學(xué)生的問題,進(jìn)行一些日常的教學(xué)管理,督促學(xué)生學(xué)習(xí),并不參與課程設(shè)計。教師功能如圖3-4所示。圖3-4 教師功能3.3.3 學(xué)生功能學(xué)生可以在線閱讀材料和參加學(xué)習(xí)活動,并將自己的學(xué)習(xí)歷程以及對課程學(xué)習(xí)的感悟記錄在自己的blog上。學(xué)生功能如圖3-5所示。圖3-5 學(xué)生功能3.4 模塊化構(gòu)架分析基于moodle下
27、要如何設(shè)計和開發(fā)展示平臺呢? 現(xiàn)在我們通過開發(fā)者的角度對其作一個分析。moodle整體采用按功能封裝的函數(shù)庫結(jié)合面向?qū)ο蟮姆椒▉順?gòu)建。 它是建立在php環(huán)境之上的, 由于php是一種解釋執(zhí)行的腳本程序語言, 所以在發(fā)布系統(tǒng)的時候我們幾乎可以看到所有的系統(tǒng)源代碼, 這為我們分析其結(jié)構(gòu)非常有幫助。 但是, 由于其系統(tǒng)的規(guī)模和長期開源模塊的積累,想要完全解析其系統(tǒng)構(gòu)架是非常困難的。3.5 moodle數(shù)據(jù)庫模型要進(jìn)行二次開發(fā), 對一個系統(tǒng)的數(shù)據(jù)庫模型的了解也是很必要的。moodle的數(shù)據(jù)庫模型經(jīng)過幾年的發(fā)展已經(jīng)很復(fù)雜, 為了減少這種復(fù)雜關(guān)系帶來的混亂, 它采用了這樣的命名方式。如: mdl_cour
28、se_categories, 其中mdl是所有系統(tǒng)表格的前綴, course代表屬于course的模塊,categroies代表課程分類表, 這樣既可以保證清晰的表述, 又可以避免不同模塊之間數(shù)據(jù)表格的重名。 由于模塊部分的數(shù)據(jù)模型會隨著系統(tǒng)模塊的增加而增加,所以當(dāng)你擴(kuò)展模塊的時候, 那部分?jǐn)?shù)據(jù)模型就可能會發(fā)生變化。在每次接觸到某個模塊的數(shù)據(jù)模型時, 必須分析到細(xì)節(jié), 比如在設(shè)計自己的模塊時, 如果需要進(jìn)行權(quán)限分配, 就需要研究用戶和角色的數(shù)據(jù)結(jié)構(gòu), 圖3-6是user和role模塊關(guān)系數(shù)據(jù)模型的簡化圖(各表的字段略)。圖3-6 moodle數(shù)據(jù)模型中user和role模塊數(shù)據(jù)模型簡化圖4 m
29、oodle的二次開發(fā)理論4.1 moodle二次開發(fā)的形式通過上章對moodle結(jié)構(gòu)的分析, 以及對moodle發(fā)社區(qū)的了解, moodle二次開發(fā)重點不是moodle的核心代碼和模塊進(jìn)行修改, 而是針對其外功能模塊的設(shè)計和開發(fā)以滿足特定的需求, 即圍moodle的核心代碼進(jìn)行的模塊開發(fā)。圖4-1描了moodle二次開發(fā)的形式、 內(nèi)容和適合的用戶。圖4-1 moodle二次開發(fā)形式從上表中可以看出, moodle的二次開發(fā)并不是程員的特權(quán), 任何人都可以參與到moodle的二次開發(fā)來。這也是開源軟件的一個特性, 在學(xué)習(xí)中開發(fā), 又開發(fā)中學(xué)習(xí)。moodle給我們帶來的不僅是一個網(wǎng)絡(luò)程平臺, 也給
30、我們帶來一種新的學(xué)習(xí)模式。4.2 moodle二次開發(fā)的準(zhǔn)備4.2.1 開發(fā)環(huán)境和工具要進(jìn)行moodle的二次開發(fā), 首先要建立開發(fā)環(huán)境, 最必要的當(dāng)然是構(gòu)建一個開發(fā)用的moodle平臺。注意不要在正式使用的平臺下進(jìn)行開發(fā), 必須經(jīng)過測試平臺嚴(yán)格測試后再上線。 moodle的平臺可以創(chuàng)建在windows下, 運行環(huán)境構(gòu)建好以后就可以進(jìn)行開發(fā)工具的選擇。因為php是解釋執(zhí)行的腳本語言, 它是不需要編譯的, 直接修改源文件就可以運行, 所以使用最簡單的文本編輯器就可以開發(fā)。如果使用能對php的語法和關(guān)鍵詞進(jìn)行錯誤提示的工具就更好了。如果要進(jìn)行模塊開發(fā)的話, 推薦使用這個工具eclipse。如果是要
31、進(jìn)行語言包開發(fā)或是主題開發(fā)的話, 那么簡單的文本編輯器如editplus, 以及網(wǎng)頁編輯器如frontpage和dreamweaver,就可以解決問題了。4.2.2 熟悉目錄結(jié)構(gòu)二次開發(fā)的第二個準(zhǔn)備工作就是熟悉moodle的目錄結(jié)構(gòu), 可以幫助你迅速的定位文件, 進(jìn)行修改。圖4-2羅列了moodle的主要目錄及文件。moodle在自定義后, 子目錄的結(jié)構(gòu)會有所不同, 上述根目錄的結(jié)構(gòu)對相同版本來說是固定的。圖4-2 moodle主要目錄和文件4.2.3 總體開發(fā)約定二次開發(fā)的第三個準(zhǔn)備工作就是熟悉moodle二次開發(fā)的約定。因為moodle是一個開源的軟件, 二次開發(fā)的目的除了要滿足自己的特定
32、需求以外還有一件更有意義的事情, 就是contribute, 讓別的用戶分享你的勞動成果。根據(jù)moodle社區(qū)的約定進(jìn)行二次開發(fā)才可以讓所有的用戶都方便地共享。moodle社區(qū)制定了 開 發(fā) 約 定,包括有coding guidelines、 interface guidelines等。特別是coding guidelines部分, 它約定了文件的名稱、 代碼編寫的風(fēng)格、 數(shù)據(jù)庫基本結(jié)構(gòu)和安全問題, 所有模塊的開發(fā)都應(yīng)該遵循這個約定。如果是進(jìn)行主題的開發(fā), 那么interface guidelines中約定了諸如界面風(fēng)格、css結(jié)構(gòu)、 頁面布局等問題。 按照約定進(jìn)行的二次開發(fā)模塊可以很方便地嵌
33、入到moodle系統(tǒng)中, 不需對核心代碼進(jìn)行修改。4.3 moodle二次開發(fā)指南4.3.1 通用規(guī)則1.所有代碼文件應(yīng)當(dāng)使用“.php”作為擴(kuò)展名。 2.所有模板文件應(yīng)當(dāng)使用“.html”作為擴(kuò)展名。 3.所有文本文件應(yīng)當(dāng)使用unix風(fēng)格的文本格式(多數(shù)的文本編輯器都有這個選項)。4.所有php標(biāo)記都必須是“完整”標(biāo)記,如 而非如 的短標(biāo)記。5.所有已經(jīng)存在的版權(quán)聲明應(yīng)當(dāng)被保留。如果有必要,您可以加入自己的。 6.每個文件都應(yīng)當(dāng)包含主config.php文件。 7.每個文件都應(yīng)當(dāng)檢查用戶的身份是否正確,可以使用函數(shù)require_login()和isadmin()、isteacher()、i
34、screator()或者isstudent()。 8.所有訪問數(shù)據(jù)庫的操作都應(yīng)當(dāng)使用lib/datalib.php中的函數(shù)這樣可以兼容更多的數(shù)據(jù)庫服務(wù)器。所有的事情都應(yīng)當(dāng)是可以用這些函數(shù)來完成的,如果遇到必須要寫sql代碼的情況,請記住這些代碼應(yīng)當(dāng)是跨平臺的,且僅僅對您代碼中的特定函數(shù)(通常在一個lib.php文件中)有效,且代碼中用注釋進(jìn)行明確說明。 9.不要建立和使用標(biāo)準(zhǔn)全局變量$cfg、$session、$theme、$site、$course和$user之外的全局變量。 10.所有變量都應(yīng)當(dāng)被初始化或者至少在使用前用isset()或empty()等函數(shù)進(jìn)行檢測。 11.所有字符串都應(yīng)當(dāng)
35、可翻譯在“l(fā)ang/en_utf8”目錄中創(chuàng)建新的文本文件,字符串應(yīng)當(dāng)使用簡潔的英文小寫名稱,并通過函數(shù)get_string()或print_string()來取得。為了保證語言包的向后兼容,絕對不要刪除字符串。 12.所有幫助文件應(yīng)當(dāng)可翻譯在“l(fā)ang/en_utf8/help”目錄中創(chuàng)建文本文件并且通過helpbutton()函數(shù)來調(diào)用它們。如果要更新幫助文件: 對于小的修改,舊的翻譯文件仍然可以繼續(xù)使用時,可以直接進(jìn)行修改,但您應(yīng)當(dāng)通知 translation at moodle dot org。 對于大的修改,應(yīng)當(dāng)創(chuàng)建新的文件,新文件的文件名是在原文件名的末尾添加一個數(shù)字,并在以后逐漸
36、增加(如filename2.html),這樣翻譯人員就可以方便地知道文件有了一個新的版本。很顯然,新的代碼和幫助索引文件都必須修改以指向新版本的文件。 13.從瀏覽器發(fā)來的信息(以get或post形式發(fā)送)都應(yīng)用了magic_quotes(無論php的設(shè)置如何),因此直接將它們插入到數(shù)據(jù)庫中是安全的。所有其它的原始數(shù)據(jù)(來自文件或數(shù)據(jù)庫的)都必須在插入數(shù)據(jù)庫前使用addslashes()進(jìn)行預(yù)處理。由于在這個問題上人們經(jīng)常出錯,我們編寫了一個獨立的頁面來介紹如何添加和刪除“”符號。 14.非常重要:moodle中所有的文本,特別是用戶提供的文本,都必須使用format_text()函數(shù)來輸出。
37、這樣就可以確保文本已經(jīng)正確地過濾。在輸出函數(shù)頁面上有關(guān)于這個問題的更多信息。. 15.用戶的動作應(yīng)當(dāng)用add_to_log()函數(shù)記錄下來,這些信息會被用于活動報告和日志。 4.3.2 編碼風(fēng)格1. 縮進(jìn)應(yīng)當(dāng)是4個連續(xù)的空格。絕對不要使用制表符。 2. 變量名應(yīng)當(dāng)是容易理解、有含義的小寫英文單詞。如果確實需要兩個或以上的單詞,請把它們連在一起,但要保持名稱盡可能短。對于數(shù)組對象,請使用復(fù)數(shù)名稱。 好的: $quiz 好的: $errorstring 好的: $assignments (for an array of objects) 好的: $i (but only in little loo
38、ps) 壞的: $quiz 壞的: $areallylongvariablenamewithoutagoodreason 壞的: $error_string3. 常量應(yīng)當(dāng)總是大寫的,并總是以模塊的名稱作為前綴。單詞之間應(yīng)當(dāng)用下劃線分隔。 define(forum_mode_flatoldest, 1);4. 函數(shù)名稱應(yīng)當(dāng)是簡單的英文小寫單詞,且總是以模塊名作為前綴以防止模塊之間的沖突。單詞之間以下劃線分隔。變量如果可能應(yīng)當(dāng)總有合理的缺省值。注意在函數(shù)名和其后的括號之間沒有空格。 function forum_set_display_mode($mode=0) global $user, $cf
39、g; if ($mode) $user-mode = $mode; else if (empty($user-mode) $user-mode = $cfg-forum_displaymode; 5. 語句塊必須總是使用大括號(即便是只有一行)。moodle使用如下風(fēng)格: if ($quiz-attempts) if ($numattempts $quiz-attempts) error($strtoomanyattempts, view.php?id=$cm-id); 6. 字符串應(yīng)當(dāng)盡可能用單引號定義以提高速度。 $var = some text without any variables
40、; $var = with special characters like a new line n; $var = a very, very long string with a .$single. variable in it; $var = some $text with $many variables $within it;7. 實用的注釋應(yīng)當(dāng)盡可能填寫,用以解釋代碼流程和函數(shù)與變量的功能。 每個函數(shù)和類都應(yīng)該使用流行的phpdoc格式編寫,以便自動生成代碼文檔。 內(nèi)嵌注釋應(yīng)使用 / 風(fēng)格,并且整齊布局,使其能融入代碼中并和代碼對齊。 /* * the description shou
41、ld be first, with asterisks laid out exactly * like this example. if you want to refer to a another function, * do it like this: link clean_param(). then, add descriptions * for each parameter as follows. * * param int $postid the php type is followed by the variable name * param array $scale the ph
42、p type is followed by the variable name * param array $ratings the php type is followed by the variable name * return mixed */ function forum_get_ratings_mean($postid, $scale, $ratings=null) if (!$ratings) $ratings = array(); / initialize the empty array if ($rates = get_records(forum_ratings, post,
43、 $postid) / process each rating in turn foreach ($rates as $rate) .etc8. 換行可以被大方地使用把東西分散開看起來會比較清楚。一般情況下,在花括號和普通命令之間應(yīng)當(dāng)有一個換行符,但在花括號和變量或函數(shù)之間可以沒有換行符: foreach ($objects as $key = $thing) process($thing); if ($x = $y) $a = $b; else if ($x = $z) $a = $c; else $a = $d; 9. 當(dāng)復(fù)制一個對象時,要使用php5的clone()函數(shù)(否則得到的就僅僅
44、是指向第一個對象的引用)。moodle會保證這種方法在php4上也能正常工作。 壞的: $b = $a; 好的: $b = clone($a);如果你要復(fù)制的并非對象,但包含了對象(如對象數(shù)組),那么要使用fullclone()函數(shù)。 4.3.3 數(shù)據(jù)庫結(jié)構(gòu)1.每個表格都必須有一個自增的id字段(int10)作為主鍵。2.包含著模塊中數(shù)據(jù)實例的主表格必須和模塊同名(譬如widget),并且至少包含如下字段: id - 如上一條所述 course - 每個實例所屬的課程id name - 每個實例的完整名稱 3.與模塊相關(guān)的其它表格的命名規(guī)則是:如果它包含的信息是關(guān)于“things”的,則它的名
45、字應(yīng)當(dāng)是widget_things(注意采用復(fù)數(shù)形式)。 4.表名和字段名都應(yīng)當(dāng)避免使用各種數(shù)據(jù)庫的保留字。因此在創(chuàng)建前要仔細(xì)檢查。 5.字段名稱應(yīng)當(dāng)簡短并使用小寫,與變量名的規(guī)則相同。 6.在可能的情況下,包含著對其它表格(如widget)引用的字段應(yīng)當(dāng)命名為widgetid。(注意這是個新約定,有一些老的表格并未遵守。) 7.布爾字段應(yīng)當(dāng)使用小整數(shù)類型(如int4)并存儲為0或1,這樣就可以在需要時擴(kuò)展它。 8.多數(shù)的表格應(yīng)當(dāng)有一個timemodified字段(int10),并用php的time()函數(shù)取得的當(dāng)前時間戳來更新它。 9.給每個字段定義一個缺省值(并保證它是有意義的)。 10.
46、每個表名都必須有前綴($cfg-prefix)。在大多數(shù)情況下,您必須自己注意此問題。并且在postgres中,所有的索引名也必須有前綴。 11.與某個版塊相關(guān)的表格命名時需要遵守以下規(guī)則:$cfg-prefix + block_ + name_of_the_block + anything_else。例如,$cfg-prefix是“mdl_”,則與“rss_client”版塊相關(guān)的表格,其名稱前綴應(yīng)當(dāng)是“mdl_block_rss_client”(在末尾添加多一些的詞不會帶來任何問題,如“mdl_block_rss_client_anothertable”)。在moodle 2.0中,這個規(guī)
47、則會100%地強(qiáng)制執(zhí)行,開發(fā)者需在此之前做好準(zhǔn)備。要了解詳情,請參考task 6786。 12.不要在穩(wěn)定的部分對數(shù)據(jù)庫進(jìn)行修改。如果修改的話,用戶從一個穩(wěn)定版本升級到另一個會帶來重復(fù)的修改。這將會帶來嚴(yán)重的錯誤。 13.在sql查詢中查詢整數(shù)變量時,不要給變量加引號。例如,get_records_select(question, category=$catid)是對的。get_records_select(question, category=$catid) 是錯的。這會隱藏變量$catid沒有定義的地方的錯誤。 4.3.4 安全問題1.不要依靠“register_globals”。每個變量
48、必須在每個源文件里正確初始化。變量的來源必須顯而易見。 2.初始化所有的數(shù)組和對象,即使它是空的。 $a = array() 或 $obj = new stdclass(); 。 3.不要使用optional_variable()函數(shù),使用optional_param()函數(shù)來替代它。根據(jù)數(shù)據(jù)類型選擇正確的param_xxxx值。 4.不要使用require_variable()函數(shù)(現(xiàn)在不推薦使用該函數(shù)),使用require_param()函數(shù)來替代它。根據(jù)數(shù)據(jù)類型選擇正確的param_xxxx值。 5.早使用data_submitted()時要小心,在使用數(shù)據(jù)前仍要對其進(jìn)行清理。 6.使用
49、$_get、$_post或$_request。根據(jù)您的需要使用更合適的required_param()或optional_param()。 7.檢查一個動作時,不要使用像if (isset($_getsomething) 這樣的代碼??梢允褂弥T如:$something = optional_param(something,-1,param_alpha),并且根據(jù)它取值的范圍來判斷,如 if ($something=0) . 8.在所有可能的情況下,把您所有的required_param()、optional_param()和其它的變量初始化一起放在每個文件的開頭,這樣它們會更容易被找到。 9.
50、使用“sesskey”機(jī)制保護(hù)表單處理函數(shù)不被攻擊。簡單示例:當(dāng)生成表單的時候,要包含 /。在處理表單時,使用 if (!confirm_sesskey() error(bad session key); 檢查。 10.所有文件名必須用clean_filename()函數(shù)“過濾”,但如果已經(jīng)適當(dāng)?shù)厥褂胷equired_param()或optional_param()做了此項工作,則不必如此。 11.再把任何從數(shù)據(jù)庫讀出的數(shù)據(jù)寫回之前,必須先用addslashes()處理。一個完整數(shù)據(jù)對象可以用addslashes_object()一次性完全處理完畢。 12.在任何可能的情況下,存入數(shù)據(jù)庫的數(shù)據(jù)
51、必須來自post據(jù)(也就是來自表單的數(shù)據(jù)),而不能來自get數(shù)據(jù)(也就是來自url的數(shù)據(jù))。 13.如果能避免的話,不要使用來自$_server的數(shù)據(jù)。它會給移植性帶來問題。 14.在其它地方?jīng)]有做的情況下,確保所有寫入數(shù)據(jù)庫的數(shù)據(jù)已經(jīng)用clean_param函數(shù)處理過,并且針對數(shù)據(jù)類型,使用了恰當(dāng)?shù)膒aram_xxxx。 15.如果您編寫了自定義的sql代碼,請確保它是正確的。尤其小心在數(shù)值周圍不要丟失引號,這可能會帶來sql“注入”漏洞。 16.每個文件內(nèi)都要檢查它使用的所有數(shù)據(jù)(尤其是寫到數(shù)據(jù)庫的數(shù)據(jù))的合法性。不要期盼或依賴其它地方已經(jīng)檢查了。 17.被其它文件包含的代碼塊應(yīng)當(dāng)有確切定
52、義的php結(jié)構(gòu)(例如類的聲明、函數(shù)定義等)直接執(zhí)行的代碼塊建議使用變量時不要初始化。5 課程展示平臺的設(shè)計與開發(fā)5.1 moodle平臺的安裝1. 系統(tǒng)要求:moodle是用php腳本語言編寫的動態(tài)網(wǎng)站程序,因此http服務(wù)器軟件apache或iis都要求安裝php(版本在4.1.0以上),數(shù)據(jù)庫服務(wù)軟件用mysql或postgresql,linux,windows xp,mac os x等操作系統(tǒng)都支持.2. 安裝http服務(wù)器:這里以windows xp下安裝apache,mysql和php為例來說明.下載easyphp安裝套件:easyphp1-6_setup.exe,就可一次性安裝好a
53、pache,mysql和php,非常方便. (1)首先確保你以前沒有在所需服務(wù)器上安裝過mysql和php,若有則應(yīng)卸載,特別要刪除f,my.ini,php4ts.dll和php.ini這四個文件. (2)雙擊easyphp1-6_setup.exe開始安裝easyphp,安裝過程的語言是法語,不過沒關(guān)系,按照默認(rèn)安裝即可,其中suivant為下一步,oui為是.最后選擇lancer easyphp(即運行easyphp),單擊terminer按鈕,出現(xiàn)一個說明網(wǎng)頁.至此安裝完成且apache,mysql 和 php開始運行,同時在屏幕時間顯示旁邊出現(xiàn)一個黑色的e. (3)為moodle配置數(shù)
54、據(jù)庫.在ie瀏覽器中打開http:/localhost/mysql/ (如果要求用戶名則輸入root,密碼為空);這時會出現(xiàn)數(shù)據(jù)庫管理頁面,輸入數(shù)據(jù)庫名為moodle,單擊create就可以創(chuàng)建一個新的數(shù)據(jù)庫.在language中選chinese simplified(zh-cn),會出現(xiàn)中文界面(如圖2).3. 安裝配置moodle (1)下載moodle最新版本,解壓后將文件拷貝到c:programfileseasyphpwww或c:program fileseasyphpwwwmoodle下,若是前者用http:/localhost/訪問moodle首頁,后者則用http:/localhost/moodle/訪問(本文使用后者).為了moodle更好地支持中文,需要下載最新的支持簡體中文的語言包zh_cn.zip,解壓后放在moodle/lang/下即可. (2)創(chuàng)建一個空文件夾(如c:moodledata)用來存放上傳到moodle的文件. (3)打開moodle所在文件夾,復(fù)制con
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中信息技術(shù)課堂教學(xué)方法的創(chuàng)新研究
- 2025光電車衣發(fā)電系統(tǒng)
- 中小學(xué)心理健康教育課程設(shè)計與實踐知到課后答案智慧樹章節(jié)測試答案2025年春浙江師范大學(xué)
- 三級人力資源管理師-三級人力資源管理師考試《理論知識》押題密卷6
- 三級人力資源管理師-《企業(yè)人力資源管理師(理論知識)》考前強(qiáng)化模擬卷6
- 山東省菏澤市東明縣第一中學(xué)2024-2025學(xué)年高二下學(xué)期開學(xué)地理試題
- 2018高考人教政治二輪鞏固練題(六)及解析
- 2018年普通高校招生全國統(tǒng)一考試仿真模擬(一)語文試題
- 甘肅省張掖市高臺縣一中2024-2025學(xué)年高三下學(xué)期第二次檢測語文試題(原卷版+解析版)
- 2025屆福建省漳州市高三下學(xué)期第三次檢測歷史試題 (原卷版+解析版)
- 廣告品印刷行業(yè)技術(shù)趨勢分析
- 2024至2030年中國角鯊?fù)椋ㄏ┬袠I(yè)運營格局及前景戰(zhàn)略分析報告
- 人工智能訓(xùn)練師理論知識考核要素細(xì)目表三級
- 2024年車輛牌照租賃協(xié)議常用版(三篇)
- 2 不一樣你我他 教學(xué)設(shè)計-2023-2024學(xué)年道德與法治三年級下冊統(tǒng)編版
- 護(hù)理美學(xué)-第一章 美學(xué)概述
- 四川省廣元市旺蒼縣 2023-2024學(xué)年八年級下學(xué)期7月期末道德與法治試題
- HY/T 0403-2024波浪滑翔器海上試驗規(guī)范
- 《財務(wù)管理學(xué)(第10版)》課件 第1、2章 總論、財務(wù)管理的價值觀念
- 江蘇2024年江蘇省新聞出版學(xué)校招聘人員筆試歷年典型考題及考點附答案解析
- 北師大版二年級下冊數(shù)學(xué)第二單元-方向與位置-測試卷必考
評論
0/150
提交評論