moodle/lang/de/docs/developer.html
2005-01-09 13:20:11 +00:00

350 lines
14 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Moodle Dokumentation: Entwicklerhandbuch</title>
<link rel="stylesheet" href="docstyles.css" type=
"TEXT/CSS">
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii">
</head>
<body bgcolor="#FFFFFF">
<h1>Entwicklerhandbuch</h1>
<p>Dieses Dokument beschreibt die Grundlagen des Designs von
Moodle und wie Sie daran mitwirken k&ouml;nnen.</p>
<p>Abschnitte dieses Dokuments:</p>
<ol>
<li><a href="#architecture">Moodle Architektur</a></li>
<li><a href="#contribute">Wie Sie mitarbeiten k&ouml;nnen</a>
<ul>
<li><a href="#activities">Lernmodule Aktivit&auml;ten)</a></li>
<li><a href="#themes">Themes</a></li>
<li><a href="#languages">Sprachen</a></li>
<li><a href="#database">Datenbankschema</a></li>
<li><a href="#courseformats">Kursformate</a></li>
<li><a href="#doc">Dokumentation und Artikel</a></li>
<li><a href="#bugs">Fehlerbeseitigung</a></li>
</ul>
</li>
</ol>
<br>
<p>Vorbemerkung: Dieser Text wird nicht weiter ins Deutsche
&uuml;bertragen. Die Entwicklung dieses Programms erfolgt in
einer internationalen Gemeinschaft. Die Umgangssprache in
Englisch. Wir gehen davon aus, dass alle an der Entwicklung
interessierten Personen in der Lage sind, den Originaltext zu
verstehen.</p>
<br>
<p> </p>
<h3><a name="architecture" id="architecture"></a>1. Moodle
architecture</h3>
<p>From a system administrator's perspective, Moodle has been
designed according to the following criteria:</p>
<ol>
<li><strong>Moodle should run on the widest variety of
platforms</strong><br>
<br>
The web application platform that runs on most platforms is PHP
combined with MySQL, and this is the environment that Moodle has
been developed in (on Linux, Windows, and Mac OS X). Moodle also
uses the ADOdb library for database abstraction, which means
Moodle can use <a href=
"http://php.weblogs.com/ADOdb_manual#drivers">more than ten
different brands of database</a> (unfortunately, though, it can
not yet <em><strong>set up tables</strong></em> in all these
databases - more on this later).<br>
<br></li>
<li><strong>Moodle should be easy to install, learn and
modify</strong><br>
<br>
Early prototypes of Moodle (1999) were built using <a target=
"_top" href="http://www.zope.org/">Zope</a> - an advanced
object-oriented web application server. Unfortunately I found
that although the technology was pretty cool, it had a very steep
learning curve and was not very flexible in terms of system
administration. The PHP scripting language, on the other hand, is
very easy to get into (especially if you've done any programming
using any other scripting language). Early on I made the decision
to avoid using a class-oriented design - again, to keep it simple
to understand for novices. Code reuse is instead achieved by
libraries of clearly-named functions and consistent layout of
script files. PHP is also easy to install (binaries are available
for every platform) and is widely available to the point that
most web hosting services provide it as standard.<br>
<br></li>
<li><strong>It should be easy to upgrade from one version to the
next</strong><br>
<br>
Moodle knows what version it is (as well as the versions of all
plug-in modules) and a mechanism has been built-in so that Moodle
can properly upgrade itself to new versions (for example it can
rename database tables or add new fields). If using CVS in Unix
for example, one can just do a "cvs update -d" and then visit the
site home page to complete an upgrade.<br>
<br></li>
<li><strong>It should be modular to allow for growth</strong><br>
<br>
Moodle has a number of features that are modular, including
themes, activities, interface languages, database schemas and
course formats. This allows anyone to add features to the main
codebase or to even distribute them separately. More on this
below in the next section.<br>
<br></li>
<li><strong>It should be able to be used in conjunction with
other systems</strong><br>
<br>
One thing Moodle does is keep all files for one course within a
single, normal directory on the server. This would allow a system
administrator to provide seamless forms of file-level access for
each teacher, such as Appletalk, SMB, NFS, FTP, WebDAV and so on.
The authentication modules allow Moodle to use LDAP, IMAP, POP3,
NNTP and other databases as sources for user information.
Otherwise, there is work yet to do. Features planned for Moodle
in future versions include: import and export of Moodle data
using XML-based formats (including IMS and SCORM); and increased
use of style sheets for interface formatting (so that it can be
integrated visually into other web sites).</li>
</ol>
<p> </p>
<h3><a name="contribute" id="contribute"></a>2. How you can
contribute</h3>
<p>As mentioned above, Moodle has a number of features that are
modular. Even if you are not a programmer there are things you
can change or help with.</p>
<p><strong><a name="activities" id="activities"></a>Learning
Activities</strong></p>
<blockquote>
<p>These are by far the most important modules, and reside in the
'mod' directory. There are seven default modules: assignment,
choice, forum, journal, quiz, resource, and survey. Each module
is in a separate subdirectory and consists of the following
mandatory elements (plus extra scripts unique to each
module):</p>
<ul>
<li>mod.html: a form to set up or update an instance of this
module</li>
<li>version.php: defines some meta-info and provides upgrading
code</li>
<li>icon.gif: a 16x16 icon for the module</li>
<li>db/: SQL dumps of all the required db tables and data (for
each database type)</li>
<li>index.php: a page to list all instances in a course</li>
<li>view.php: a page to view a particular instance</li>
<li>lib.php: any/all functions defined by the module should be in
here. If the modulename if called widget, then the required
functions include:
<ul>
<li>widget_add_instance() - code to add a new instance of
widget</li>
<li>widget_update_instance() - code to update an existing
instance</li>
<li>widget_delete_instance() - code to delete an instance</li>
<li>widget_user_outline() - given an instance, return a summary
of a user's contribution</li>
<li>widget_user_complete() - given an instance, print details of
a user's contribution<br></li>
<li>To avoid possible conflict, any module functions should be
named starting with widget_ and any constants you define should
start with WIDGET_</li>
</ul>
</li>
<li>Lastly, each module will have some language files that
contain strings for that module. See below.</li>
</ul>
<p>The easiest way to start a new learning activity module is to
use the template in <strong><a href=
"http://moodle.com/mod/newmodule_template.zip">mod/newmodule_template.zip</a>.</strong>
Unzip it and follow the README inside.</p>
<p>You might also like to post first in the <a href=
"http://moodle.com/mod/forum/view.php?id=44" target=
"_top">Activities modules forum on Using Moodle</a>.</p>
<p> </p>
</blockquote>
<p><strong><a name="themes" id="themes"></a>Themes</strong></p>
<blockquote>
<p>Themes (or skins) define the look of a site. A number of
simple themes are provided in the main distribution, but you may
want to create your own theme with your own colours, logo, styles
and graphics.</p>
<p>Each theme is in a subdirectory of the "theme" directory, and
contains at least the following files:</p>
<ul>
<li><strong>config.php</strong>: defines the theme colours used
throughout the site</li>
<li><strong>styles.php</strong>: the style sheet, containing CSS
definitions for standard HTML elements as well as many Moodle
elements.</li>
<li><strong>header.html</strong>: Included at the top of each
page. This is what you need to edit to add a logo at the top of
pages, for example.</li>
<li><strong>footer.html</strong>: Included at the bottom of each
page.</li>
</ul>
<p>To create your own themes for current versions of Moodle:</p>
<ol>
<li>Copy one of the existing theme folders to one with a new
name. I recommend starting with one of the standard themes.</li>
<li>Edit config.php and insert your own colours.</li>
<li>Edit styles.php and change your CSS styles.</li>
<li>Edit header.html and footer.html to add new logos, or change
the layout.</li>
</ol>
<p>Note that all these steps are optional - you can make a
radically different look to your site simply by editing the
colours in config.php</p>
<p>Note also that Moodle upgrades <em>may</em> break themes
slightly, so check the release notes carefully if you are using a
custom theme.</p>
<p>In particular, Moodle 2.0 will have a completely new display
system, probably based on XSL transformations of XML output from
Moodle. It is likely that the themes for this will be a
completely different format, but the advantage will be a much
higher possible degree of customisation (including moving
elements around the page).</p>
<p>More discussion about this in the <a target="_top" href=
"http://moodle.com/mod/forum/view.php?id=46">Themes forum on
Using Moodle</a>. If you create a nice theme that you think
others might want to use, please post your zip file on the themes
forum!<br></p>
</blockquote>
<p> </p>
<p><strong><a name="languages" id=
"languages"></a>Languages</strong></p>
<blockquote>
<p>Moodle has been designed for internationalisation. Each
'string' or 'page' of text that is displayed as part of the
interface is drawn from a set of language files. Each language is
a subdirectory of the directory 'lang'. The structure of the lang
directory is as follows:</p>
<p><strong>lang/en</strong> - directory containing all files for
one language (eg English)</p>
<ul>
<li>moodle.php - strings for main interface</li>
<li>assignment.php - strings for assignment module</li>
<li>choice.php - strings for choice module</li>
<li>forum.php - strings for forum module</li>
<li>journal.php - strings for journal module</li>
<li>quiz.php - strings for quiz module</li>
<li>resource.php - strings for resource module</li>
<li>survey.php - strings for survey module</li>
<li>.... plus other modules if any.<br>
<br>
A string is called from these files using the
<strong><em>get_string()</em></strong> or
<em><strong>print_string()</strong></em> functions. Each string
supports variable substitution, to support variable ordering in
different languages.<em><br>
<br></em> eg $strdueby = get_string("assignmentdueby",
"assignment", userdate($date));<br>
<br>
If a string doesn't exist in a particular language, then the
equivalent in English will automatically be used instead.</li>
</ul>
<p><strong>lang/en/help</strong> - contains whole help pages (for
popup context-sensitive help)</p>
<blockquote>
<p>Main help pages are situated here, while help pages specific
to each module are located in subdirectories with the module's
name.</p>
<p>You can insert a helpbutton in a page with the helpbutton
function.</p>
<p>eg helpbutton("text", "Click here for help about text");</p>
<p>and for modules:</p>
<p>helpbutton("forumtypes", "Forum types", "forum");</p>
</blockquote>
<p>Note that you can edit languages online, using the
administration web tools under "Check this language". This makes
it easy to not to only create new languages but to refine
existing ones. If you are starting a new language, please contact
me, <a target="_top" href="http://dougiamas.com/">Martin
Dougiamas</a>.</p>
<p>You might also like to post in the <a href=
"http://moodle.com/mod/forum/view.php?id=43" target=
"_top">Languages forum on Using Moodle</a>.</p>
<p>If you are maintaining a language an ongoing basis, I can give
you <a href="?file=cvs.html">CVS write access to the Moodle
source code</a> so that you can directly maintain the files.</p>
</blockquote>
<p><br>
<strong><a name="database" id="database"></a>Database
Schemas</strong></p>
<blockquote>
<p>Given a working database with defined tables, the
intentionally simple SQL used in Moodle should work fine with a
wide variety of database brands.</p>
<p>A problem exists with <strong>automatically creating</strong>
new tables in a database, which is what Moodle tries to do upon
initial installation. Because every database is very different,
there doesn't yet exist any way to do this in a
platform-independent way. To support this automation in each
database, schemas can be created that list the required SQL to
create Moodle tables in a particular database. These are files in
<strong>lib/db</strong> and inside the <strong>db</strong>
subdirectory of each module.</p>
<p>Currently, only MySQL and PostgreSQL are fully supported in
this way. If you are familiar with another database (especially
open source databases) and are willing to help port the existing
schema, please get in contact with me (<a target="_top" href=
"http://dougiamas.com/">Martin Dougiamas</a>).</p>
</blockquote>
<p> </p>
<p><strong><a name="courseformats" id="courseformats"></a>Course
Formats</strong></p>
<blockquote>
<p>Moodle currently supports three different course formats:
weekly, topics and social.</p>
<p>These are a little more connected to the rest of the code (and
hence, less "pluggable") but it is still quite easy to add new
ones.</p>
<p>If you have any ideas for different formats that you need or
would like to see, get in touch with me and I'll do my absolute
best to have them available in future releases.</p>
</blockquote>
<p> </p>
<p><strong><a name="doc" id="doc"></a>Documentation and
articles</strong></p>
<blockquote>
<p>If you feel like writing a tutorial, an article, an academic
paper or anything else about Moodle, please do!</p>
<p>Put it on the web and make sure you include links to
<a target="_top" href=
"http://moodle.com/">http://moodle.com/</a></p>
</blockquote>
<p> </p>
<p><strong><a name="bugs" id="bugs"></a>Participating in the bug
tracker</strong></p>
<blockquote>
<p>Finally, I would like to invite you to register on the "bug
tracker" at <a target="_top" href=
"http://bugs.moodle.org">bugs.moodle.org</a> so you can file any
bugs that you find and perhaps participate in discussing and
fixing them.</p>
<p>"Bugs" not only includes software bugs with current versions
of Moodle, but also new ideas, feature requests and even
constructive criticism of existing features. The beauty of open
source is that anyone can participate in some way and help to
create a better product for all of us to enjoy. In this project,
your input is very welcome!</p>
</blockquote>
<p> </p>
<blockquote>
<blockquote>
<blockquote>
<p align="center">Thanks for using Moodle!</p>
<p align="center">Cheers,<br>
<a href="http://dougiamas.com/" target="_top">Martin
Dougiamas</a></p>
</blockquote>
</blockquote>
</blockquote>
<p> </p>
<p> </p>
<blockquote>
<p> </p>
</blockquote>
<p align="center"><a href="." target="_top"><font size="1">Moodle
Documentation</font></a></p>
<p align="center"><font size="1">Version: $Id: developer.html,v
1.2 2001/12/09 10:34:19 martin Exp $</font></p>
</body>
</html>