Compare commits

..

528 Commits

Author SHA1 Message Date
moodler 5946a43ee9 TIME TO CUT THE CORD, GENTLEMEN. THIS IS 1.0.6. 2002-10-26 05:26:06 +00:00
moodler cb62c00ad2 Fixed minor bug after creating default category. 2002-10-26 05:17:53 +00:00
moodler 960a79887b Updated version numbers in preparation for 1.0.6 release 2002-10-26 04:37:56 +00:00
moodler 67f0b4ccb0 Better formatting for the link 2002-10-26 03:37:06 +00:00
moodler a8afb411a0 OK, this should be better ... 2002-10-26 03:33:07 +00:00
moodler c585fa1707 A first try at a new shortening algorithm ... checking in to do some
tests on various servers
2002-10-26 03:21:41 +00:00
moodler 211ee674b3 Changed type of quiz_answers.feedback to TEXT (255 chars was a bit cramped) 2002-10-26 03:13:54 +00:00
moodler 0ee8d9203e Added some commented-out code that MIGHT help people with string slash problems. 2002-10-26 02:31:49 +00:00
moodler 2138dcf29d Added quiz max grade in column title, for reference 2002-10-25 15:34:05 +00:00
moodler 153cc356cb Added TARGET=_blank to links in HTML email ... apparently these links
were causing problems in Hotmail.  Normally I'd say "Good!", but ...  :-)
2002-10-25 15:27:12 +00:00
moodler 86c5e69a36 Remove "news" and "social" forums from learning forums. 2002-10-25 14:46:42 +00:00
moodler 690b1941fc About time 2002-10-25 09:14:16 +00:00
moodler e6874d9ff6 Brand-new news and social forums are now also assigned course modules and
put in section 0 of the course.
2002-10-25 09:10:40 +00:00
moodler 95e143f4cc Ugh type in string module name 2002-10-25 08:54:29 +00:00
moodler 7beb45d8a0 Upgrading all news and social forums (except those in social courses)
so that they are course modules in an (invisible) section, which means
they are now editable and parameters, names etc can be changed.
2002-10-25 08:47:53 +00:00
moodler bd823371c9 Making it clear not to overwrite old files 2002-10-25 08:42:06 +00:00
moodler e11c24bc0e Added translation for Attempt quiz now 2002-10-25 08:15:03 +00:00
moodler 256d0b7b47 Slight change to configlocale ... added examples 2002-10-25 08:01:48 +00:00
moodler 6c506ca744 Disallow people posting in forums where they arent allowed to post! 8-. 2002-10-25 07:22:59 +00:00
moodler 87a2fa0338 Tweaks 2002-10-25 07:17:23 +00:00
moodler f690562f81 Tweaks to mail formats so that unnecessary information (replies, etc)
is not printed.
2002-10-25 06:50:40 +00:00
moodler 3260de6780 Tweaks to forum formatting 2002-10-25 05:58:39 +00:00
compuproggy 4a91f52161 *** empty log message *** 2002-10-25 05:46:33 +00:00
moodler 1ea355a851 Latest updates from Fabricio 2002-10-25 03:20:59 +00:00
moodler ed4ed0939b Weekdays are now calculated using userdate, so that
- they are relative to the user
  - they should take advantage of locales etc
2002-10-25 02:11:58 +00:00
moodler 2be8b28f3d Changes to improve usability when the admin folder has been renamed,
and also a change in checking for the admin user, just in case an
old session is hanging around
2002-10-25 02:02:02 +00:00
moodler 255f2cc06e All the variables were missing! 2002-10-24 13:41:52 +00:00
moodler 4313922f65 Fix for category box display on IE 2002-10-24 12:49:53 +00:00
moodler e7b7951c0a The BR in print_post was to fix the case when embedded images are used.
However it added too much space.  I'll find a way to fix the embedded
images problem later, during the styles changeover, as it's pretty
rare.
2002-10-24 07:09:29 +00:00
moodler 23877f9407 never upgraded choice tables to six choices! 2002-10-24 03:43:37 +00:00
moodler 6673b085a9 Updated with some new features 2002-10-24 03:11:57 +00:00
moodler 3d27c2c201 Added a new debugging command so that I can see the config variables 2002-10-24 02:42:26 +00:00
moodler f6b502d246 more readable 2002-10-23 14:38:24 +00:00
moodler eb8eb6abc5 Rearranged to alphabetical order 2002-10-23 14:33:23 +00:00
moodler cef08a3a99 Forgot to mention the new LDAP functions! My deep apologies, Petri,
1.0.5 was too long ago - I forgot your plug-in was developed since then!
2002-10-23 14:30:38 +00:00
moodler e870c78bfc WHoops ... just undoing the last checkin which was premature ... 2002-10-23 12:13:47 +00:00
moodler 72c578ca4d Mail now contains Moodle version 2002-10-23 12:12:01 +00:00
moodler cc3b8c75de After saving new question, sanity checks are made to make sure the
fractional grades are correct.

Icons now have tooltips and are also a shortcut to editing page.
2002-10-23 12:10:38 +00:00
compuproggy cbb8979fa9 *** empty log message *** 2002-10-23 07:27:02 +00:00
moodler e7311a0a56 Changed name of upgrade_moodle function to main_upgrade (for consistency) 2002-10-23 04:10:10 +00:00
moodler 3bd87406ba Latest version of Italian from Davide Suraci. 2002-10-23 02:00:16 +00:00
moodler e4814d7f63 cvs update -dP
not

cvs update -d
2002-10-22 13:17:04 +00:00
compuproggy 6fad164f96 *** empty log message *** 2002-10-22 12:36:02 +00:00
moodler f6f0e53de0 Updated information for 1.0.6 Beta 1 2002-10-22 11:21:54 +00:00
moodler ffc5a2c03a More concise feedback on grading, and more efficiency (only update
attempt grades that have changed)
2002-10-22 10:56:48 +00:00
moodler cd63d77e08 Added help pages to quiz module.
A few little cleanups, such as trim() on shortanswers
2002-10-22 10:38:00 +00:00
moodler 377f3c9ee4 new function print_heading_with_help() to print a heading with a helpbutton 2002-10-22 09:54:36 +00:00
moodler f31edeeb88 Display tweaks to table of attempts 2002-10-22 07:03:36 +00:00
moodler e331eb06fd Teacher can now regrade (recalculate grades) of all quiz attempts
(in case the quiz changed somehow)
2002-10-22 06:52:23 +00:00
compuproggy 5ecb135644 *** empty log message *** 2002-10-22 05:37:42 +00:00
moodler 6d86b5dc16 Teacher can now view student attempts 2002-10-22 04:25:58 +00:00
moodler ff99ff634e German should be Deutsche 2002-10-22 02:48:05 +00:00
moodler ede685a73e Fixed name/date variables (don't translate variables!) 2002-10-22 02:34:41 +00:00
moodler 66197f51cc Removed unnecessary mentions of sel@ction 2002-10-22 02:30:36 +00:00
moodler e1c91df09b Can now delete questions. It checks that the question doesn't belong to
any quizzes first (if it's in a published category then it checks all quizzes
on the server).
2002-10-21 15:00:51 +00:00
moodler 34a4dfee10 Added log_display entries for quiz 2002-10-21 14:57:34 +00:00
moodler 2383cadbab Display tweaks 2002-10-21 13:13:33 +00:00
moodler 38f03e5a5c Round $bestgrade when storing it to avoid insert_record problems 2002-10-21 13:02:14 +00:00
moodler 20a3006529 Print intro as HTML 2002-10-21 12:49:28 +00:00
moodler 466a69bc42 Bugfix on calculating correct answers for multichoice questions 2002-10-21 12:48:13 +00:00
moodler e909c8d090 Some error checking 2002-10-21 12:39:46 +00:00
moodler 305ce2b33c Convert intro text to HTML 2002-10-21 11:41:36 +00:00
moodler 840aaba179 Added some more allowed HTML tags 2002-10-21 09:16:06 +00:00
moodler 2a3cda192e Allow teachers to look at ratings for anyone 2002-10-21 08:44:56 +00:00
moodler f166d2e295 Fixed up rating retrieval ... now gets them all seperate 2002-10-21 08:36:15 +00:00
moodler 36df40d60e Fix in forum_grades 2002-10-21 08:32:37 +00:00
moodler 4db9d14dad Don't show column grade when there's nothing to show 2002-10-21 08:19:15 +00:00
moodler caadf00909 Rearranged functions to match other modules, and added forum_grades() 2002-10-21 08:10:24 +00:00
compuproggy fa452aa6f0 *** empty log message *** 2002-10-21 08:06:42 +00:00
compuproggy 15657235ef *** empty log message *** 2002-10-21 08:02:03 +00:00
compuproggy 2ad604fe3c *** empty log message *** 2002-10-21 07:58:18 +00:00
compuproggy 8e44daa729 *** empty log message *** 2002-10-21 07:45:48 +00:00
moodler 912c058651 Grades are not always numbers, so take care in XLS writing 2002-10-21 06:55:01 +00:00
moodler be025399d8 Table header aligns to top 2002-10-21 06:51:56 +00:00
moodler 629e937352 Added journal_grades() so journals show up in the Grades page 2002-10-21 06:42:58 +00:00
moodler 09a4ce320c Changes to toolbar to position color pickers better, and
reintroduce the "select all" button.  Unfortnately, I had
to remove the "About richtext" button to make room
2002-10-21 05:42:37 +00:00
moodler 4168490e17 Added paragraphs to allowed HTML tags 2002-10-21 04:12:54 +00:00
moodler 7bcb78cee3 Modified language so that it speaks to students as well as teachers 2002-10-21 03:23:45 +00:00
moodler 51cc244d12 Added quizzes 2002-10-21 03:04:05 +00:00
moodler e5dfd0f31f Improvements to help, and addition of new "Activity modules" help
for teachers adding new modules.
2002-10-21 03:00:40 +00:00
moodler 2ee53d15ff Some more clues for new admins ... 2002-10-20 18:06:04 +00:00
compuproggy f38aa1ef23 *** empty log message *** 2002-10-20 18:02:40 +00:00
moodler f1edd1922f Updated versions 2002-10-20 17:50:20 +00:00
moodler 3bf89042f5 Whoops, forgot to check in these new icons 2002-10-20 17:42:28 +00:00
moodler b55a466b60 Fixes for display of public categories 2002-10-20 17:41:24 +00:00
moodler c74a0ca5c2 Category editing in quizzes is now supported. Some other little
cleanups along the way ...
2002-10-20 17:15:39 +00:00
moodler f9a9499a62 Guests can no longer see or attempt quizzes 2002-10-20 10:13:04 +00:00
moodler 60f49825a5 New and fixed strings 2002-10-20 10:12:36 +00:00
moodler 16c0beb00b Strip slashes from print_simple_box (just in case) 2002-10-20 10:12:12 +00:00
moodler 4b9b2f0fe4 Fixed display of "done" assignments 2002-10-20 05:35:48 +00:00
moodler 8db3eaddb2 Now shows correct answers, plus some small bug fixes 2002-10-20 05:35:25 +00:00
moodler c1d5710174 Cleaned up format a little, plus added better error checking of server
variables so that at least people will get feedback if they are missing
2002-10-19 04:58:14 +00:00
compuproggy 9b21d119c0 *** empty log message *** 2002-10-18 19:19:35 +00:00
compuproggy 7b1593f040 *** empty log message *** 2002-10-18 17:20:10 +00:00
moodler 7e67441553 Added stuff about the text editing 2002-10-18 17:17:32 +00:00
moodler 0be05df068 Find URLs at the beginning of lines ... 2002-10-18 17:05:17 +00:00
moodler 958aafe2b4 Quiz attempts are now timed. This is done by starting the quiz_attempts
record upon showing the quiz, and completing it upon submit.

Two new fields in quiz_attempts... should be upgrade friendly.
(Old attempts will show up as being of duration zero)


Also some small fixes here and there.
2002-10-18 16:05:21 +00:00
moodler 9f7fd360dd Some tidy ups 2002-10-18 16:02:12 +00:00
moodler aef47af493 Added RTE etc 2002-10-18 16:01:35 +00:00
moodler 291febf79c Improved the documentation (it has some live feedback on the state
of the Richtext functionality)
2002-10-18 11:27:14 +00:00
moodler 18a322490d Cleanup 2002-10-18 09:40:35 +00:00
moodler cf094bd4b4 Better help with text formats 2002-10-18 09:38:58 +00:00
moodler 02a72a36f1 Improved the help page 2002-10-18 09:35:20 +00:00
moodler 2166bb5d7a Language changes and help documentation additions to clearer explain richtext, html and moodle auto-format 2002-10-18 09:29:44 +00:00
moodler d2e186ed71 Revised string for formattext to make more sense 2002-10-18 09:09:54 +00:00
moodler 3fe3851d57 OK, I've rationalised the text formatting now. Basically, both Moodle and
HTML text allow the same range of HTML tags (so it doesn't matter is you
switch from one to the other).

<IMG> and <A> are now ALLOWED in Moodle text.  However, the clean_text
function now checks for and removes any embedded javascript triggers
to avoid cross-site scripting attacks that way.

clean_text() should be called on ANY text that comes in from students.
2002-10-18 09:09:19 +00:00
moodler a0bac19d81 Whoops ... typo. 2002-10-18 09:00:09 +00:00
moodler 57243ffe02 Also set default language on new user created by external authentication 2002-10-18 08:52:33 +00:00
moodler 177e50ed98 New users created by admin also now default to site language 2002-10-18 08:48:44 +00:00
moodler 369622db97 Default language for users is now the same as the site language. 2002-10-18 08:46:12 +00:00
moodler 08beb3327b Allow <IMG> tags in Moodle format text. Not having it can really mess
up smileys etc if the text has been edited at any stage using the
richtext editor.

I realise it's possible for students to really mess up forums display
etc if they wanted to include a huge picture ... I'm not sure if there
are any cross-site scripting attacks possible with images in there.

But there is also now the HTML format for most things, which is editable
using an ordinary form, so this problem is currently already exposed.

I think it's OK as long as can find a filter to strip all javascript
out of ANY format text in Moodle.
2002-10-18 06:05:56 +00:00
moodler e757af1662 Fixed the setting of answers for true-false questions 2002-10-18 05:41:24 +00:00
moodler f9ef3d77d1 Just some better formatting and info 2002-10-18 00:18:26 +00:00
moodler 11a3c89a8f Made transparent 2002-10-17 23:49:02 +00:00
moodler b0e999e646 Changes related to new module 'resource' 2002-10-17 15:32:52 +00:00
moodler 92674bf8bb Changes due to new module 'resource' 2002-10-17 15:14:54 +00:00
moodler 3a5a667386 Changes due to new resource module 2002-10-17 15:10:59 +00:00
moodler 242ee0175f Resulting from module name change 2002-10-17 15:07:22 +00:00
moodler 6c3e8758c6 Changed reading.php to resource.php 2002-10-17 15:03:20 +00:00
moodler 3d58a8b50b Moved from reading module 2002-10-17 14:32:55 +00:00
moodler 4282d7dde2 Changed string neverread to neverseen 2002-10-17 14:28:12 +00:00
moodler 2a439ba7f6 ***NOTE NOTE NOTE **********************************************************
THIS IS A BIG CHANGE!

I've renamed the "reading" module to "resource".

This meant changing quite a few references throughout Moodle.

The automatic upgrade process should work OK (it worked OK on my
development server) and there shouldn't be any problems.

BUT PLEASE PROCEED WITH CAUTION AND KEEP BACKUPS OF EVERYTHING
UNTIL I HAVE A FEW MORE TESTS!   If you upgrade please let me know.

One thing that will break are any hard-coded links within forum messages.

What I will be doing to fix this on my apache server is to add this to
httpd.conf:

Redirect /mod/reading/ http://moodle.com/mod/resource/

Sorry about any inconvenience, but it's better this is done sooner than later.
2002-10-17 14:03:59 +00:00
moodler e1ac42728d Added a 'change password' button 2002-10-17 12:25:25 +00:00
moodler 269eed6448 Changed headers so that it works seamlessly when called from user page. 2002-10-17 12:21:55 +00:00
moodler 952489e16c The grades page now supports downloading of grade data! :-) 2002-10-17 10:34:11 +00:00
moodler 417e6821bd Removed some blank lines that were causing output 2002-10-17 10:33:13 +00:00
moodler 6e770b179c Grr added transparency back again ... 2002-10-17 08:32:29 +00:00
moodler da19305885 Re-adding to overcome CVS strangeness (and my own indecision!) 2002-10-17 08:30:41 +00:00
moodler 9809249838 Better grade reports 2002-10-17 08:28:18 +00:00
moodler e34d323730 Some new strings 2002-10-17 07:58:50 +00:00
moodler 858deff0b4 Now includes maximum grades 2002-10-17 07:55:54 +00:00
moodler d0ac6bc236 Added new grading functions to work with course/grades.php 2002-10-17 07:23:51 +00:00
moodler 3486b7bee5 Added a new grading tool for teachers to see all grades on one page.
Grades are collected from each module using the module_grades function in
each mod/*/lib.php.
2002-10-17 07:23:12 +00:00
moodler 19c4f55c43 Feedback fixes 2002-10-16 15:52:29 +00:00
moodler 5f652ac38e Alt text on moodle logo 2002-10-16 15:48:22 +00:00
compuproggy c5e900c8aa *** empty log message *** 2002-10-16 10:42:35 +00:00
compuproggy 90892fd130 *** empty log message *** 2002-10-16 10:24:09 +00:00
moodler a8a372ccf7 Various fixes and additions. It now does quiz feedback pretty well
(though it doesn't show correct answers yet).
2002-10-16 09:35:04 +00:00
compuproggy 735715779b *** empty log message *** 2002-10-16 09:31:14 +00:00
compuproggy d6aa0e227e *** empty log message *** 2002-10-16 08:48:11 +00:00
moodler 18de986eb1 Actually, let's include journals that have no feedback yet as well. 2002-10-16 07:18:07 +00:00
moodler 8bff8ad835 When a teacher is giving feedback, entries that have been modified since
the last time a teacher has given feedback are highlighted.
2002-10-16 07:15:36 +00:00
moodler b425749fc3 Teacher can now use the richtext editor to edit the assignment text 2002-10-16 05:31:56 +00:00
moodler 7ce20f09cb Changes related to module editing buttons 2002-10-16 04:53:44 +00:00
moodler df2898fe3b Don't show htmleditor preference if it's disabled by admin 2002-10-16 04:52:57 +00:00
moodler 09aebc9468 Cleaned up some buttons ... 2002-10-16 04:51:55 +00:00
moodler 92a3c884f5 Small bugfixes ... (yawn) 2002-10-15 17:32:50 +00:00
moodler 7520988bb3 Fixes for grades 2002-10-15 17:13:11 +00:00
moodler 0a7994a0ba Just updated the number 2002-10-15 16:49:32 +00:00
moodler ab9d6d1e0e Some additions 2002-10-15 16:48:44 +00:00
moodler 55c2620784 Got rid of the wimpy icons in the top-right corner of pages and put some
manly buttons there.  ;-)   I think this will be much clearer for novices,
as well as being a bigger target for experts!
2002-10-15 16:47:43 +00:00
moodler 6b069ecef1 Bit of a clean up of the edit interface ... 2002-10-15 16:45:39 +00:00
moodler 49dcdd1800 Added timeopen and timeclose (instead of days) and did a few cleanups 2002-10-15 16:22:18 +00:00
moodler d197118510 Admin script to brutally delete every file and directory from the
Moodle data directory.  Will be useful for those on hosting servers
without root access.
2002-10-15 16:04:38 +00:00
moodler 8d94f5a08e OK, it seems reliable enough now for alpha testing.
If you have existing quizzes, delete them all, then
drop all the quiz tables and delete the quiz line from
the modules table.

Things to do still:

  - add/edit/remove categories
  - display question feedback on submissions ...
  - record the time they started the quiz, as well as the completion.
  - place time limits between attempts
  - add full specification of quiz open time and quiz close time
2002-10-15 12:54:11 +00:00
moodler 2a2c9725bb Can now create and re-edit all three types of questions.
Still working on grading ...
2002-10-15 10:04:28 +00:00
moodler 2834cce0d9 New strings 2002-10-15 05:31:03 +00:00
moodler 31e7516eb5 Forms now done, more or less 2002-10-15 05:29:57 +00:00
moodler d0030cf051 A little more explicit about PHP requirements 2002-10-15 03:48:04 +00:00
moodler 109613b290 Fix to clear the modform variable just in case there's one
from one module that later affects another module.
2002-10-14 16:06:19 +00:00
moodler ff80e012b0 Miscellaneous little changes from today ... 2002-10-14 16:00:55 +00:00
moodler edecd16dd2 New strings 2002-10-14 15:58:07 +00:00
moodler 10b9291c92 Checking in what I got so far .... Not working yet but I'm going to bed. 2002-10-14 15:57:33 +00:00
moodler 7bd1aa1d64 Quiz generation is working now. Just need question and category editors. 2002-10-14 12:21:18 +00:00
moodler 6a952ce7a0 Many new additions - code not quite usable yet, but getting close 2002-10-14 09:07:13 +00:00
moodler 2eaa2e2861 New strings 2002-10-14 09:04:33 +00:00
moodler 579ddad5ef Added a basic report and some clean-ups 2002-10-13 13:51:56 +00:00
moodler 5c0ee23cc3 Now uses real current language (may not be the same as $CFG->lang) 2002-10-13 10:06:01 +00:00
moodler a5e1f35c66 Just to show that something is happening!
At this stage this module:

  - prints quizzes,
  - accepts answers (for multiple attempts) and grades them,
  - stores the grades.

Really, it's usable as long as you don't mind using the database manually. :)

Next up is quiz reports, then I'll tackle quiz creation.
2002-10-13 07:17:48 +00:00
moodler 5a84640bd1 Tweaks to use new javascript-printing function etc 2002-10-12 15:01:17 +00:00
moodler 3df49694a9 New function to print richtext javascript 2002-10-12 15:00:34 +00:00
moodler 901f9f74e1 First version of German (Deutsch) translation, by Holger.Schadeck@webdesign-forum.de
Great!
2002-10-12 14:33:01 +00:00
moodler e1947876ec Moved the object code out into a function print_textarea 2002-10-12 07:23:16 +00:00
moodler aed0b713fe new string 2002-10-12 06:27:24 +00:00
moodler b2a5ee1822 Added richtext to Journal entries. 2002-10-12 06:20:56 +00:00
moodler 87aa027831 Some notes about the other new stuff. 2002-10-12 05:47:05 +00:00
moodler a5a5a129b7 Added help buttons about the richtext editor (when active) 2002-10-12 05:43:00 +00:00
moodler 66dc0c39d0 Help file for the new richtext HTML editor 2002-10-12 05:39:00 +00:00
moodler 1a072208ce Smilies are now replaced even in HTML text, and small fixes 2002-10-12 05:09:49 +00:00
moodler 75096957ca Keep this one here :-) for the interface 2002-10-12 04:19:51 +00:00
moodler d86cdde20b A bit of info 2002-10-12 04:13:39 +00:00
moodler 0c074a4f2e No longer needed ... replaced by "angry.gif" ... 2002-10-12 04:12:26 +00:00
moodler 2ec69fce6a Added a function useful for debugging Javascript problems 2002-10-12 04:09:51 +00:00
moodler 1581d9b1d8 Swapped clown icon for surprise in the layout ... looks better that way 2002-10-12 04:06:26 +00:00
moodler 696f751f7a Swapped clown for surprise - looks better that way 2002-10-12 04:04:59 +00:00
moodler c828070ac9 Deleted these icons because I'm not using them. The editor now uses
the standard Moodle icons instead.
2002-10-12 04:03:23 +00:00
moodler cd68ebfaef This page now uses the Moodle standard icons for consistency 2002-10-12 03:55:50 +00:00
moodler 84f98bc8a9 Removed references to btnPost because I don't use it 2002-10-12 03:54:56 +00:00
moodler c9dda99059 Modified text_to_html to use the new smilies, which for efficiency are
now defined in a global array, and use str_replace instead of ereg ...
2002-10-12 03:53:40 +00:00
moodler d2aad0a838 Modified this help file to describe the new smilies 2002-10-12 03:51:29 +00:00
moodler c0f4f066c2 Modified all smilies and added some new ones. 2002-10-12 03:50:45 +00:00
moodler 113bb2a26b Better placing of standard links etc when there are lots of images and
other funny formatting in HTML posts
2002-10-11 05:20:23 +00:00
moodler a9ff3d4cdf New strings to do with language direction 2002-10-11 02:32:05 +00:00
moodler 541117b6cb Changes to support choice of language direction (so that languages
like Arabic, Hebrew etc will work)
2002-10-11 02:31:37 +00:00
moodler 4b9318947c Added a new string to make it very clear how to upload assignments 2002-10-11 01:58:24 +00:00
moodler 213e8cc67d Better default options, and hiding of moodle-text help when htmlediting is operational 2002-10-10 09:27:49 +00:00
moodler c4a4cae062 Added another translator for Finnish 2002-10-10 07:29:44 +00:00
moodler da061bb457 Added option to choose HTML editor 2002-10-10 07:29:09 +00:00
moodler 73bb08357c Initial attempt at adding html text editor features to these forms. 2002-10-10 07:27:57 +00:00
moodler d2fce839b6 Updated the version (database table addition user->htmleditor) 2002-10-10 07:27:07 +00:00
moodler 0095d5cd3c Additions to cope with richtext editor being used in some forms. 2002-10-10 07:26:10 +00:00
moodler fa7d70c8c1 Added new strings 2002-10-10 07:24:59 +00:00
moodler de909d238d Adding a beta version of Rich Text Editor, for embedding into Moodle
forms (forums, readings, journals etc).  Works only on IE 5.5 and later.

Slightly customised for a slimmer toolbar.
2002-10-10 07:21:32 +00:00
moodler bc0750aaae Arg .. so much for quick hacks ... this code is so messy it's
a hassle to hack ... going back to the way it was originally, with
just a more informative error message instead.
2002-10-09 14:20:24 +00:00
moodler 0bdce31166 Changes to avoid cryptic errors 2002-10-09 14:08:33 +00:00
paca70 b54cd88f34 More corrections, documentation is coming. 2002-10-08 15:51:27 +00:00
moodler b1f2587a65 Latest changes for Italian version, by Davide Suraci 2002-10-08 02:09:43 +00:00
paca70 80f4bff33e Initial version 2002-10-07 17:17:33 +00:00
paca70 2cfd9e4dc9 Some corrections 2002-10-06 18:41:38 +00:00
paca70 66ea86f3b8 Initial version 2002-10-06 18:24:14 +00:00
moodler f3632647e7 Empty file 2002-10-06 17:31:46 +00:00
moodler 8e7ad7283b New words 2002-10-06 17:20:54 +00:00
moodler f8e4809a03 New function print_file_picture for printing a picture from the
files area, or optionally from a URL
2002-10-06 17:20:32 +00:00
moodler 14d8c0b409 Further work done. It currently can print the quiz form (including images!)
but can't mark them yet.  I've been constructing quizzes manually in the
database and it's helping to refine the database structure.  Don't count
on anything stable in the quiz module for a few days yet ...
2002-10-06 17:06:54 +00:00
moodler 55c0c75c03 A start on the page that actually prints the questions and stores the answers 2002-10-06 03:24:56 +00:00
moodler 36658798dc More or less working now 2002-10-06 03:23:34 +00:00
moodler 3a506ca299 Added some more functions 2002-10-06 03:23:16 +00:00
moodler 765814def3 Changed includes of module libraries to use full pathnames constructed
from $CFG->dirroot, rather than relative.  This is because the relative
path could sometime be a different case to the full path (on Windows)
causing include_once not to work.
2002-10-06 03:05:22 +00:00
moodler f01826ee39 Moved module upgrading functions out into database-specific files 2002-10-05 17:21:39 +00:00
moodler c0d6bcc508 Moved upgrade functions into db/mysql.sql 2002-10-05 17:20:24 +00:00
moodler 31f0900c61 Moved upgrade_moodle functions out to database-specific files, because
the SQL is not compatible (nor is it possible to make it so).
2002-10-05 17:09:31 +00:00
moodler e858f9da96 create_new_user() can now import other fields from an external source
if the function for it has been defined.  (Petri's code with additions by me)
2002-10-05 16:49:42 +00:00
paca70 2a86e7a1a5 More corrections 2002-10-04 13:07:16 +00:00
moodler 730fd187c8 Skeleton version of the quiz module. It won't break an installation,
but it doesn't do anything yet.
2002-10-04 02:59:05 +00:00
moodler 518d37151d Use main version of "maximum grade" string 2002-10-04 02:55:27 +00:00
moodler b2a82ad65c Make names into a list 2002-10-04 02:54:53 +00:00
paca70 7d3e684292 and some more.... 2002-10-03 17:10:50 +00:00
paca70 75ebf527c9 Some fixs more. 2002-10-03 17:04:15 +00:00
paca70 a08db54a84 Translated new strings and fixed some old ones. 2002-10-03 16:54:58 +00:00
paca70 68605943ae Corrected some comments. 2002-10-03 15:55:45 +00:00
paca70 fcad13730e Initial version of ldap authentication module. It have no config-interface yet. (But it's coming)
It contains also experimental auth_get_userinfo() function, what is not used by moodle yet.
If you like to try it, create following $CFG variables to /config.php or directly to config-table and activate
ldap authentication from admin-configuration page.

$CFG->ldap_bind_dn      	"If your like to use bind-user to search users, specify it here. Someting like 'cn=ldapuser,ou=public,o=org'"
$CFG->ldap_bind_pw      	"Password for bind-user."
$CFG->ldap_contexts    		"List of contexts where users are located.
				  Separate different contexts with ';'. Something like 'ou=users,o=org; ou=other,o=org'"
$CFG->ldap_host_url      	"Specify LDAP host in URL-form like 'ldap://ldap.myorg.com/' or 'ldaps//ldap.myorg.com/' ";
$CFG->ldap_search_sub   	"Put value <> 0 if  you like to search users from subcontexts.";
$CFG->ldap_user_attribute 	"What attribute is used to name/search users. Usually 'cn'. ";

More configuration optios are coming. This version is tested against Novell E-Directory without SSL and it works fine.
2002-10-03 13:45:19 +00:00
moodler abf59b15bd Fixed definition of forum->open 2002-10-03 11:17:51 +00:00
moodler 70c476a79e Fixes bug 112
Changes to expand "open" option in forums.  Now have a choice between
three options:  new discussions and new replies, new replies only and
no new discussions or new replies.

Three new options in lang/forum.php and I changed "allowdiscussions".
2002-10-03 11:15:50 +00:00
moodler 7d95ed97c7 User's name in footer is now a link 2002-10-03 11:11:53 +00:00
moodler 8dbed6be60 format_time() now supports language strings for day(s)/hour(s)/min(s)/sec(s)
String lookups are cached in user/index.php for efficiency
2002-10-03 04:04:59 +00:00
moodler 05d09aa1f9 Just making this more relevant for the CVS update junkies :-) 2002-10-03 03:55:03 +00:00
moodler a168bd029f Expanded the description and included sample commands 2002-10-03 03:35:53 +00:00
moodler 7b5baeb7de "Activities" wasn't being taken from language files 2002-10-03 02:57:36 +00:00
paca70 4b76aa52d0 Minor update to test that update rights are working. 2002-10-02 19:37:35 +00:00
moodler 5251893741 Fixes for accented characters 2002-10-02 16:23:12 +00:00
moodler 5c958cabcc Updated a word 2002-10-02 15:55:22 +00:00
moodler 168fe1427a New version number for development 2002-10-02 14:43:04 +00:00
moodler 3eb4b24fed Added 'thischarset' = "iso-8859-1", for completeness 2002-10-02 14:20:30 +00:00
moodler 59857bd7a8 Checked in initial Italian version by Davide Suraci, with help from others 2002-10-02 13:50:36 +00:00
moodler 3763e302ff Added Sebastien Nameche 2002-10-02 10:59:04 +00:00
moodler 0cb8bf3bcd Locale box is a bit bigger, since locale strings can be bigger :-) 2002-10-02 10:35:43 +00:00
moodler 3a178d04d1 Removed configcharset, but kept thischarset 2002-10-02 10:34:31 +00:00
moodler 4bfa92e714 Added new header to all pages to set the current charset, to help browsers 2002-10-02 10:33:05 +00:00
moodler 53e61ab906 Updates to the French translation, by M. Sebastien Nam?che 2002-10-02 09:37:29 +00:00
moodler 0ebe961a18 A change to test the ACLs 2002-10-02 08:23:49 +00:00
moodler a1122760d0 Changes 2002-10-02 07:59:22 +00:00
moodler 39df7c9774 Fixed links to be relative. This prevents errors on the offchance that
the current URL != $CFG->wwwroot/login
2002-10-02 07:08:56 +00:00
moodler 2e60a1ace3 Made these images transparent 2002-10-02 05:10:10 +00:00
moodler b4ab71a6db Fixed links in navigation 2002-10-02 02:24:19 +00:00
moodler 7fbd6b1c0b Don't use getenv anywhere - not necessary and breaks PHP under ISAPI 2002-10-02 02:05:29 +00:00
martin e99af4408f CHANGES UP TO 1.0.5 2002-09-27 15:14:04 +00:00
martin cc300ceb39 Mentioned newly allowed tags 2002-09-27 15:03:28 +00:00
martin 8dcea3963a Added a few more allowed HTML tags in plain text files. <dl> <h1><h2><h3> <hr> 2002-09-27 14:48:25 +00:00
martin dfb6e4ac3e Tweaks to page titles to make them more consistent 2002-09-27 14:26:02 +00:00
martin 0d399dc585 Aaaahhh I remember now why this was in here, because in future there might
be course-level themes and user-level themes.

Putting it back as before ... :-)
2002-09-27 14:19:59 +00:00
martin cd1c4d2321 Removed theme chooser from here ... moving it to admin folder 2002-09-27 14:18:06 +00:00
martin 555bdfc813 Fixed a little link to login page 2002-09-27 13:44:52 +00:00
martin d51c583d3c Updated version for 1.0.5 release 2002-09-27 13:40:17 +00:00
martin ebf2e54dd6 Mentioned the icon bug 2002-09-27 13:39:59 +00:00
martin 5ea4745d18 Updated version and release 2002-09-27 06:20:20 +00:00
martin 077f9a67d0 Add manage database link to home page admin links if necessary 2002-09-27 06:19:49 +00:00
martin 34a0cda676 Put version info on admin page 2002-09-27 06:19:18 +00:00
martin b35f948b97 Nicer way to find out the major changes since the last version.
RELEASES.html shows the changes, and these are displayed during
an upgrade.
2002-09-27 06:13:59 +00:00
martin 2802ac6ec7 Tweaks and formatting 2002-09-27 05:25:46 +00:00
martin 2a691b9439 Hoepfully made the upgrade process clearer. 2002-09-27 05:12:02 +00:00
martin 91ac0405fa A little extra error checking. 2002-09-27 04:53:27 +00:00
martin 3ef909ca58 Removed encoding setting because i suspect it may be messing with SMTP mail 2002-09-27 01:35:25 +00:00
martin b362b85e99 Better format for text version of emails 2002-09-26 16:02:13 +00:00
martin 004db95014 Changed some instances of include() to include_once() 2002-09-26 14:41:59 +00:00
martin f1f901c3ea After upgrading version, stay on admin page rather than going to home
page, just in case there is more to do.
2002-09-26 13:05:18 +00:00
martin 9450cef212 Updated version and release 2002-09-26 11:44:06 +00:00
martin f25f1e1b66 Little bug that caused the guest icon to display even when guest was turned
off (if the password was null)
2002-09-26 11:10:20 +00:00
martin 57f3a4a564 the more things change, the less they stay the same 2002-09-26 07:27:01 +00:00
martin 41e1986cdc Update the version 2002-09-26 07:25:47 +00:00
martin 8f1cba2858 The login page now shows different instructions depending on the
authentication mechanism.
2002-09-26 07:13:14 +00:00
martin faebaf0f40 First implementation of new authentication system, which can now use
pluggable modules in the 'auth' directory.

Everything is done through authentication_user_login in lib/moodlelib.php

As well as the old default "email" confirmation, I added a new type of
confirmation "none", which basically does no confirmation at all.
2002-09-26 07:03:22 +00:00
martin ab998e5d07 Check for USER->email in require_login. With external authentication
schemes it's possible that the email field could be empty, so this
will force users to update it (and the rest of their profile) any
time they log into a course.
2002-09-26 03:51:31 +00:00
martin 43dc944611 Make $a bold so it's easier to see 2002-09-26 03:36:16 +00:00
martin ef5e5d87dc New help file for language editing 2002-09-26 03:20:15 +00:00
martin 4c2bcc7a1b Much better. No slashes needed AT ALL now, not even for $a variables.
Also provided a help button at the top.
2002-09-26 03:16:40 +00:00
martin 9d389960e6 Patches from Petri 2002-09-26 02:19:53 +00:00
martin d7ea4a225d Info about lib/htaccess 2002-09-25 16:38:09 +00:00
martin 96dad0de43 Added DirectoryIndex stuff 2002-09-25 16:33:54 +00:00
martin 7104dfc9ef Added new postgres7 schema, developed by Felipe Rodrigues da Silva <felipe@pontoexe.com>. Thanks Felipe!
I've personally not tested this yet so PostgrSQL user feedback is encouraged!
2002-09-25 15:16:21 +00:00
martin b839163528 Don't redirect too early 2002-09-25 14:40:28 +00:00
martin d66ee54d8d Add some comments 2002-09-25 13:37:12 +00:00
martin 04ad372d93 Improved explanations for how to use this file 2002-09-25 12:33:21 +00:00
martin 632d640751 It's possible $USER->lang may not be defined. If so, use $CFG->lang. 2002-09-25 11:06:27 +00:00
martin 4c701e6f54 Set fromdiscussion here just in case it's not set elsewhere 2002-09-25 08:17:35 +00:00
martin 38ff0e9f1f ALL CHANGES UP TO MOODLE 1.0.5 BETA 1 2002-09-25 07:42:39 +00:00
martin 9ec9ff5dc5 Unfinished files 2002-09-25 07:41:23 +00:00
martin 89e71738b5 updated version numbers for beta 1 release 2002-09-25 07:40:07 +00:00
martin 9806ae9403 README contains author etc 2002-09-25 07:38:23 +00:00
martin d68c814679 Added README with author 2002-09-25 07:37:31 +00:00
martin d0b12add53 Author stored in README 2002-09-25 07:35:58 +00:00
martin cb011cfd0a In compare mode you can now EDIT language files directly. This should
make language development much easier.

Based on code sent to me by Petri Asikainen
2002-09-25 07:33:04 +00:00
martin f74a4a79f2 Cough typo 2002-09-25 07:31:19 +00:00
martin 6321ab8df6 Edited using language editor 2002-09-25 07:30:16 +00:00
martin 3f5331eb19 New string 2002-09-25 07:19:32 +00:00
martin 49f5bb0527 Fix for ICQ display (they've changed their URLs) 2002-09-24 12:45:06 +00:00
martin ed4567d69d Hide password during registration 2002-09-24 09:20:43 +00:00
martin 74ed07ac86 Prevent guests even seeing the edit button 2002-09-24 09:06:17 +00:00
martin 3182314d5c Prevent guests from submitting choices or assignments 2002-09-24 09:02:34 +00:00
martin 17b365f829 Updated Sebastien's address to seb@gaia.anet.fr 2002-09-24 08:54:44 +00:00
martin 3d98b29d51 Make sure site security is added when logging in via change password 2002-09-24 01:28:19 +00:00
martin 83e9a09e34 Newly formatted header.html files in themes ... still works the same
just might be easier to edit now.  index.php uses new set_config function
2002-09-23 15:42:22 +00:00
martin 8cea3a3974 Special "navigation" for home page - "home" value sets off different header
in themes
2002-09-23 15:41:06 +00:00
martin a28af1fe74 New set_config() and better use of $CFG->version 2002-09-23 15:40:16 +00:00
martin b3ac9d9b85 New standardlogo theme ... like standard but with a logo 2002-09-23 15:38:22 +00:00
martin fd8dfb5a88 Sample logo 2002-09-23 15:37:08 +00:00
martin 1e22462d01 Fixed up default-sized tables again 2002-09-23 07:02:26 +00:00
martin 7fd6bb7cf6 Whoops teacher checking was back to front 2002-09-23 06:49:30 +00:00
martin 380871ace1 Personal mentions 2002-09-23 04:04:31 +00:00
martin a46b910e00 Change to name of language 2002-09-23 02:11:08 +00:00
martin 43afb07b98 Updated name of language 2002-09-23 02:08:40 +00:00
martin 3e8540f4fe Added Portuguese (Brazilian) by Fabricio Valadares, Thanks! 2002-09-23 02:04:44 +00:00
martin 2b6277bc51 Updated credits 2002-09-23 01:47:34 +00:00
martin affb83a226 Saner format for editing profile 2002-09-22 16:24:38 +00:00
martin 1fdaab8d76 Bolder title 2002-09-22 16:19:45 +00:00
martin a58977a2a0 Forgot country display change 2002-09-22 16:17:11 +00:00
martin adcb3ac53d Better country sorting on user index in a course 2002-09-22 16:16:13 +00:00
martin 7c3cf7f3ef Better way of sorting countries 2002-09-22 16:12:49 +00:00
martin 096dc19f3b Fixes to country sorting 2002-09-22 16:03:01 +00:00
martin 8538258121 Better handling of country sorting 2002-09-22 15:57:23 +00:00
martin 66c95f3224 Don't delete a user if already deleted (reloading page, say) 2002-09-22 14:42:32 +00:00
martin 6968fd6656 Updated version 2002-09-22 14:39:09 +00:00
martin 45aa6d563c Fixes to unenrolling students, and unenrol_student() and remove_teacher()
now remove forum_subscriptions correctly
2002-09-22 14:33:21 +00:00
martin 274f62e6d5 Fixes to table widths 2002-09-22 14:11:45 +00:00
martin b4ead712f2 Arrghh ... foget to remove the debugging thing 2002-09-22 14:07:15 +00:00
martin d578afc883 Major cleanup of user administration and display, including sortable listings,
confirmation on deletions, removing deleted user from all student lists,
teacher lists and subscription lists and freeing up their username and
email to be used again.
2002-09-22 14:06:38 +00:00
martin 7684ce4b32 Changes (getting close to 1.0.5 now) 2002-09-22 06:49:38 +00:00
martin 1d3ff0711f Updated module template with module_print_recent_activity() 2002-09-22 06:47:11 +00:00
martin 3446205d44 Added assignments under "Recent Activity" 2002-09-22 06:41:56 +00:00
martin 88491cacba When redirecting to admin page go direct to index.php just in case
DirectoryIndex hasn't been fixed yet.
2002-09-22 05:33:54 +00:00
martin bbe3efd8e1 Some comments to indicate standard and other functions 2002-09-22 04:29:18 +00:00
martin 66ea15f3cc Reaaranged the functions into standard and other 2002-09-22 04:27:45 +00:00
martin 7bca79576f Fixed stupidity 2002-09-22 03:58:41 +00:00
martin a30cfe1685 Error in the SQL - fixed now 2002-09-22 03:57:56 +00:00
martin 54634efcba New function to show new surveys in recent activity box 2002-09-22 03:51:28 +00:00
martin a2b71b6d71 Whoops typo - left in some old stuff 2002-09-22 03:17:29 +00:00
martin 03af47eee3 SHow number of journal entries in the teacher link to report 2002-09-22 03:16:40 +00:00
martin 3bf90da5f6 Use log URL for link to journal 2002-09-22 03:13:10 +00:00
martin 01a086c3dd Support for new deleted field in user table 2002-09-22 03:11:05 +00:00
martin ae2e0dddad Changes to not include deleted users in some things 2002-09-22 03:05:39 +00:00
martin bb09fb1157 Changes to enable DELETION of user accounts. Accounts aren't actually
deleted, they are just marked with a deleteion flag that prevents them
from logging in, or from being listed anywhere.
2002-09-22 03:01:17 +00:00
martin 3869a2ac3d Changes to print_recent_activity in course/lib.php. It is now more
modular (at slight cost to performance) and every modules can now
have a module_print_recent_activity() function.  This function
takes a list of logs, searches for things to display and does so.

So far I've done forum and journal functions
2002-09-21 17:11:08 +00:00
martin 20aa2257dc Allow 1-minute delay (mostly good for testing) 2002-09-21 08:44:08 +00:00
martin 93e0f85d6c Need more room for language variable (eg pt_br) 2002-09-21 08:42:05 +00:00
martin a16c2180d0 Make sure user language works OK (it does now) 2002-09-21 08:40:27 +00:00
martin 562bbe9074 Make mail format explicitly 8bit 2002-09-21 08:39:54 +00:00
martin a5a4cd60cb Make sure mailouts are in the user's chosen language 2002-09-21 07:46:30 +00:00
martin 5319c6adf6 Make sure mailouts are in the chosen language of each user 2002-09-21 07:42:54 +00:00
martin bcf7ee7a97 Initial (incomplete) version of French translation by Sebastien Nameche <snameche@virtual-net.fr>
Good start!  Thanks, Sebastien.
2002-09-21 07:27:07 +00:00
martin 94cfe58b19 Initial version of Finnish translation, as done by Petri Asikainen <paca@sci.fi>
Thanks, Petri!
2002-09-21 07:22:23 +00:00
martin 1774e33325 Added single quotes around all the keys ... even though PHP works
without them, it will flag errors when errorlevel is turned up, and
I suspect this slows it all down a bit.
2002-09-21 07:18:16 +00:00
martin 13fb5ec074 Added my email address 2002-09-21 07:07:44 +00:00
martin effbcca27c Don't need to log in to see site-level course 2002-09-21 07:03:54 +00:00
martin b92ea9450c More options for longtimenosee 2002-09-21 06:45:26 +00:00
martin c69ce08b49 Don't print pictures at all for very large lists 2002-09-21 06:39:28 +00:00
martin 25fa226dac Make more room in list 2002-09-21 06:30:32 +00:00
martin 32b4b9746a more refinements to sorting display 2002-09-21 06:27:00 +00:00
martin 3f63219688 Fixed typo from testing 2002-09-21 06:13:42 +00:00
martin e6b9ee042d Much better look for user index 2002-09-21 06:12:54 +00:00
martin dccd16712a Slight additions to print_table 2002-09-21 05:43:46 +00:00
martin c07daf5bbc Added lang for users 2002-09-21 05:43:21 +00:00
martin 6b281f1fec Better display of users in shortened form, for testing 2002-09-21 05:42:16 +00:00
martin 7a702c34ea Tweak 2002-09-20 15:42:16 +00:00
martin 6abee98964 First go at an abbreviated user listing 2002-09-20 15:40:20 +00:00
martin 1e4d8ed1d2 Put sitename on debugging info (helpful when comparing two sites) 2002-09-19 14:59:47 +00:00
martin 08056730fa Improved interface for course/teachers.php ... instead of typing numbers
into a box there is now a menu for each user.   Much better!
2002-09-19 14:51:49 +00:00
martin ae7aafeb53 Got rid of errorlevel configuration - more trouble than it's worth!
Hardcoded it into setup.php now - people who are that keen can change
it there.
2002-09-19 14:07:24 +00:00
martin 1be8717562 Updated for new configuration page 2002-09-19 14:06:28 +00:00
martin 4d0dde9159 Some consistency in headers on editing forms 2002-09-19 13:55:40 +00:00
martin 74944b734d Most of the configuration variables have been moved out of the config.php
file and into a database, where they can be edited using a new admin form
called "Configure variables".
2002-09-19 12:01:55 +00:00
martin e80e60a6b2 Slight fix to error page to include site name properly 2002-09-17 14:56:18 +00:00
martin 76dbe04f4a Login link on home page 2002-09-16 13:03:31 +00:00
martin 7ff602b225 eminder about saving themes in upgrades etc 2002-09-16 07:11:31 +00:00
martin a9858957e1 Typo 2002-09-16 07:08:33 +00:00
martin 7185779262 Fixed name in popup javascript window 2002-09-16 07:03:33 +00:00
martin af90e74e59 Sample .htaccess file 2002-09-16 06:33:53 +00:00
martin 37e9df195f Fixed Id 2002-09-16 03:23:10 +00:00
martin c94e1535f8 Type on phpinfo 2002-09-16 03:20:55 +00:00
martin 7b5271354b Mentioned there's no need to use a trailing slash on the wwwroot 2002-09-15 06:09:44 +00:00
martin a7b9e8bc9f Fixes to point directly to index.php wherever it was assumed. This wasn't
a problem on most servers, but was causing some problems on IIS servers
2002-09-15 06:06:32 +00:00
martin 1a72314d0f Can now specify current language on a per-user basis 2002-09-14 03:43:24 +00:00
martin c46df33643 New help file for editing html 2002-09-13 10:22:06 +00:00
martin 73761dc9be Added a new reading type "html text". It's similar to "plain text"
except none of the auto-formatting is done, and all HTML code is
accepted.
2002-09-13 10:21:03 +00:00
martin ddd9a8969b SUrprise icon is a bit wider than 16 pixels 2002-09-12 17:08:32 +00:00
martin 7ef459ebed Fixed bug with category links on front page 2002-09-12 02:42:22 +00:00
martin e31309ed79 One more little buglet when confirming an email (added security site value) 2002-09-11 14:02:30 +00:00
martin 91d5dbf3eb CHANGES UP TO 1.0.4 (really, I mean it this time :-) ) 2002-09-11 05:11:13 +00:00
martin 122cffc938 Include guest user in list of users 2002-09-11 02:26:56 +00:00
martin 0c6561819b Changes to course display on front page when there is more than one category 2002-09-10 13:47:56 +00:00
martin 4ea0fc0f1a Removed some debugging stuff 2002-09-10 13:24:24 +00:00
martin a789fb73f4 More security for email confirmation process ... a 15-character random
"secret" key is stored the user record on account creation, sent via
email and checked again during confirmation.
2002-09-10 12:54:01 +00:00
martin ceb7ea7550 CHANGES UP TO 1.0.4 2002-09-10 03:44:09 +00:00
martin 99b5e56207 Whoops, left attachment field out of the database schema (affected
new installations of 1.0.2 and later)
2002-09-10 02:13:44 +00:00
martin 45c58cb7ad CHANGES (this is 1.0.4 unless anything comes up very soon) 2002-09-09 15:52:07 +00:00
martin 8e652a3660 Tweak to modify interface a bit (changed header and made courses a link) 2002-09-09 15:50:55 +00:00
martin db95b60308 CHANGES 2002-09-09 12:38:29 +00:00
martin 0a26320532 Tweaks to category display 2002-09-09 12:37:34 +00:00
martin ba2e5d7347 Categories upgrade. Admin can now create/edit/delete categories, and
these are diesplayed wherever courses are listed
2002-09-09 11:48:11 +00:00
martin 7aa0bb8886 Layout fixes ... much better now 2002-09-09 11:42:27 +00:00
martin d6935726ed Changed maximum number of weeks/topics up to 52 2002-09-09 11:31:48 +00:00
martin 782e7594ec Rearrange code ... accidentally placed table->head in the loop 2002-09-09 10:38:14 +00:00
martin e5c2a9e441 Whoops ... last conversion actully tampered with comment formatting
... I've fixed that now.
2002-09-09 06:23:39 +00:00
martin bc44a3a0ad Converted all the DOS format text files to UNIX format, for consistency
with the rest of Moodle and also to prevent possible mangling of
files in case they are FTP'd individually to a server.
2002-09-09 06:17:11 +00:00
martin 503eced327 Added height and width to smiley icons, to make emails look
better in circumstances where external images are blocked
(eg some webmail programs like squirrelmail).
2002-09-08 16:13:10 +00:00
martin 8f66d49a77 Added an "unsubscribe" link to emails 2002-09-08 16:04:51 +00:00
martin 28e1e8b912 Fixed a bug. When replying to an email copy, you would be forwarded
to the login screen to login first.  However, this was being saved
as the place to go back to after replying.

I added a check for this so now it behaves as you'd expect.
2002-09-08 15:39:44 +00:00
martin cdf6a3ca28 Text window a bit bigger 2002-09-08 09:47:10 +00:00
martin cd3fccff00 Choices now support up to 6 choices. Backward compatible to 2-choice format. 2002-09-08 09:42:07 +00:00
martin 2415d953f0 Tip over 'Edit profile' is the user's name 2002-09-08 09:41:17 +00:00
martin d037d3a28a Help for choices 2002-09-08 09:22:31 +00:00
martin 59a7100ccf Clarified the "participants" link ... 2002-09-08 05:29:00 +00:00
martin 2c26c98575 Link at bottom now goes to site home, not this page 2002-09-08 05:23:47 +00:00
martin 09442e5067 Added documentation to the teachers page. 2002-09-08 05:15:52 +00:00
martin 5b54db6ee4 Improved print_table() a bit (can now specify column widths) 2002-09-08 05:15:37 +00:00
martin c2bc0a4573 Need this file to go with the previous changes! 2002-09-08 03:34:45 +00:00
martin 40a1d986f9 Changes to improve display of teachers 2002-09-08 03:34:12 +00:00
martin b4d7002e66 Changes to allow much better control over what "teachers" are called
in a course.  Firstly, the course settings page now allows the teachers
to specify the word they want to use in place of "teachers" and "students"
as well as "teacher" and "student".  Secondly, a new teacher admin tool
allows any teacher to modify the order and displayed role of teachers
in that course.  This affects the display on the course listings, the
participants page and so on.
2002-09-08 03:24:38 +00:00
martin 774ab66002 Improvements to the language checker. As well as checking for missing
strings, you can now see the current language compared side-by-side
with English.
2002-09-07 14:57:33 +00:00
martin 7fb8331432 Add a link if a "manage database" directory exists 2002-09-07 14:56:19 +00:00
martin fa8e1a34ec Slight update to README 2002-09-07 05:01:55 +00:00
martin 601212b8d2 Added a README that explains the process 2002-09-07 03:54:10 +00:00
martin a48bf3ecd4 Added a template for new modules that contains the bare necessities. 2002-09-07 03:31:36 +00:00
martin 12bace2439 Checking in the current release number for CVS users 2002-09-06 15:17:44 +00:00
martin d21fef3a02 Don't try and print the last access date if it doesn't exist 2002-09-06 15:10:36 +00:00
martin c646b70d66 Added a new $release variable that shows the user-friendly version number 2002-09-06 14:06:48 +00:00
martin 7c6addde73 Cleaned up a bit 2002-09-06 14:05:43 +00:00
martin 09ba0c8a32 Fixed bug in password checking for new admin user ... 2002-09-05 17:31:08 +00:00
martin c5e66fc9da Updated the info to mention that the upgrading only works if you
are logged in as the *administrator* and visit the site home page.
2002-09-05 12:29:26 +00:00
martin 19505e1333 CHANGES UP TO 1.0.3.1 2002-09-05 12:25:08 +00:00
martin 19967d6c3d Updated version 2002-09-05 12:24:15 +00:00
martin 55b8ac3107 Better error message when invalid arguments are supplied. 2002-09-05 11:56:20 +00:00
martin e2d8972553 BUG FIX! - fixes error that could allow ANY file on the system to be read! 2002-09-05 11:53:17 +00:00
martin 45f21575aa Whoops ... little bug that stopped loginas from working ... need to
create $USER->site ...
2002-09-05 11:28:06 +00:00
martin f5e88127d8 Updated version number 2002-09-05 02:29:54 +00:00
martin f6ab73667e CHANGES UP TO MOODLE 1.0.3 2002-09-05 02:28:50 +00:00
martin e98e09150e New error when the admin user is (still) set to the default "admin". 2002-09-05 02:17:33 +00:00
martin 403bb50d7b BUG FIX: In the last version I introduced a new security feature
(keeping the site URL stored in the USER session object) but forgot
to add this to the brand new admin user - causing it to fail.

Fixed.
2002-09-05 02:04:00 +00:00
martin 97ea24e307 Updated README .. pages dir no longer exists - now "help" and "docs" 2002-09-04 13:38:38 +00:00
martin a3cbb7539d Using different logo file to avoid caching problems on changeover 2002-09-04 09:39:03 +00:00
martin a0376793c2 Sorted out moodle logos 2002-09-04 09:38:22 +00:00
martin 1903dd11d8 Tweaked the new icon 2002-09-04 06:32:50 +00:00
martin ef9955b081 Better handling of user-entered URLs (add http:// if missing) 2002-09-04 05:07:17 +00:00
martin 5e391d346d New logo that should work on more themes 2002-09-03 16:58:49 +00:00
martin 90ebcad978 Switched these around and edited a little 2002-09-03 15:16:20 +00:00
martin 31410e9a16 Added a new administration page that can check the current language
pack against the English language pack.  It prints any missing strings
or files.  This should help language pack developers.
2002-09-03 14:29:39 +00:00
martin cf38360f58 Language fixes, added english strings etc 2002-09-03 13:11:40 +00:00
martin 42389890d5 More efficient use of database in userday as well, plus the day graph now
always shows the whole current day
2002-09-02 16:35:41 +00:00
martin f08cc8bbfe usercourse bar --> line graph for better display when lots of data 2002-09-02 16:03:33 +00:00
martin e45e8d26da Alternate method of calculating usercourse logs .... is it faster? 2002-09-02 15:53:19 +00:00
martin 5be2f47cf4 Added Content-disposition header to help some browsers suggest the right
filename when saving pictures and files.
2002-09-02 09:06:43 +00:00
martin 0eae8049a0 Fixed over-zealous removal of returns from text ... 2002-09-02 07:41:39 +00:00
martin cffbaff2dc Print the user's stated city/country as well 2002-09-02 07:18:13 +00:00
martin d8e69c5c6d CHANGES UP TO MOODLE 1.0.2 2002-09-02 06:51:31 +00:00
martin 9febf87563 Added ability to define proxy machine (eg a firewall) so that Moodle
is able to get to the Internet if it needs to
2002-09-02 06:34:43 +00:00
martin d3fcd70b3d Add Moodle support for proxies 2002-09-02 06:30:57 +00:00
martin 8aed46c7eb *** empty log message *** 2002-09-02 06:25:27 +00:00
martin e92ea3d85f Fix the display when USER display mode is flat, and a parent is selected.
In this case, the display is temporarily changed to nested
2002-09-02 05:03:54 +00:00
martin 5a83a0a84e Default forum display mode is actually used now 2002-09-02 03:48:47 +00:00
martin e181f6ab00 Removed the 255 character limit ... now they have a gun, I hope people
don't shoot themseves with it.   ;-)
2002-09-02 02:17:36 +00:00
martin 0c71c9ae0e Hide no-authority teachers from course listings too 2002-09-01 14:47:03 +00:00
martin a3f0817b28 New documenttaion about attachments 2002-09-01 14:35:07 +00:00
martin 7f6689e4e0 Attachments can now be added to postings.
They are stored in the course moddata area.
They appear as links within the message, including mailed-out messages.
They are deleted when the post is deleted.
2002-09-01 14:34:38 +00:00
martin e6e769a9ea Updates and changes 2002-09-01 14:32:12 +00:00
martin 6621349c31 Moved valid_uploaded_file out to lib/moodlelib.php 2002-09-01 14:31:49 +00:00
martin 088a2b71fb Documentation on file sizes 2002-09-01 14:31:14 +00:00
martin f144c3054a DOn't print teachers with no authority 2002-09-01 14:30:39 +00:00
martin 44e2d2bb42 Functions moved here from files/index.php (related to file handling) 2002-09-01 14:29:17 +00:00
martin fedc147ef7 Moved some functions out to lib/moodlelib.php 2002-09-01 14:28:08 +00:00
martin 7b1c0ce35c Increased size of section summaries from 255 chars to 65000 chars. 2002-09-01 14:24:16 +00:00
martin 2f4de5e353 Mentioned that config.php needs to be edited using a *text editor* :-) 2002-08-31 02:44:21 +00:00
martin 26114038cc Prints an error message if theme can't be set 2002-08-30 16:02:10 +00:00
martin 54824c737d New strings for file management stuff 2002-08-30 13:28:57 +00:00
martin 0c377177ed Improved header now contains directory trail, and I internationalised
all the texts (buttons etc)
2002-08-30 13:18:06 +00:00
martin 2560d13338 Added slash after login to fix obscure problems on some servers 2002-08-28 15:53:39 +00:00
martin f06c1d62dc Added slash after login link ... some servers have problems without it 2002-08-28 15:28:30 +00:00
martin c21c671d74 Security fix for:
Internet Explorer bug that allows sends cookies to different sites if
  they have the same ending.  eg moodle.com cookie is sent to smec.moodle.com!!

  Also fixes case where multiple moodle installations may be in different
  directories on the same server.  When you go from one to the other the
  first session will be destroyed now (you can't be logged in the two
  at the same time).  It's just a lot safer this way, for now.

Basically this works by storing the wwwroot variable in the session
and checking it for every page.
2002-08-28 15:07:46 +00:00
martin 6e4c09db98 slasharguments wasn't being found (CFG not declared global) 2002-08-28 13:41:38 +00:00
martin 718deefdc8 Added powerpoint 2002-08-28 13:36:49 +00:00
martin 293eae6863 New icon 2002-08-28 13:36:36 +00:00
martin 5a34779307 Slight improvements to documentation 2002-08-28 13:20:20 +00:00
martin ca4f8eb868 Moved uploaded assignment files into a subdirectory called moddata,
where data from other modules can also live later on.

Also added a README for that directory to warn teachers not to mess
with it, version code to perform the upgrade, tweaks to assignment/lib.php
and a tweak to reading module so that assignment files aren't listed
in the list of possible readings (could get messy).
2002-08-28 13:07:10 +00:00
martin 4ea53d802f More details about Moodle futures 2002-08-28 03:45:18 +00:00
martin ee1ddef672 Tweak to side boxes 2002-08-26 20:45:01 +00:00
martin 915d17bb1e Further little tweak to front-page spacing 2002-08-26 20:41:02 +00:00
martin 670fddf176 Fix for front page case when no left column 2002-08-26 20:38:56 +00:00
martin 9ab327d6f7 Doesn't matter if user isn't provided 2002-08-26 11:04:01 +00:00
martin 5021d6acef MOODLE 1.0.1 RELEASED 2002-08-26 10:07:32 +00:00
martin 6e83bc8ea8 Upgraded version number to today, in anticipation of 1.0.1 2002-08-26 10:06:04 +00:00
martin 40b13d9ff4 Choose "general" forum now as a default 2002-08-26 10:01:46 +00:00
martin 248e837d24 New changes 2002-08-26 09:51:34 +00:00
martin 3f8247c2ea Changes to use a new configuration variable: CFG->slasharguments
If true, then display of user pictures or filenames will use the
method of providing arguments as "slash" arguments - this is much
better for caching, proxies, search engines etc.  Unfortunately
it doesn't seem to work on some PHP installations.

If false (the default), then a more compatible method is used
(ie usual way of passing parameters to scripts)
2002-08-26 09:48:00 +00:00
martin ef4743b9bf Slightly bigger window 2002-08-26 09:28:01 +00:00
martin 57fa46e2a2 Nicer display of earth plot now contains user's name as well 2002-08-26 09:25:24 +00:00
martin 9268aa19ec Fixes to use Moodle background colour 2002-08-26 09:16:52 +00:00
martin 8865d49d19 Added IP-Atlas to credits 2002-08-26 09:05:16 +00:00
martin ebea4e27cc Added popup links for IP addresses in logs (display IP location on world map) 2002-08-26 09:00:57 +00:00
martin 1864143c38 Adding IP-Atlas 1.0 to this distribution. I use it to provide maps
for IP addresses (in the logs).
2002-08-26 08:59:36 +00:00
martin 3335f6fbc6 Forums with many discussions (> 10) become abbreviated to a shorter display 2002-08-26 08:35:02 +00:00
martin 6f5db3b457 More direct link to index.php just in case they don't have index.php
set as a default page
2002-08-26 02:49:34 +00:00
martin 19a55d6776 Changes to improve layout and formatting on old Netscape (eg version 4) 2002-08-23 03:55:49 +00:00
martin b0cb5e2297 Check that PHP is a recent enough version (ie 4.1.0 or later) 2002-08-23 02:14:19 +00:00
martin 7b3be1b12d New space-removal works better if done before adding link tags :-) 2002-08-22 08:31:29 +00:00
martin 0ab851127f If a post is updated that is also a discussion definition, then the discussion
name is updated with the post subject.
2002-08-22 08:01:21 +00:00
martin 729be1ab37 Experimental filters to remove returns from before and after tags, which
should mean neater formatting of lists and so on.  Needs testing.
2002-08-22 07:53:41 +00:00
martin 793f20b885 Tweaks to creation of user account while searching for the login
problem some people are having ...
2002-08-22 06:41:30 +00:00
martin bd2ad32fba Added recent upgrades (course->guest, and user->maildisplay) 2002-08-22 06:40:48 +00:00
martin a628dad3a9 Notes about the necessity of cookies being allowed 2002-08-22 02:24:07 +00:00
martin 882408f3be Handy link to course page, after assigning teachers 2002-08-22 02:23:41 +00:00
martin 4a62a65900 Whoops! comment out of place 2002-08-22 01:24:06 +00:00
martin 28b1e3ecec Just some comments about not removing the Moodle logo from the front page. 2002-08-21 14:08:40 +00:00
martin ab24749566 Fixed dates when no-one is logged in (uses server time now, not GMT) 2002-08-21 13:55:49 +00:00
martin 55e078c0fa Users can now choose to hide their email address. In this initial version
there are three options:

0) Hide the email address from everyone (except the teacher of their course)
1) Allow everyone to see the email address, all the time.
2) Allow only participants in the same course to see the email address

Note, new field maildisplay in 'user'
2002-08-21 13:29:25 +00:00
martin 7363ff911f Fixed up guest access PROPERLY - it's now more obvious and simple for teachers
to set it how they want.  Guest access now has THREE states (off, on, on with key).
2002-08-21 12:54:27 +00:00
martin babab0e100 Improved explanations 2002-08-21 11:11:49 +00:00
martin 4b3c8ea7c4 Clarified the documentation here 2002-08-21 10:56:14 +00:00
martin 407a39277c Anchor name fix 2002-08-21 02:05:47 +00:00
martin 55dd0d3021 Improvements to install documentation 2002-08-21 01:57:21 +00:00
martin ee23de06c1 Bugfix for unenrolling old users 2002-08-20 09:39:23 +00:00
martin fec6290385 Slight formatting fix on list 2002-08-20 02:15:46 +00:00
607 changed files with 47793 additions and 19010 deletions
+3943 -158
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -30,3 +30,4 @@ in the "doc" directory or found at http://moodle.com/doc/.
Cheers!
Martin Dougiamas
+78
View File
@@ -0,0 +1,78 @@
<H3> Release notes for Moodle 1.0.6</H3>
<P> Major changes in this release (since 1.0.5): </P>
<UL><DL>
<DT> New feature - WYSIWYG Text editing!
<DD> A WYSIWYG text editor has been added to many of the forms in Moodle. These are currently
only visible when using Microsoft Internet Explorer 5.5 or later - other browsers see the
normal forms exactly as before.<BR><BR>
<DT> New feature - Quiz module!
<DD> Finally, the most requested new module is here! Multiple choice, short answer, and true-false
questions with automatic marking, multiple attempts, teacher regrading and many other features.
Questions are stored in a categorised database, and may be "published" to other courses.<BR><BR>
<DT> New feature - Grade manager!
<DD> A new tool has been added for teachers to see all grades for a course on one page.
You can also download/export grades as a tab-separated text file or an Excel
Spreadsheet. In future more features will be added to this page like sorting, manual
columns and calculations, but it's still pretty useful right now.<BR><BR>
<DT> New feature - LDAP authentication!
<DD> Moodle can now authenticate against external directories that use the
LDAP protocol (including Novell etc). Many thanks to Petri Asikainen for
developing this authentication plug-in!<BR><BR>
<DT> New feature - New smilies
<DD> Many new smilies have been added, and are now also accessible using a GUI in the text editor.<BR><BR>
<DT> Improved text editing
<DD> You can now include all major HTML tags in all texts. This is now safe because
of newly added functionality that strips all Javascript and faulty tags from texts
before they can cause security or display problems.<BR><BR>
<DT> Languages
<DD> German and Italian have been added! Many thanks to the translators (see the credits).<BR><BR>
<DT> Reading module => Resource module
<DD> After much thought and a vote of support (21 "yes" to 6 "no") on the "Using Moodle"
web site I changed the name of the "reading" module to "resource" (at the code level
and also the language packs). It was better to do this earlier than later.
This more generic name will be more meaningful to more people and opens the way to
some real development on a resource library.
But I don't want to ever change a module name again! :-)
If you have any hard-coded URLs pointing to readings that you don't want to break,
you can add a line like this to your Apache httpd.conf to redirect them:
<B><CODE>Redirect /mod/reading http://yourserver.com/mod/resource</CODE></B><BR><BR>
<FONT COLOR=RED>Note: if upgrading to 1.0.6 you may have some "reading" errors in "Recent activity" ... logging
out and then logging in again will fix this</FONT><BR><BR>
<DT> Other additions
<DD> An admin script to totally delete the Moodle data directory has been included (admin/delete.php)
for people who need to tear down a Moodle installation but don't have root access on their
server.<BR><BR>
<DT> Miscellaneous
<DD> Many small improvements have been made to the interface, and many small bugs have been fixed.
Some examples:
<UL>
<LI> Big "Edit this page" buttons at the top of pages (replacing the tiny icon)
<LI> LDAP authentication module (thanks to Petri)
<LI> Authentication from external sources can now import any fields
<LI> Student assignment list now shows submission status properly
<LI> Default language for users is now the site language
<LI> Users have a 'Change Password' button on their profile page
<LI> Journals that need teacher feedback are highlighted
<LI> More documentation and more context help buttons
<LI> Database-specific upgrade code
<LI> Uses character-set codes to make the browser do the right thing
<LI> User's name in footer is now a link
<LI> News and social forums are now editable
<LI> Forums that don't allow posting don't have uneccessary "discuss" links
<LI> Improved algorithm for shortening posts in forum listings
<LI> Choice module now allows up to six choices
</UL>
</DL></UL>
+66 -20
View File
@@ -9,34 +9,80 @@ information in files called version.php. There is
one of these for the main tables (in this directory)
and one for each module.
When upgrading from any previous version of Moodle,
all you normally will need to do is this:
In the following instructions I will include some
sample Unix shell commands - there are obviously
graphical ways to do the same things.
1) Make a backup of your current Moodle installation
in the unlikely case that something goes wrong and
you need to restore the older version.
2a) If you are using CVS, just go the root directory
and type "cvs update -d" (or whatever the equivalent
is on your non-Unix server).
Before the upgrade
------------------
OR
Before upgrading any version of Moodle, I recommend
making a backup copy of the moodle directory, your
data directory and your database, to guard against
the very unlikely event that something in the upgrade
goes wrong.
2b) Remove the current installation, and then unpack
the new tar or zip file in the same location.
Make sure you copy the config.php file from your
old installion to the new installation (or make a
new one by editing config-dist.php).
At the very least, make a copy of your config.php file
and any languages, custom themes or plug-ins you have
added to Moodle.
Upgrading the files using CVS
--------------------------------
If you are using CVS, just go to the Moodle root
directory and update the files:
cvs update -dP
If you have been editing Moodle files watch the
messages very closely for possible conflicts
(and consider sending your fixes in to me as patches :)
Upgrading the files using a downloaded archive
-------------------------------------------------
Rename the current installation directory (as backup)
mv moodle moodle.backup
and then unpack the new tar or zip file into the old
location. DO NOT OVERWRITE AN OLD INSTALLATION
unless you know what you are doing - sometimes old
files can cause problems in new installations.
tar xvzf moodle-1.0.6.tgz
Next, copy the config.php file from your old installation
into the new installation (or make a new one by editing
config-dist.php). If you have created new themes or
other plug-ins then make sure you copy those back too.
cp moodle.backup/config.php moodle
cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme
Finishing the upgrade
---------------------
Visit the admin page of your installation to complete
the upgrade (eg http://example.com/moodle/admin).
It doesn't matter if you are logged in as admin or not.
Moodle will automatically detect the new version
and perform any database or filesystem upgrades that
might be necessary.
If all goes well (no error messages) then you can just
go on using the new version!
3) Visit the home page of your installation. Moodle
will automatically detect the new version and perform
any database upgrades that might be necessary.
If all goes well (no error messages) then you can just
go on using Moodle normally.
If you have problems with this procedure, let me know.
Cheers,
Cheers, and have fun!
Martin
+196
View File
@@ -0,0 +1,196 @@
<FORM METHOD="post" action="config.php" NAME="form">
<TABLE cellpadding=9 cellspacing=0 >
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>auth:</TD>
<TD>
<? $modules = get_list_of_plugins("auth");
foreach ($modules as $module) {
$options[$module] = $module;
}
choose_from_menu ($options, "auth", $config->auth, "", "", "");
formerr($err["auth"]);
unset($options);
?>
</TD>
<TD>
<? print_string("configauth") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>lang:</TD>
<TD>
<? choose_from_menu (get_list_of_languages(), "lang", $config->lang, "", "", "");
formerr($err["lang"]);
?>
</TD>
<TD>
<? print_string("configlang") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>langdir:</TD>
<TD>
<? unset($options);
$options["LTR"] = get_string("langltr");
$options["RTL"] = get_string("langrtl");
choose_from_menu ($options, "langdir", $config->langdir, "", "", "");
?>
</TD>
<TD>
<? print_string("configlangdir") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>locale:</TD>
<TD>
<INPUT NAME=locale TYPE=text SIZE=10 VALUE="<?=$config->locale?>">
<? formerr($err["locale"]); ?>
</TD>
<TD>
<? print_string("configlocale") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>smtphosts:</TD>
<TD>
<INPUT NAME=smtphosts TYPE=text SIZE=30 VALUE="<?=$config->smtphosts?>">
<? formerr($err["smtphosts"]); ?>
</TD>
<TD>
<? print_string("configsmtphosts") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>gdversion:</TD>
<TD>
<? unset($options);
$options[0] = get_string("gdnot");
$options[1] = get_string("gd1");
$options[2] = get_string("gd2");
$installed = check_gd_version();
choose_from_menu ($options, "gdversion", $installed, "", "", "");
?>
</TD>
<TD>
<? print_string("configgdversion") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>htmleditor:</TD>
<TD>
<? unset($options);
$options[0] = get_string("allownot");
$options[1] = get_string("allow");
choose_from_menu ($options, "htmleditor", $config->htmleditor, "", "", "");
formerr($err["htmleditor"]);
?>
</TD>
<TD>
<? print_string("confightmleditor") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>maxeditingtime:</TD>
<TD>
<? $options[3600] = get_string("numminutes", "", 60);
$options[2700] = get_string("numminutes", "", 45);
$options[1800] = get_string("numminutes", "", 30);
$options[900] = get_string("numminutes", "", 15);
$options[300] = get_string("numminutes", "", 5);
$options[60] = get_string("numminutes", "", 1);
choose_from_menu ($options, "maxeditingtime", $config->maxeditingtime, "", "", "");
unset($options);
?>
</TD>
<TD>
<? print_string("configmaxeditingtime") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>longtimenosee:</TD>
<TD>
<? $options[1000] = get_string("numdays", "", 1000);
$options[365] = get_string("numdays", "", 365);
$options[180] = get_string("numdays", "", 180);
$options[150] = get_string("numdays", "", 150);
$options[120] = get_string("numdays", "", 120);
$options[90] = get_string("numdays", "", 90);
$options[60] = get_string("numdays", "", 60);
$options[30] = get_string("numdays", "", 30);
$options[7] = get_string("numdays", "", 7);
choose_from_menu ($options, "longtimenosee", $config->longtimenosee, "", "", "");
unset($options);
?>
</TD>
<TD>
<? print_string("configlongtimenosee") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>zip:</TD>
<TD>
<INPUT name=zip TYPE=text SIZE=30 VALUE="<?=$config->zip?>">
<? formerr($err["zip"]); ?>
</TD>
<TD>
<? print_string("configzip") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>unzip:</TD>
<TD>
<INPUT name=unzip TYPE=text SIZE=30 VALUE="<?=$config->unzip?>">
<? formerr($err["unzip"]); ?>
</TD>
<TD>
<? print_string("configunzip") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>slasharguments:</TD>
<TD>
<? $options[0] = "file.php?file=/pic.jpg";
$options[1] = "file.php/pic.jpg";
$installed = check_gd_version();
choose_from_menu ($options, "slasharguments", $config->slasharguments, "", "", "");
unset($options);
?>
</TD>
<TD>
<? print_string("configslasharguments") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>proxyhost:</TD>
<TD>
<INPUT name=proxyhost TYPE=text SIZE=30 VALUE="<?=$config->proxyhost?>">
<? formerr($err["proxyhost"]); ?>
</TD>
<TD ROWSPAN=2>
<? print_string("configproxyhost") ?>
</TD>
</TR>
<TR VALIGN=TOP>
<TD ALIGN=RIGHT><P>proxyport:</TD>
<TD>
<INPUT name=proxyport TYPE=text SIZE=5 VALUE="<?=$config->proxyport?>">
<? formerr($err["proxyport"]); ?>
</TD>
</TR>
<TR>
<TD COLSPAN=3 ALIGN=CENTER>
<INPUT TYPE="submit" VALUE="<? print_string("savechanges") ?>"></TD>
</TR>
</TABLE>
</FORM>
+110
View File
@@ -0,0 +1,110 @@
<?PHP // $Id$
// config.php - allows admin to edit all configuration variables
include("../config.php");
if (isset($phpinfo)) { // For debugging purposes, protected by password
if (md5($phpinfo) == "caf9b6b99962bf5c2264824231d7a40c") {
if ($site = get_site()) {
print_heading("$site->fullname");
}
phpinfo();
exit;
}
}
if (isset($config)) { // For debugging purposes, protected by password
if (md5($config) == "caf9b6b99962bf5c2264824231d7a40c") {
if ($site = get_site()) {
print_heading("$site->fullname");
}
$TEMPCFG = $CFG;
unset($TEMPCFG->dbuser);
unset($TEMPCFG->dbpass);
print_object($TEMPCFG);
exit;
}
}
if ($site = get_site()) { // If false then this is a new installation
require_login();
if (!isadmin()) {
error("Only the admin can use this page");
}
}
/// If data submitted, then process and store.
if (match_referer() && isset($HTTP_POST_VARS)) {
$config = (object)$HTTP_POST_VARS;
validate_form($config, $err);
if (count($err) == 0) {
print_header();
foreach ($config as $name => $value) {
unset($conf);
$conf->name = $name;
$conf->value = $value;
if ($current = get_record("config", "name", $name)) {
$conf->id = $current->id;
if (! update_record("config", $conf)) {
notify("Could not update $name to $value");
}
} else {
if (! insert_record("config", $conf)) {
notify("Error: could not add new variable $name !");
}
}
}
redirect("index.php", get_string("changessaved"), 1);
exit;
} else {
foreach ($err as $key => $value) {
$focus = "form.$key";
}
}
}
/// Otherwise fill and print the form.
if (!isset($config)) {
$config = $CFG;
}
$stradmin = get_string("administration");
$strconfigvariables = get_string("configvariables");
if ($site) {
print_header("$site->shortname: $strconfigvariables", "$site->fullname",
"<A HREF=\"index.php\">$stradmin</A> -> $strconfigvariables", "$focus");
print_heading($strconfigvariables);
} else {
print_header();
print_heading($strconfigvariables);
print_simple_box(get_string("configintro"), "center");
echo "<BR>";
}
print_simple_box_start("center", "", "$THEME->cellheading");
include("config.html");
print_simple_box_end();
print_footer();
exit;
/// Functions /////////////////////////////////////////////////////////////////
function validate_form(&$form, &$err) {
// if (empty($form->fullname))
// $err["fullname"] = get_string("missingsitename");
return;
}
?>
+2 -6
View File
@@ -43,14 +43,10 @@
$cutofftime = $timenow - ($CFG->longtimenosee * 3600 * 24);
if ($users = get_records_sql("SELECT u.* FROM user u, user_students s
WHERE lastaccess > '0' AND
lastaccess < '$cutofftime'
lastaccess < '$cutofftime' AND
u.id = s.user GROUP BY u.id")) {
foreach ($users as $user) {
if (delete_records("user_students", "user", $user->id)) {
// Delete other things ... this should be modular than it is right now:
delete_records("forum_subscriptions", "user", $user->id);
if (unenrol_student($user->id)) {
echo "Deleted student enrolment for $user->firstname $user->lastname ($user->id)\n";
}
}
+63
View File
@@ -0,0 +1,63 @@
<?PHP //$Id$
// Deletes the moodledata directory, COMPLETELY!!
// BE VERY CAREFUL USING THIS!
include("../config.php");
require_login();
if (!isadmin()) {
error("You must be admin to use this script!");
}
$deletedir = $CFG->dataroot; // The directory to delete!
if (!$sure) {
notice_yesno ("Are you completely sure you want to delete everything inside the directory $deletedir ?", "delete.php?sure=yes", "index.php");
exit;
}
if (!$reallysure) {
notice_yesno ("Are you REALLY REALLY completely sure you want to delete everything inside the directory $deletedir (this includes all user images, and any other course files that have been created) ?", "delete.php?sure=yes&reallysure=yes", "index.php");
exit;
}
/// OK, here goes ...
delete_subdirectories($deletedir);
echo "<H1 align=center>Done!</H1>";
print_continue($CFG->wwwroot);
exit;
function delete_subdirectories($rootdir) {
$dir = opendir($rootdir);
while ($file = readdir($dir)) {
if ($file != "." and $file != "..") {
$fullfile = "$rootdir/$file";
if (filetype($fullfile) == "dir") {
delete_subdirectories($fullfile);
echo "Deleting $fullfile ... ";
if (rmdir($fullfile)) {
echo "Done.<BR>";
} else {
echo "FAILED.<BR>";
}
} else {
echo "Deleting $fullfile ... ";
if (unlink("$fullfile")) {
echo "Done.<BR>";
} else {
echo "FAILED.<BR>";
}
}
}
}
closedir($dir);
}
?>
+90 -29
View File
@@ -3,11 +3,21 @@
require("../config.php");
/// Check that PHP is of a sufficient version
if ( ! check_php_version("4.1.0") ) {
$version = phpversion();
print_heading("Sorry, Moodle requires PHP 4.1.0 or later (currently using version $version)");
die;
}
/// Check that config.php has been edited
if ($CFG->wwwroot == "http://example.com/moodle") {
error("Moodle has not been configured yet. You need to to edit config.php first.");
}
// Check databases and modules and install as needed.
/// Check databases and modules and install as needed.
if (! $db->Metatables() ) {
if (!$agreelicence) {
@@ -43,25 +53,26 @@
die;
}
// Check version of Moodle code on disk compared with database
// and upgrade if possible.
/// Check version of Moodle code on disk compared with database
/// and upgrade if possible.
include_once("$CFG->dirroot/version.php"); # defines $version and upgrades
include_once("$CFG->dirroot/version.php"); # defines $version
include_once("$CFG->dirroot/lib/db/$CFG->dbtype.php"); # defines upgrades
if ($dversion = get_field("config", "value", "name", "version")) {
if ($version > $dversion) { // upgrade
$a->oldversion = $dversion;
if ($CFG->version) {
if ($version > $CFG->version) { // upgrade
$a->oldversion = $CFG->version;
$a->newversion = $version;
$strdatabasechecking = get_string("databasechecking", "", $a);
$strdatabasesuccess = get_string("databasesuccess");
print_header($strdatabaseupgrades, $strdatabaseupgrades, $strdatabaseupgrades);
print_header($strdatabasechecking, $strdatabasechecking, $strdatabasechecking);
notify($strdatabasechecking);
$db->debug=true;
if (upgrade_moodle($dversion)) {
if (main_upgrade($CFG->version)) {
$db->debug=false;
if (set_field("config", "value", "$version", "name", "version")) {
if (set_config("version", $version)) {
notify($strdatabasesuccess);
print_continue("$CFG->wwwroot");
print_continue("index.php");
die;
} else {
notify("Upgrade failed! (Could not update version in config table)");
@@ -70,22 +81,21 @@
$db->debug=false;
notify("Upgrade failed! See /version.php");
}
} else if ($version < $dversion) {
} else if ($version < $CFG->version) {
notify("WARNING!!! The code you are using is OLDER than the version that made these databases!");
}
} else {
$dversion->name = "version";
$dversion->value = $version;
$strdatabaseupgrades = get_string("databaseupgrades");
print_header($strdatabaseupgrades, $strdatabaseupgrades, $strdatabaseupgrades);
if (insert_record("config", $dversion)) {
notify("You are currently using Moodle version $version");
if (set_config("version", $version)) {
notify("You are currently using Moodle version $version (Release $release)");
print_continue("index.php");
die;
} else {
$db->debug=true;
if (upgrade_moodle(0)) {
if (main_upgrade(0)) {
print_continue("index.php");
} else {
error("A problem occurred inserting current version into databases");
@@ -94,10 +104,26 @@
}
}
/// Updated human-readable release version if necessary
// Find and check all modules and load them up or upgrade them if necessary
if ($release <> $CFG->release) { // Update the release version
$strdatabaseupgrades = get_string("databaseupgrades");
print_header($strdatabaseupgrades, $strdatabaseupgrades, $strdatabaseupgrades);
print_heading($release);
if (!set_config("release", $release)) {
notify("ERROR: Could not update release version in database!!");
}
print_continue("index.php");
print_simple_box_start("CENTER");
include("$CFG->dirroot/RELEASE.html");
print_simple_box_end();
print_continue("index.php");
exit;
}
/// Find and check all modules and load them up or upgrade them if necessary
if (!$mods = get_list_of_plugins("mod") ) {
error("No modules installed!");
}
@@ -108,6 +134,7 @@
unset($module);
include_once("$fullmod/version.php"); # defines $module with version etc
include_once("$fullmod/db/$CFG->dbtype.php"); # defines upgrading function
if (!isset($module)) {
continue;
@@ -166,38 +193,72 @@
die;
}
// Set up the overall site name etc.
/// Insert default values for any important configuration variables
include_once("$CFG->dirroot/lib/defaults.php");
$CFG = (array)$CFG;
foreach ($defaults as $name => $value) {
if (!isset($CFG[$name])) {
$config->name = $name;
$config->value = $CFG[$name] = $value;
insert_record("config", $config);
$configchange = true;
}
}
$CFG = (object)$CFG;
/// If any new configurations were found then send to the config page to check
if ($configchange) {
redirect("config.php");
}
/// Set up the overall site name etc.
if (! $site = get_site()) {
redirect("site.php");
}
/// Set up the admin user
if (! record_exists_sql("SELECT * FROM user_admins")) { // No admin user yet
redirect("user.php");
}
/// Check for valid admin user
if (!isadmin()) {
if (! record_exists_sql("SELECT * FROM user_admins")) {
redirect("user.php");
}
error("You need to be an admin user to use this page.", "$CFG->wwwroot/login/");
error("You need to be an admin user to use this page.", "$CFG->wwwroot/login/index.php");
}
// At this point, the databases exist, and the user is an admin
/// At this point everything is set up and the user is an admin, so print menu
$stradministration = get_string("administration");
print_header("$site->fullname: $stradministration","$site->fullname: $stradministration", "$stradministration");
print_header("$site->shortname: $stradministration","$site->fullname: $stradministration", "$stradministration");
$table->head = array (get_string("site"), get_string("courses"), get_string("users"));
$table->align = array ("CENTER", "CENTER", "CENTER");
$table->data[0][0] = "<P><A HREF=\"site.php\">".get_string("sitesettings")."</A></P>".
$table->data[0][0] = "<P><A HREF=\"config.php\">".get_string("configvariables")."</A></P>".
"<P><A HREF=\"site.php\">".get_string("sitesettings")."</A></P>".
"<P><A HREF=\"../course/log.php?id=$site->id\">".get_string("sitelogs")."</A></P>".
"<P><A HREF=\"../theme/index.php\">".get_string("choosetheme")."</A></P>";
"<P><A HREF=\"../theme/index.php\">".get_string("choosetheme")."</A></P>".
"<P><A HREF=\"lang.php\">".get_string("checklanguage")."</A></P>";
if (file_exists("$CFG->dirroot/admin/$CFG->dbtype")) {
$table->data[0][0] .= "<P><A HREF=\"$CFG->dbtype/\">".get_string("managedatabase")."</A></P>";
}
$table->data[0][1] = "<P><A HREF=\"../course/edit.php\">".get_string("addnewcourse")."</A></P>".
"<P><A HREF=\"../course/teacher.php\">".get_string("assignteachers")."</A></P>".
"<P><A HREF=\"../course/delete.php\">".get_string("deletecourse")."</A></P>";
"<P><A HREF=\"../course/delete.php\">".get_string("deletecourse")."</A></P>".
"<P><A HREF=\"../course/categories.php\">".get_string("categories")."</A></P>";
$table->data[0][2] = "<P><A HREF=\"user.php?newuser=true\">".get_string("addnewuser")."</A></P>".
"<P><A HREF=\"user.php\">".get_string("edituser")."</A></P>";
print_table($table);
print_footer();
print_heading("Moodle $CFG->release ($CFG->version)", "CENTER", 1);
print_footer($site);
?>
+273
View File
@@ -0,0 +1,273 @@
<?PHP // $Id$
require("../config.php");
optional_variable($mode, "");
require_login();
if (!isadmin()) {
error("You need to be admin to edit this page");
}
if (! $site = get_site()) {
error("Site not defined!");
}
$stradministration = get_string("administration");
$strchecklanguage = get_string("checklanguage");
$strcurrentlanguage = get_string("currentlanguage");
$strmissingstrings = get_string("missingstrings");
$strcomparelanguage = get_string("comparelanguage");
$strthislanguage = get_string("thislanguage");
switch ($mode) {
case "missing":
$navigation = "<A HREF=\"lang.php\">$strchecklanguage</A> -> $strmissingstrings";
$title = $strmissingstrings;
break;
case "compare":
$navigation = "<A HREF=\"lang.php\">$strchecklanguage</A> -> $strcomparelanguage";
$title = $strcomparelanguage;
break;
default:
$title = $strchecklanguage;
$navigation = $strchecklanguage;
break;
}
if ($USER->lang) {
$currentlang = $USER->lang;
} else {
$currentlang = $CFG->lang;
}
print_header("$site->shortname: $title", "$site->fullname",
"<A HREF=\"index.php\">$stradministration</A> -> $navigation");
if (!$mode) {
print_heading("$strcurrentlanguage: $currentlang - ".get_string("thislanguage"));
print_heading("<A HREF=\"lang.php?mode=missing\">$strmissingstrings</A>");
print_heading("<A HREF=\"lang.php?mode=compare\">$strcomparelanguage</A>");
print_footer();
exit;
}
// Get a list of all the root files in the English directory
$langdir = "$CFG->dirroot/lang/$currentlang";
$enlangdir = "$CFG->dirroot/lang/en";
if (! $stringfiles = get_directory_list($enlangdir, "", false)) {
error("Could not find English language pack!");
}
foreach ($stringfiles as $key => $file) {
if ($file == "README" or $file == "help" or $file == "docs") {
unset($stringfiles[$key]);
}
}
if ($mode == "missing") {
// For each file, check that a counterpart exists, then check all the strings
foreach ($stringfiles as $file) {
if (!file_exists("$langdir/$file")) {
echo "<P><FONT COLOR=red>".get_string("filemissing", "", "$langdir/$file")."</FONT></P>";
continue;
}
unset($string);
include("$enlangdir/$file");
$enstring = $string;
unset($string);
include("$langdir/$file");
$first = true;
foreach ($enstring as $key => $value) {
if (!isset($string[$key])) {
$value = htmlentities($value);
$value = str_replace("$"."a", "\\$"."a", $value);
if ($first) {
echo "</PRE><HR><P><B>".get_string("stringsnotset","","$langdir/$file")."</B></P><PRE>";
$first = false;
$somethingfound = true;
}
echo "$"."string[$key] = \"$value\";<BR>";
}
}
}
if (! $files = get_directory_list("$CFG->dirroot/lang/en/help", "CVS")) {
error("Could not find English language help files!");
}
foreach ($files as $filekey => $file) { // check all the help files.
if (!file_exists("$langdir/help/$file")) {
echo "<P><FONT COLOR=red>".get_string("filemissing", "", "$langdir/help/$file")."</FONT></P>";
$somethingfound = true;
continue;
}
}
if (! $files = get_directory_list("$CFG->dirroot/lang/en/docs", "CVS")) {
error("Could not find English language docs files!");
}
foreach ($files as $filekey => $file) { // check all the docs files.
if (!file_exists("$langdir/docs/$file")) {
echo "<P><FONT COLOR=red>".get_string("filemissing", "", "$langdir/docs/$file")."</FONT></P>";
$somethingfound = true;
continue;
}
}
if ($somethingfound) {
print_continue("lang.php");
} else {
notice(get_string("languagegood"), "lang.php");
}
} else if ($mode == "compare") {
if (isset($HTTP_POST_VARS['file'])){ // Save a file
$newstrings = $HTTP_POST_VARS;
$file = $newstrings['file'];
unset($newstrings['file']);
if (lang_save_file($langdir, $file, $newstrings)) {
notify(get_string("changessaved")." ($langdir/$file)");
} else {
error("Could not save the file '$file'!", "lang.php?mode=compare");
}
}
print_heading($strcomparelanguage);
echo "<CENTER>";
helpbutton("langedit",$strcomparelanguage);
echo "</CENTER>";
foreach ($stringfiles as $file) {
print_heading("$file", "LEFT", 4);
if (!file_exists("$langdir/$file")) {
echo "<P><FONT COLOR=red>".get_string("filemissing", "", "$langdir/$file")."</FONT></P>";
continue;
}
error_reporting(0);
if ($f = fopen("$langdir/$file","r+")) {
$editable = true;
fclose($f);
} else {
$editable = false;
echo "<P><FONT SIZE=1>".get_string("makeeditable", "", "$langdir/$file")."</FONT></P>";
}
error_reporting(7);
unset($string);
include("$enlangdir/$file");
$enstring = $string;
ksort($enstring);
unset($string);
include("$langdir/$file");
if ($editable) {
echo "<FORM NAME=\"$file\" ACTION=\"lang.php\" METHOD=\"POST\">";
}
echo "<TABLE WIDTH=\"100%\" CELLPADDING=2 CELLSPACING=3 BORDER=0>";
foreach ($enstring as $key => $envalue) {
$envalue = nl2br(htmlentities($envalue));
$envalue = str_replace("\$a","<B>\$a</B>", $envalue); // Make variables bold
// TODO: It would be nice if all the $a->something variables were bold too
echo "<TR>";
echo "<TD WIDTH=20% BGCOLOR=\"$THEME->cellheading\" NOWRAP VALIGN=TOP>$key</TD>";
echo "<TD WIDTH=40% BGCOLOR=\"$THEME->cellheading\" VALIGN=TOP>$envalue</TD>";
$value = str_replace("\\","",$string[$key]); // Delete all slashes
$value = htmlentities($value);
if ($editable) {
echo "<TD WIDTH=40% VALIGN=TOP>";
if (isset($string[$key])) {
$valuelen = strlen($value);
} else {
$valuelen = strlen($envalue);
}
$cols=50;
if (strstr($value, "\r") or strstr($value, "\n") or $valuelen > $cols) {
$rows = ceil($valuelen / $cols);
echo "<TEXTAREA NAME=\"string-$key\" cols=\"$cols\" rows=\"$rows\">$value</TEXTAREA>";
} else {
$cols = $valuelen + 2;
echo "<INPUT TYPE=\"TEXT\" NAME=\"string-$key\" VALUE=\"$value\" SIZE=\"$cols\"></TD>";
}
echo "</TD>";
} else {
if (isset($string[$key])) {
echo "<TD WIDTH=40% BGCOLOR=white VALIGN=TOP>$value</TD>";
} else {
echo "<TD WIDTH=40% BGCOLOR=white ALIGN=CENTER VALIGN=TOP>-</TD>";
}
}
}
if ($editable) {
echo "<TR><TD COLSPAN=2>&nbsp;<TD>";
echo " <INPUT TYPE=\"hidden\" NAME=\"file\" VALUE=\"$file\">";
echo " <INPUT TYPE=\"hidden\" NAME=\"mode\" VALUE=\"compare\">";
echo " <INPUT TYPE=\"submit\" NAME=\"update\" VALUE=\"".get_string("savechanges").": $file\">";
echo "</TD></TR>";
}
echo "</TABLE>";
echo "</FORM>";
}
print_continue("lang.php");
}
print_footer();
//////////////////////////////////////////////////////////////////////
function lang_save_file($path, $file, $strings) {
// Thanks to Petri Asikainen for the original version of code
// used to save language files.
//
// $path is a full pathname to the file
// $file is the file to overwrite.
// $strings is an array of strings to write
global $CFG;
error_reporting(0);
if (!$f = fopen("$path/$file","w")) {
return false;
}
error_reporting(7);
fwrite($f, "<?PHP // \$Id\$ \n");
fwrite($f, " // $file - created with Moodle $CFG->release ($CFG->version)\n\n\n");
ksort($strings);
foreach ($strings as $key => $value) {
list($id, $stringname) = explode("-",$key);
$value = str_replace("\\","",$value); // Delete all slashes
$value = str_replace("$"."a", "\\$"."a", $value); // Add slashes for $a
$value = str_replace("\"", "\\\"", $value); // Add slashes for "
if ($id == "string"){
fwrite($f,"\$string['$stringname'] = \"$value\";\n");
}
}
fwrite($f,"\n?>\n");
fclose($f);
return true;
}
?>
+7 -7
View File
@@ -23,17 +23,17 @@
if ($form->id) {
if (update_record("course", $form)) {
redirect("$CFG->wwwroot/admin/", "Changes saved");
redirect("index.php", get_string("changessaved"));
} else {
error("Serious Error! Could not update the site record! (id = $form->id)");
}
} else {
if ($newid = insert_record("course", $form)) {
$cat->name = "General";
$cat->name = get_string("miscellaneous");
if (insert_record("course_categories", $cat)) {
redirect("$CFG->wwwroot/admin/", "Changes saved", "1");
redirect("index.php", get_string("changessaved"), "1");
} else {
error("Serious Error! Could not set up the default categories!");
error("Serious Error! Could not set up a default course category!");
}
} else {
error("Serious Error! Could not set up the site!");
@@ -61,11 +61,11 @@
$stradmin = get_string("administration");
$strsitesettings = get_string("sitesettings");
print_header("$site->fullname", "$site->fullname",
"<A HREF=\"$CFG->wwwroot/admin/\">$stradmin</A> -> $strsitesettings", "$focus");
print_header("$site->shortname: $strsitesettings", "$site->fullname",
"<A HREF=\"index.php\">$stradmin</A> -> $strsitesettings", "$focus");
print_heading($strsitesettings);
print_simple_box_start("center", "", "$THEME->cellheading");
print_heading("Editing site settings");
include("site.html");
print_simple_box_end();
print_footer();
+103 -17
View File
@@ -4,13 +4,21 @@
require("../user/lib.php");
require("../lib/countries.php");
if (! record_exists_sql("SELECT * FROM user_admins")) {
optional_variable($newuser, "");
optional_variable($delete, "");
optional_variable($confirm, "");
optional_variable($sort, "name");
optional_variable($dir, "ASC");
if (! record_exists_sql("SELECT * FROM user_admins")) { // No admin user yet
$user->firstname = "Admin";
$user->lastname = "User";
$user->username = "admin";
$user->password = "";
$user->password = md5("admin");
$user->email = "root@localhost";
$user->confirmed = 1;
$user->lang = $CFG->lang;
$user->maildisplay = 1;
$user->timemodified = time();
if (! $user->id = insert_record("user", $user)) {
@@ -40,6 +48,7 @@
$USER = $user;
$USER->loggedin = true;
$USER->site = $CFG->wwwroot;
$USER->admin = true;
$USER->teacher["$site->id"] = true;
save_session("USER");
@@ -59,12 +68,12 @@
}
if ($newuser) { // Create a new user
$user->firstname = "";
$user->lastname = "";
$user->username = "changeme";
$user->password = "";
$user->email = "";
$user->lang = $CFG->lang;
$user->confirmed = 1;
$user->timemodified = time();
@@ -78,26 +87,103 @@
} else { // List all users for editing
if ($users = get_records_sql("SELECT * from user WHERE username <> 'guest' ORDER BY firstname")) {
$stredituser = get_string("edituser");
$stradministration = get_string("administration");
$stredit = get_string("edit");
$strdelete = get_string("delete");
$stredituser = get_string("edituser");
$stradministration = get_string("administration");
$stredit = get_string("edit");
$strdelete = get_string("delete");
$strdeletecheck = get_string("deletecheck");
print_header("$site->fullname : $stredituser", $site->fullname,
"<A HREF=\"$CFG->wwwroot/admin\">$stradministration</A> -> $stredituser");
print_header("$site->shortname: $stredituser", $site->fullname,
"<A HREF=\"index.php\">$stradministration</A> -> $stredituser");
if ($delete) { // Delete a selected user, after confirmation
if (!$user = get_record("user", "id", "$delete")) {
error("No such user!");
}
if ($confirm != md5($delete)) {
notice_yesno(get_string("deletecheckfull", "", "'$user->firstname $user->lastname'"),
"user.php?delete=$delete&confirm=".md5($delete), "user.php");
exit;
} else if (!$user->deleted) {
$user->deleted = "1";
$user->username = $user->email; // Remember it just in case
$user->email = ""; // Clear this field to free it up
$user->timemodified = time();
if (update_record("user", $user)) {
unenrol_student($user->id); // From all courses
remove_teacher($user->id); // From all courses
remove_admin($user->id);
notify(get_string("deletedactivity", "", "$user->firstname $user->lastname"));
} else {
notify(get_string("deletednot", "", "$user->firstname $user->lastname"));
}
}
}
// Carry on with the user listing
$columns = array("name", "email", "city", "country", "lastaccess");
foreach ($columns as $column) {
$string[$column] = get_string("$column");
$columnsort = "$column";
if ($column == "lastaccess") {
$columndir = "DESC";
} else {
$columndir = "ASC";
}
if ($columnsort == $sort) {
$$column = $string[$column];
} else {
$$column = "<A HREF=\"user.php?sort=$columnsort&dir=$columndir\">".$string[$column]."</A>";
}
}
if ($sort == "name") {
$sort = "firstname";
}
if ($users = get_records_sql("SELECT * from user WHERE username <> 'guest'
AND deleted <> '1' ORDER BY $sort $dir")) {
foreach ($users as $key => $user) {
$users[$key]->country = $COUNTRIES[$user->country];
}
if ($sort == "country") { // Need to resort by full country name, not code
foreach ($users as $user) {
$susers[$user->id] = $user->country;
}
asort($susers);
foreach ($susers as $key => $value) {
$nusers[] = $users[$key];
}
$users = $nusers;
}
print_heading(get_string("chooseuser"));
$table->head = array (get_string("fullname"), get_string("email"), get_string("city"),
get_string("country"), " ");
$table->align = array ("LEFT", "LEFT", "CENTER", "CENTER", "CENTER", "CENTER");
$table->head = array ($name, $email, $city, $country, $lastaccess, "", "");
$table->align = array ("LEFT", "LEFT", "LEFT", "LEFT", "LEFT", "CENTER", "CENTER");
$table->width = "95%";
foreach ($users as $user) {
if ($user->id == $USER->id or $user->username == "changeme") {
$deletebutton = "";
} else {
$deletebutton = "<A HREF=\"user.php?delete=$user->id\" TARGET=\"$strdeletecheck\">$strdelete</A>";
}
if ($user->lastaccess) {
$strlastaccess = format_time(time() - $user->lastaccess);
} else {
$strlastaccess = get_string("never");
}
$table->data[] = array ("<A HREF=\"../user/view.php?id=$user->id&course=$site->id\">$user->firstname $user->lastname</A>",
"$user->email",
"$user->city",
$COUNTRIES[$user->country],
"<A HREF=\"../user/edit.php?id=$user->id&course=$site->id\">$stredit</A>");
"$user->email",
"$user->city",
"$user->country",
$strlastaccess,
"<A HREF=\"../user/edit.php?id=$user->id&course=$site->id\">$stredit</A>",
$deletebutton);
}
print_table($table);
+43
View File
@@ -0,0 +1,43 @@
This directory contains authentication modules.
Each of these modules describes a different way to
check that a user has provided a correct
- username, and
- password.
Even when external forms of authentication are being
used, Moodle still maintains the internal "user" table
with all the associated information about that user such
as name, email address and so on.
The active method is set by the admin on the Configuration page.
email - authentication by email (DEFAULT METHOD)
- user fills out form with email address
- email sent to user with link
- user clicks on link in email to confirm
- user account is created
- user can log in
none - no authentication at all .. very insecure!!
- user logs in using ANY username and password
- if the username doesn't already exist then
a new account is created
- when user tries to access a course they
are forced to set up their account details
ldap - Uses an external LDAP server
- user logs in using username and password
- these are checked against an LDAP server
- if correct, user is logged in
- optionally, info is copied from the LDAP
database to the Moodle user database
(see the ldap/README for more details on config etc...)
+19
View File
@@ -0,0 +1,19 @@
<?PHP // $Id$
// Standard authentication function
function auth_user_login ($username, $password) {
// Returns true if the username and password work
// and false if they don't
global $CFG;
if (! $user = get_user_info_from_db("username", $username)) {
return false;
}
return ($user->password == md5($password));
}
?>
+38
View File
@@ -0,0 +1,38 @@
LDAP-module README
07.10.2002 Version 0.1, Petri Asikainen <paca@sci.fi>
Ldap-authetication module is work in progress.
Right now we are building config-interface to use also with all other auth-modules,
but it will take sometime.
If you like to try ldap-authentication now , create following $CFG->variables to
/moodle/config.php or directly to config-table and activate ldap authentication
from admin-configuration page.
Variable Description
$CFG->ldap_bind_dn "If your like to use bind-user to search
users, specify it here. Something like
'cn=ldapuser,ou=public,o=org'"
$CFG->ldap_bind_pw "Password for bind-user."
$CFG->ldap_contexts "List of contexts where users are located.
Separate different contexts with ';'.
Something like
'ou=users,o=org; ou=other,o=org'"
$CFG->ldap_host_url "Specify LDAP host in URL-form, like
'ldap://ldap.myorg.com/' or
'ldaps//ldap.myorg.com/' "
$CFG->ldap_search_sub "Put value <> 0 if you like to
search users from subcontexts.
(Subsearching is sometimes slow)"
$CFG->ldap_user_attribute "What attribute is used to name/search
users. Usually 'cn' when using
Novell e-directory
And if you like to _very_ experimental:
Edit /auth/ldap/lib.php function auth_get_userinfo() attribute-mappings and
set $CFG->auth_update_userinfo = 1
Then moodle will get user first-, lastname and other information from ldap
when user is login first time.
+156
View File
@@ -0,0 +1,156 @@
<?PHP
//CHANGELOG:
//03.10.2002 First version to CVS
//29.09.2002 Clean up and splitted code to functions v. 0.02
//29.09.2002 LDAP authentication functions v. 0.01
//Distributed under GPL (c)Petri Asikainen 2002
function auth_user_login ($username, $password) {
// Returns true if the username and password work
// and false if they don't
global $CFG;
$ldap_connection = auth_ldap_connect();
if($ldap_connection) {
$ldap_user_dn = auth_ldap_find_userdn($ldap_connection, $username);
//if ldap_user_dn is empty, user does not exist
if(!$ldap_user_dn){
return false;
}
// Try to bind with current username and password
$ldap_login = @ldap_bind($ldap_connection, $ldap_user_dn, $password);
if ($ldap_login) {
ldap_close($ldap_connection);
return true;
}
} else {
@ldap_close($ldap_connection);
error("LDAP-module cannot connect to server: $CFG->ldap_host_url");
return false ;
}
}
function auth_get_userinfo($username){
global $CFG;
//reads userinformation from ldap and return it in array()
$result = array();
$ldap_connection=auth_ldap_connect();
$moodleattributes = array();
//atribute mappings between moodle and ldap
$moodleattributes['firstname'] ='givenname';
$moodleattributes['lastname'] ='sn';
$moodleattributes['email'] ='mail';
$moodleattributes['phone1'] ='telephonenumber';
//$moodleattributes['phone2'] ='facsimiletelephonenumber';
//$moodleattributes['institution'] ='institution';
$moodleattributes['department'] ='ou';
$moodleattributes['address'] ='street';
$moodleattributes['city'] ='physicaldeliveryofficename';
//$moodleattributes['country'] ='country';
$moodleattributes['description'] ='description';
$search_attribs = array();
foreach ($moodleattributes as $key=>$value) {
array_push($search_attribs, $value);
}
$user_dn = auth_ldap_find_userdn($ldap_connection, $username);
$user_info_result = ldap_read($ldap_connection,$user_dn,"objectClass=*", $search_attribs);
if ($user_info_result) {
$user_entry = ldap_get_entries($ldap_connection, $user_info_result);
foreach ($moodleattributes as $key=>$value){
if(isset($user_entry[0][$value][0])){
$result[$key]=$user_entry[0][$value][0];
}
}
}
@ldap_close($ldap_connection);
//Hardcoded defaults
if(! isset($result['description'])) {
$result['description'] = "Description";
}
$result['country']='FI';
return $result;
}
function auth_ldap_connect(){
//connects to ldap-server
global $CFG;
$result = ldap_connect($CFG->ldap_host_url);
if ($result) {
return $result;
} else {
error("LDAP-module cannot connect to server: $CFG->ldap_host_url");
return false;
}
}
function auth_ldap_bind($ldap_connection){
//makes bind to ldap for searching users
//uses ldap_bind_dn or anonymous bind
global $CFG;
if ($CFG->ldap_bind_dn){
//bind with search-user
if (!ldap_bind($ldap_connection, $CFG->ldap_bind_dn,$CFG->ldap_bind_pw)){
error("Error: could not bind ldap with ldap_bind_dn/pw");
return false;
}
}else{
//bind anonymously
if ( !ldap_bind($ldap_connection)){
error("Error: could not bind ldap anonymously");
return false;
}
}
return true;
}
function auth_ldap_find_userdn ($ldap_connection, $username){
//return dn of username
//like: cn=username,ou=suborg,o=org
//or false if username not found
global $CFG;
//default return value
$ldap_user_dn = FALSE;
auth_ldap_bind($ldap_connection);
//get all contexts and look for first matching user
$ldap_contexts = explode(";",$CFG->ldap_contexts);
foreach($ldap_contexts as $context) {
$context == trim($context);
if($CFG->ldap_search_sub){
//use ldap_search to find first user from subtree
$ldap_result = ldap_search($ldap_connection, $context, "(".$CFG->ldap_user_attribute."=".$username.")");
} else {
//search only in this context
$ldap_result = ldap_list($ldap_connection, $context, "(".$CFG->ldap_user_attribute."=".$username.")");
}
$entry = ldap_first_entry($ldap_connection,$ldap_result);
if ($entry){
$ldap_user_dn = ldap_get_dn($ldap_connection, $entry);
break ;
}
}
return $ldap_user_dn;
}
?>
+17
View File
@@ -0,0 +1,17 @@
<?PHP // $Id$
// No authentication at all. This method approves everything!
function auth_user_login ($username, $password) {
// Returns true if the username doesn't exist yet
// Returns true if the username and password work
if (! $user = get_user_info_from_db("username", $username)) {
return true;
}
return ($user->password == md5($password));
}
?>
+51 -86
View File
@@ -1,111 +1,76 @@
<?PHP // $Id$
///////////////////////////////////////////////////////////////////////////
//
// Moodle configuration file
//
// This file should be located in the top-level directory.
//
// //
// Moodle configuration file //
// //
// This file should be renamed "config.php" in the top-level directory //
// //
///////////////////////////////////////////////////////////////////////////
// //
// NOTICE OF COPYRIGHT //
// //
// Moodle - Modular Object-Oriented Dynamic Learning Environment //
// http://moodle.com //
// //
// Copyright (C) 2001-2002 Martin Dougiamas http://dougiamas.com //
// //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details: //
// //
// http://www.gnu.org/copyleft/gpl.html //
// //
///////////////////////////////////////////////////////////////////////////
//
// NOTICE OF COPYRIGHT
//
// Moodle - Modular Object-Oriented Dynamic Learning Environment
// http://moodle.com
//
// Copyright (C) 2001 Martin Dougiamas http://dougiamas.com
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details:
//
// http://www.gnu.org/copyleft/gpl.html
//
////////////////////////////////////////////////////////////////////////////
//
// Site configuration variables are all stored in the CFG object.
// First, you need to configure the database where all Moodle data
// will be stored. This database must already have been created
// and a username/password created to access it. See doc/INSTALL.
$CFG->dbtype = "mysql"; // eg mysql (postgres7, oracle, access etc coming soon)
$CFG->dbhost = "localhost"; // eg localhost
$CFG->dbname = "moodle"; // eg moodle
///////////////////////////////////////////////////////////////////////////
// First, you need to configure the database where all Moodle data //
// will be stored. This database must already have been created //
// and a username/password created to access it. If you specify mysql //
// then Moodle can set up all your tables for you. If you try to use //
// a different database you will need to set up all your tables by hand //
// which could be a big job. See doc/install.html //
$CFG->dbtype = "mysql"; // eg mysql (postgres7, oracle, access etc)
$CFG->dbhost = "localhost"; // eg localhost
$CFG->dbname = "moodle"; // eg moodle
$CFG->dbuser = "username";
$CFG->dbpass = "password";
// Next you need to tell Moodle where it is located.
// Specify the full URL that moodle has been installed in:
///////////////////////////////////////////////////////////////////////////
// Now you need to tell Moodle where it is located. Specify the full
// web address where moodle has been installed (without trailing slash)
$CFG->wwwroot = "http://example.com/moodle";
// and now the full OS directory path to this same location:
///////////////////////////////////////////////////////////////////////////
// Next, specify the full OS directory path to this same location
// For Windows this might be something like "C:\apache\htdocs\moodle"
$CFG->dirroot = "/web/moodle";
// Now you need a place where Moodle can save uploaded files. This directory
// should be writeable by the web server user (usually 'nobody' or 'apache'),
// but it should not be accessible directly via the web.
///////////////////////////////////////////////////////////////////////////
// Now you need a place where Moodle can save uploaded files. This
// directory should be writeable by the web server user (usually 'nobody'
// or 'apache'), but it should not be accessible directly via the web.
$CFG->dataroot = "/home/moodledata";
// Choose a sitewide language - this will affect text, buttons etc
// See lib/languages.php for a full list of standard language codes.
$CFG->lang = "en"; // Currently the only option
// Choose a sitewide locale - this will affect the display of dates
// You need to have this locale data installed on your operating
// system. If you don't know what to choose try using the same
// string as the language.
$CFG->locale = "en";
// Give the full names of local SMTP servers that Moodle should use to
// send mail (eg "mail.a.com" or "mail.a.com;mail.b.com").
// If this is left empty (eg "") then Moodle will attempt to use PHP mail.
$CFG->smtphosts = "";
// There is no way, currently, for PHP to automatically tell whether the
// graphic library GD is version 1.* or 2.*. Specify here (either 1 or 2).
$CFG->gdversion = 1;
// If students haven't logged in for a very long time, then they are
// automatically unsubscribed from courses. This parameter specifies
// that time limit, in DAYS.
$CFG->longtimenosee = 100;
// These programs are used by the file management code to zip and unzip
// uploaded files. This only works on Unix systems right now.
$CFG->zip = "/usr/bin/zip";
$CFG->unzip = "/usr/bin/unzip";
// You should not need to change anything else. To continue setting up
// Moodle, use your web browser to go to the moodle/admin web page.
///////////////////////////////////////////////////////////////////////////
// To continue the setup, use your web browser to go to your Moodle page //
///////////////////////////////////////////////////////////////////////////
$CFG->libdir = "$CFG->dirroot/lib";
require("$CFG->libdir/setup.php"); // Sets up all libraries, sessions etc
$CFG->libdir = "$CFG->dirroot/lib"; // Do not change this
require("$CFG->libdir/setup.php"); // Do not change this
?>
+123
View File
@@ -0,0 +1,123 @@
<?PHP // $Id$
// Allows the admin to create, delete and rename course categories
require("../config.php");
require("lib.php");
if (!isadmin()) {
error("Only administrators can use this course!");
}
if (!$site = get_site()) {
error("Site isn't defined!");
}
/// Print headings
$stradministration = get_string("administration");
$strcategories = get_string("categories");
$strcategory = get_string("category");
$strcourses = get_string("courses");
$stredit = get_string("edit");
$strdelete = get_string("delete");
$straction = get_string("action");
$stradd = get_string("add");
print_header("$site->shortname: $strcategories", "$site->fullname",
"<A HREF=\"$CFG->wwwroot/admin\">$stradministration</A> -> $strcategories");
print_heading($strcategories);
/// If data submitted, then process and store.
if (match_referer() && isset($HTTP_POST_VARS)) {
$categories = array();
// Peel out all the data from variable names.
foreach ($HTTP_POST_VARS as $key => $val) {
if ($key == "new" and $val != "") {
$cat->name = $val;
if (!insert_record("course_categories", $cat)) {
error("Could not insert the new category '$val'");
} else {
notify(get_string("categoryadded", "", $val));
}
} else {
$cat->id = substr($key,1);
$cat->name = $val;
if (!update_record("course_categories", $cat)) {
error("Could not update the category '$val'");
}
}
}
}
/// Get the existing categories
if (!$categories = get_all_categories()) {
// Try and make one
$cat->name = get_string("miscellaneous");
if ($cat->id = insert_record("course_categories", $cat)) {
$categories[$cat->id] = $cat;
} else {
error("Serious error: Could not create a default category!");
}
}
/// Delete category if the user wants to delete it
if (isset($delete)) {
if (delete_records("course_categories", "id", $delete)) {
notify(get_string("categorydeleted", "", $categories[$delete]->name));
unset($categories[$delete]);
} else {
error("An error occurred while trying to delete a category");
}
}
/// Find lowest ID category - this is the default category
$default = 99999;
foreach ($categories as $category) {
if ($category->id < $default) {
$default = $category->id;
}
}
/// Find any orphan courses that don't yet have a valid category and set to default
if ($courses = get_records_sql("SELECT * FROM course WHERE category > 0")) {
foreach ($courses as $course) {
if (!isset( $categories[$course->category] )) {
set_field("course", "category", $default, "id", $course->id);
}
}
}
/// Print the table of all categories
$table->head = array ($strcategory, $strcourses, $straction);
$table->align = array ("LEFT", "CENTER", "CENTER");
$table->size = array ("50", "20", "20");
$table->width = 100;
echo "<FORM ACTION=categories.php METHOD=post>";
foreach ($categories as $category) {
$count = count_records("course", "category", $category->id);
if ($category->id == $default) {
$delete = ""; // Can't delete default category
} else {
$delete = "<A HREF=\"categories.php?delete=$category->id\">$strdelete</A>";
}
$table->data[] = array ("<INPUT TYPE=text NAME=\"c$category->id\" VALUE=\"$category->name\" SIZE=30>",
"<A HREF=\"index.php?category=$category->id\">$count</A>", $delete);
}
$table->data[] = array ("<INPUT TYPE=text NAME=\"new\" VALUE=\"\" SIZE=30>", "", "$stradd");
print_table($table);
echo "<CENTER><BR><INPUT TYPE=submit VALUE=\"".get_string("savechanges")."\"> ";
echo "</CENTER>";
echo "</FORM>";
print_footer();
?>
+3 -3
View File
@@ -20,7 +20,7 @@
$stradministration = get_string("administration");
if (!$id) {
print_header("$site->fullname : $strdeletecourse", $site->fullname,
print_header("$site->shortname: $strdeletecourse", $site->fullname,
"<A HREF=\"$CFG->wwwroot/admin\">$stradministration</A> -> $strdeletecourse");
if ($courses = get_records_sql("SELECT * from course WHERE category > 0 ORDER BY fullname")) {
@@ -45,7 +45,7 @@
if (! $delete) {
$strdeletecheck = get_string("deletecheck", "", $course->shortname);
$strdeletecoursecheck = get_string("deletecoursecheck");
print_header("$site->fullname : $strdeletecheck", $site->fullname,
print_header("$site->shortname: $strdeletecheck", $site->fullname,
"<A HREF=\"$CFG->wwwroot/admin\">$stradministration</A> ->
<A HREF=\"delete.php\">$strdeletecourse</A> -> $strdeletecheck");
@@ -62,7 +62,7 @@
// OK checks done, delete the course now.
$strdeletingcourse = get_string("deletingcourse", "", $course->shortname);
print_header("$site->fullname : $strdeletingcourse", $site->fullname,
print_header("$site->shortname: $strdeletingcourse", $site->fullname,
"<A HREF=\"$CFG->wwwroot/admin\">$stradministration</A> ->
<A HREF=\"delete.php\">$strdeletecourse</A> -> $strdeletingcourse");
+14 -1
View File
@@ -33,6 +33,7 @@
<td><?
$choices["0"] = get_string("guestsno");
$choices["1"] = get_string("guestsyes");
$choices["2"] = get_string("guestskey");
choose_from_menu ($choices, "guest", $form->guest, "");
helpbutton("guestaccess", get_string("opentoguests")); ?>
</td>
@@ -89,7 +90,7 @@
<tr valign=top>
<td><P><? print_string("numberweeks") ?>:</td>
<td><?
for ($i=1; $i<=20; $i++) {
for ($i=1; $i<=52; $i++) {
$sectionmenu[$i] = "$i";
}
choose_from_menu ($sectionmenu, "numsections", "$form->numsections");
@@ -103,12 +104,24 @@
(<? print_string("wordforteachereg") ?>) <? formerr($err["teacher"]) ?>
</td>
</tr>
<tr valign=top>
<td><P><? print_string("wordforteachers") ?>:</td>
<td><input type="text" name="teachers" size=25 value="<? p($form->teachers) ?>">
(<? print_string("wordforteacherseg") ?>) <? formerr($err["teachers"]) ?>
</td>
</tr>
<tr valign=top>
<td><P><? print_string("wordforstudent") ?>:</td>
<td><input type="text" name="student" size=25 value="<? p($form->student) ?>">
(<? print_string("wordforstudenteg") ?>) <? formerr($err["student"]) ?>
</td>
</tr>
<tr valign=top>
<td><P><? print_string("wordforstudents") ?>:</td>
<td><input type="text" name="students" size=25 value="<? p($form->students) ?>">
(<? print_string("wordforstudentseg") ?>) <? formerr($err["students"]) ?>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="<? print_string("savechanges") ?>"></td>
+4 -2
View File
@@ -84,7 +84,9 @@
$form->fullname = get_string("defaultcoursefullname");
$form->shortname = get_string("defaultcourseshortname");
$form->teacher = get_string("defaultcourseteacher");
$form->teachers = get_string("defaultcourseteachers");
$form->student = get_string("defaultcoursestudent");
$form->students = get_string("defaultcoursestudents");
$form->summary = get_string("defaultcoursesummary");
$form->format = "weeks";
$form->numsections = 10;
@@ -110,13 +112,13 @@
"<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A>
-> $streditcoursesettings", $focus);
} else {
print_header("$site->shortname : $straddnewcourse", "$site->fullname",
print_header("$site->shortname: $straddnewcourse", "$site->fullname",
"<A HREF=\"$CFG->wwwroot/admin/\">$stradministration</A>
-> $straddnewcourse", $focus);
}
print_simple_box_start("center", "", "$THEME->cellheading");
print_heading($streditcoursesettings);
print_simple_box_start("center", "", "$THEME->cellheading");
include("edit.html");
print_simple_box_end();
-1
View File
@@ -2,7 +2,6 @@
<FORM name="form" method="post" action="editsection.php">
<P><B><? print_string("summaryof", "", "$sectionname $form->section") ?></B></P>
<TEXTAREA NAME=summary COLS=60 ROWS=4 WRAP=virtual><?=$form->summary ?></TEXTAREA>
<BR><FONT SIZE=1>(<? print_string("maximumchars", "", "255") ?>)</FONT>
<P>
<INPUT type="hidden" name=id value="<?=$form->id ?>">
<INPUT type="submit" value="<? print_string("savechanges") ?>">
+1 -1
View File
@@ -30,7 +30,7 @@
<td width=50%>
<table cellpadding=1 cellspacing=0><tr>
<td><input type=submit value="<? print_string("login") ?>"></form></td>
<td><form action="<?=$CFG->wwwroot?>/" method=post>
<td><form action="<?=$CFG->wwwroot?>/index.php" method=post>
<input type=submit value="<? print_string("cancel") ?>"></form></td>
</tr></table>
+2 -2
View File
@@ -19,7 +19,7 @@
add_to_log($course->id, "course", "guest", "view.php?id=$course->id", "$REMOTE_ADDR, $REMOTE_HOST");
} else {
if (! enrol_student_in_course($USER->id, $course->id)) {
if (! enrol_student($USER->id, $course->id)) {
error("An error occurred while trying to enrol you.");
}
@@ -65,7 +65,7 @@
if (isguest()) {
add_to_log($course->id, "course", "guest", "view.php?id=$course->id", "$USER->id");
} else {
if (! enrol_student_in_course($USER->id, $course->id)) {
if (! enrol_student($USER->id, $course->id)) {
error("An error occurred while trying to enrol you.");
}
add_to_log($course->id, "course", "enrol", "view.php?id=$course->id", "$USER->id");
+209
View File
@@ -0,0 +1,209 @@
<?PHP // $Id$
// Displays all grades for a course
require("../config.php");
require("lib.php");
require("$CFG->libdir/psxlsgen.php");
require_variable($id); // course id
optional_variable($download, ""); // to download data
if (! $course = get_record("course", "id", $id)) {
error("Course ID was incorrect");
}
require_login($course->id);
if (!isteacher($course->id)) {
error("Only teachers can use this page!");
}
$strgrades = get_string("grades");
$strgrade = get_string("grade");
$strmax = get_string("maximumshort");
$stractivityreport = get_string("activityreport");
/// Get a list of all students
if (!$students = get_course_students($course->id)) {
print_heading(get_string("nostudentsyet"));
print_footer($course);
exit;
}
foreach ($students as $student) {
$grades[$student->id] = array(); // Collect all grades in this array
$totals[$student->id] = array(); // Collect all totals in this array
}
$columns = array(); // Accumulate column names in this array.
$columnhtml = array(); // Accumulate column html in this array.
/// Collect modules data
get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused, $modsectioncounts);
/// Search through all the modules, pulling out grade data
$sections = get_all_sections($course->id); // Sort everything the same as the course
for ($i=0; $i<=$course->numsections; $i++) {
if (isset($sections[$i])) { // should always be true
$section = $sections[$i];
if ($section->sequence) {
$sectionmods = explode(",", $section->sequence);
foreach ($sectionmods as $sectionmod) {
$mod = $mods[$sectionmod];
$instance = get_record("$mod->modname", "id", "$mod->instance");
$libfile = "$CFG->dirroot/mod/$mod->modname/lib.php";
if (file_exists($libfile)) {
require_once($libfile);
$gradefunction = $mod->modname."_grades";
if (function_exists($gradefunction)) { // Skip modules without grade function
if ($modgrades = $gradefunction($mod->instance)) {
if ($modgrades->maxgrade) {
$maxgrade = "<BR>$strmax: $modgrades->maxgrade";
} else {
$maxgrade = "";
}
$image = "<A HREF=\"$CFG->wwwroot/mod/$mod->modname/view.php?id=$mod->id\"".
" TITLE=\"$mod->modfullname\">".
"<IMG BORDER=0 VALIGN=absmiddle SRC=\"../mod/$mod->modname/icon.gif\" ".
"HEIGHT=16 WIDTH=16 ALT=\"$mod->modfullname\"></A>";
$columnhtml[] = "$image ".
"<A HREF=\"$CFG->wwwroot/mod/$mod->modname/view.php?id=$mod->id\">".
"$instance->name".
"</A>$maxgrade";
$columns[] = "$mod->modfullname: $instance->name - $modgrades->maxgrade";
foreach ($students as $student) {
$grades[$student->id][] = $modgrades->grades[$student->id]; // may be empty, that's ok
if ($modgrades->maxgrade) {
$totals[$student->id] = (float)($totals[$student->id]) + (float)($modgrades->grades[$student->id]);
}
}
}
}
}
}
}
}
} // a new Moodle nesting record? ;-)
/// OK, we have all the data, now present it to the user
if ($download == "xls") {
$myxls = new PhpSimpleXlsGen();
$myxls->totalcol = count($columns) + 5;
/// Print names of all the fields
$myxls->ChangePos(0,0);
$myxls->InsertText(get_string("firstname"));
$myxls->InsertText(get_string("lastname"));
foreach ($columns as $column) {
$myxls->InsertText($column);
}
$myxls->InsertText(get_string("total"));
/// Print all the lines of data.
$i = 0;
foreach ($grades as $studentid => $studentgrades) {
$i++;
$student = $students[$studentid];
$myxls->ChangePos($i,0);
$myxls->InsertText($student->firstname);
$myxls->InsertText($student->lastname);
foreach ($studentgrades as $grade) {
$myxls->InsertText($grade);
}
$myxls->InsertNumber($totals[$student->id]);
}
$myxls->SendFile("$course->shortname $strgrades");
exit;
} else if ($download == "txt") {
/// Print header to force download
header("Content-Type: application/download\n");
header("Content-Disposition: attachment; filename=\"$course->shortname $strgrades.txt\"");
/// Print names of all the fields
echo get_string("firstname")."\t".get_string("lastname");
foreach ($columns as $column) {
echo "\t$column";
}
echo "\t".get_string("total")."\n";
/// Print all the lines of data.
foreach ($grades as $studentid => $studentgrades) {
$student = $students[$studentid];
echo "$student->firstname\t$student->lastname";
foreach ($studentgrades as $grade) {
echo "\t$grade";
}
echo "\t".$totals[$student->id];
echo "\n";
}
exit;
} else { // Just print the web page
print_header("$course->shortname: $strgrades", "$course->fullname",
"<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A>
-> $strgrades");
print_heading($strgrades);
$table->head = array_merge(array ("", get_string("name")), $columnhtml, get_string("total"));
$table->width = array(35, "");
$table->align = array("LEFT", "LEFT");
foreach ($columns as $column) {
$table->width[] = "";
$table->align[] = "CENTER";
}
$table->width[] = "";
$table->align[] = "CENTER";
foreach ($grades as $studentid => $studentgrades) {
$student = $students[$studentid];
$picture = print_user_picture($student->id, $course->id, $student->picture, false, true);
$name = array ("$picture", "<A TITLE=\"$stractivityreport\" HREF=\"user.php?id=$course->id&user=$student->id\">$student->firstname&nbsp;$student->lastname</A>");
$total = array ($totals[$student->id]);
$table->data[] = array_merge($name, $studentgrades, $total);
}
print_table($table);
echo "<TABLE BORDER=0 ALIGN=CENTER><TR>";
echo "<TD>";
$options["id"] = "$course->id";
$options["download"] = "xls";
print_single_button("grades.php", $options, get_string("downloadexcel"));
echo "<TD>";
$options["download"] = "txt";
print_single_button("grades.php", $options, get_string("downloadtext"));
echo "</TABLE>";
print_footer($course);
}
?>
+42 -5
View File
@@ -4,15 +4,52 @@
require("../config.php");
require("lib.php");
$title = get_string("courses");
optional_variable($category, "");
print_header($title, $title, $title, "");
$strcourses = get_string("courses");
$strcategories = get_string("categories");
$strmycourses = get_string("mycourses");
$strfulllistofcourses = get_string("fulllistofcourses");
optional_variable($cat, 1);
if (!$categories = get_all_categories()) {
error("Could not find any course categories!");
}
echo "<TABLE WIDTH=80% ALIGN=CENTER><TR><TD>";
if ($category == "all") {
$title = $strfulllistofcourses;
$navigation = "<A HREF=\"index.php\">$strcourses</A> -> $title";
} else if ($category == "my") {
$title = $strmycourses;
$navigation = "<A HREF=\"index.php\">$strcourses</A> -> $title";
} else if (isset($categories[$category])) {
$title = $categories[$category]->name;
$navigation = "<A HREF=\"index.php\">$strcourses</A> -> $title";
} else {
$navigation = $strcourses;
}
print_all_courses($cat);
print_header($strcourses, $strcourses, $navigation);
$showcategories = (count($categories) > 1);
if ($showcategories) {
echo "<TABLE WIDTH=\"100%\" CELLPADDING=10 BORDER=0>";
echo "<TR><TD WIDTH=180 VALIGN=TOP>";
print_simple_box($strcategories, "CENTER", 180, $THEME->cellheading);
print_course_categories($categories, $category, 180);
echo "</TD><TD WIDTH=\"100%\" VALIGN=TOP>";
} else {
echo "<TABLE WIDTH=80% ALIGN=CENTER><TR><TD VALIGN=top>";
$category="all";
unset($title);
}
if ($category) {
if (isset($title)) {
print_simple_box($title, "CENTER", "100%", $THEME->cellheading);
}
echo "<BR>";
print_all_courses($category);
}
echo "</TD></TR></TABLE>";
+176 -143
View File
@@ -31,6 +31,9 @@ function print_log_selector_form($course, $selecteduser=0, $selecteddate="today"
$users["$teacher->id"] = "$teacher->firstname $teacher->lastname";
}
}
if ($guest = get_user_info_from_db("username", "guest")) {
$users["$guest->id"] = "$guest->firstname $guest->lastname";
}
}
if (isadmin()) {
@@ -158,7 +161,9 @@ function print_log($course, $user=0, $date=0, $order="ORDER BY l.time ASC") {
}
echo "<TD NOWRAP ALIGN=right><FONT SIZE=2>".userdate($log->time, "%A")."</TD>";
echo "<TD NOWRAP><FONT SIZE=2>".userdate($log->time, "%e %B %Y, %I:%M %p")."</TD>";
echo "<TD NOWRAP><FONT SIZE=2>$log->ip</TD>";
echo "<TD NOWRAP><FONT SIZE=2>";
link_to_popup_window("$CFG->wwwroot/lib/ipatlas/plot.php?address=$log->ip&user=$log->user", "ipatlas","$log->ip", 400, 700);
echo "</TD>";
echo "<TD NOWRAP><FONT SIZE=2><A HREF=\"../user/view.php?id=$log->user&course=$log->course\"><B>$log->firstname $log->lastname</B></TD>";
echo "<TD NOWRAP><FONT SIZE=2>";
link_to_popup_window( make_log_url($log->module,$log->url), "fromloglive","$log->module $log->action", 400, 600);
@@ -170,10 +175,28 @@ function print_log($course, $user=0, $date=0, $order="ORDER BY l.time ASC") {
}
function print_all_courses($cat=1, $style="full", $maxcount=999) {
global $CFG;
function print_all_courses($category="all", $style="full", $maxcount=999) {
global $CFG, $USER;
if ($courses = get_records("course", "category", $cat, "fullname ASC")) {
if ($category == "all") {
$courses = get_records_sql("SELECT * FROM course WHERE category > 0 ORDER BY fullname ASC");
} else if ($category == "my") {
if (isset($USER->id)) {
if ($courses = get_records_sql("SELECT * FROM course WHERE category > 0 ORDER BY fullname ASC")) {
foreach ($courses as $key => $course) {
if (!isteacher($course->id) and !isstudent($course->id)) {
unset($courses[$key]);
}
}
}
}
} else {
$courses = get_records("course", "category", $category, "fullname ASC");
}
if ($courses) {
if ($style == "minimal") {
$count = 0;
$icon = "<IMG SRC=\"pix/i/course.gif\" HEIGHT=16 WIDTH=16 ALT=\"".get_string("course")."\">";
@@ -195,7 +218,7 @@ function print_all_courses($cat=1, $style="full", $maxcount=999) {
}
} else {
echo "<H3>No courses have been defined yet</H3>";
echo "<H3>".get_string("nocoursesyet")."</H3>";
}
}
@@ -215,17 +238,19 @@ function print_course($course) {
echo "<TD VALIGN=top WIDTH=50%>";
echo "<P><FONT SIZE=3><B><A TITLE=\"".get_string("entercourse")."\"
HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->fullname</A></B></FONT></P>";
if ($teachers = get_records_sql("SELECT u.* FROM user u, user_teachers t
WHERE u.id = t.user AND t.course = '$course->id'
ORDER BY t.authority ASC")) {
if ($teachers = get_course_teachers($course->id)) {
echo "<P><FONT SIZE=1>\n";
foreach ($teachers as $teacher) {
echo "$course->teacher: <A HREF=\"$CFG->wwwroot/user/view.php?id=$teacher->id&course=$site->id\">$teacher->firstname $teacher->lastname</A><BR>";
if ($teacher->authority > 0) {
if (!$teacher->role) {
$teacher->role = $course->teacher;
}
echo "$teacher->role: <A HREF=\"$CFG->wwwroot/user/view.php?id=$teacher->id&course=$site->id\">$teacher->firstname $teacher->lastname</A><BR>";
}
}
echo "</FONT></P>";
}
if ($course->guest or ($course->password == "")) {
if ($course->guest) {
echo "<A TITLE=\"".get_string("allowguests")."\" HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">";
echo "<IMG VSPACE=4 ALT=\"\" HEIGHT=16 WIDTH=16 BORDER=0 SRC=\"$CFG->wwwroot/user/user.gif\"></A>&nbsp;&nbsp;";
}
@@ -283,7 +308,9 @@ function print_recent_activity($course) {
$content = true;
}
$user = get_record("user", "id", $log->info);
echo "<P><FONT SIZE=1><A HREF=\"../user/view.php?id=$user->id&course=$course->id\">$user->firstname $user->lastname</A></FONT></P>";
if (isstudent($course->id, $user->id)) {
echo "<P><FONT SIZE=1><A HREF=\"../user/view.php?id=$user->id&course=$course->id\">$user->firstname $user->lastname</A></FONT></P>";
}
}
}
@@ -335,85 +362,28 @@ function print_recent_activity($course) {
}
// Now all we need to know are the new posts.
// Now display new things from each module
$heading = false;
foreach ($logs as $log) {
if ($log->module == "forum") {
$post = NULL;
$mods = get_list_of_plugins("mod");
if ($log->action == "add post") {
$post = get_record_sql("SELECT p.*, d.forum, u.firstname, u.lastname,
u.email, u.picture, u.id as userid
FROM forum_discussions d, forum_posts p, user u
WHERE p.id = '$log->info' AND d.id = p.discussion AND p.user = u.id");
} else if ($log->action == "add discussion") {
$post = get_record_sql("SELECT p.*, d.forum, u.firstname, u.lastname,
u.email, u.picture, u.id as userid
FROM forum_discussions d, forum_posts p, user u
WHERE d.id = '$log->info' AND d.firstpost = p.id AND p.user = u.id");
foreach ($mods as $mod) {
include_once("$CFG->dirroot/mod/$mod/lib.php");
$print_recent_activity = $mod."_print_recent_activity";
if (function_exists($print_recent_activity)) {
$modcontent = $print_recent_activity($logs, isteacher($course->id));
if ($modcontent) {
$content = true;
}
if ($post) {
$teacherpost = "";
if ($forum = get_record("forum", "id", $post->forum) ) {
if ($forum->type == "teacher") {
if (!isteacher($course->id)) {
continue;
} else {
$teacherpost = "COLOR=$COURSE_TEACHER_COLOR";
}
}
}
if (! $heading) {
print_headline(get_string("newforumposts").":");
$heading = true;
$content = true;
}
$date = userdate($post->modified, "%e %b, %H:%M");
echo "<P><FONT SIZE=1 $teacherpost>$date - $post->firstname $post->lastname<BR>";
echo "\"<A HREF=\"$CFG->wwwroot/mod/forum/$log->url\">";
if ($log->action == "add") {
echo "<B>$post->subject</B>";
} else {
echo "$post->subject";
}
echo "</A>\"</FONT></P>";
}
}
}
if (! $content) {
echo "<FONT SIZE=2>".get_string("nothingnew")."</FONT>";
}
}
function unenrol_student_in_course($user, $course) {
global $db;
return $db->Execute("DELETE FROM user_students WHERE user = '$user' AND course = '$course'");
}
function enrol_student_in_course($user, $course) {
global $db;
$timenow = time();
$rs = $db->Execute("INSERT INTO user_students (user, course, start, end, time)
VALUES ($user, $course, 0, 0, $timenow)");
if ($rs) {
return true;
} else {
return false;
}
}
function get_all_mods($courseid, &$mods, &$modnames, &$modnamesplural, &$modnamesused) {
// Returns a number of useful structures for course displays
@@ -455,11 +425,15 @@ function get_all_sections($courseid) {
ORDER BY section");
}
function print_section($courseid, $section, $mods, $modnamesused, $absolute=false) {
function get_all_categories() {
return get_records_sql("SELECT * FROM course_categories ORDER by name");
}
function print_section($courseid, $section, $mods, $modnamesused, $absolute=false, $width="100%") {
global $CFG;
echo "<TABLE WIDTH=100%><TR><TD>\n";
echo "<TABLE WIDTH=\"$width\"><TR><TD>\n";
if ($section->sequence) {
$sectionmods = explode(",", $section->sequence);
@@ -479,9 +453,9 @@ function print_section($courseid, $section, $mods, $modnamesused, $absolute=fals
echo "</TD></TR></TABLE><BR>\n\n";
}
function print_side_block($heading="", $list=NULL, $footer="", $icons=NULL) {
function print_side_block($heading="", $list=NULL, $footer="", $icons=NULL, $width=180) {
echo "<TABLE WIDTH=100%>\n";
echo "<TABLE WIDTH=\"$width\">\n";
echo "<TR><TD COLSPAN=2><P><B><FONT SIZE=2>$heading</TD></TR>\n";
if ($list) {
foreach($list as $key => $string) {
@@ -502,61 +476,145 @@ function print_side_block($heading="", $list=NULL, $footer="", $icons=NULL) {
echo "</TABLE><BR>\n\n";
}
function print_admin_links ($siteid) {
function print_admin_links ($siteid, $width=180) {
global $THEME, $CFG;
print_simple_box(get_string("administration"), $align="CENTER", $width="100%", $color="$THEME->cellheading");
print_simple_box(get_string("administration"), $align="CENTER", $width, $color="$THEME->cellheading");
$icon = "<IMG SRC=\"$CFG->wwwroot/pix/i/settings.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
$moddata[]="<A HREF=\"$CFG->wwwroot/course/log.php?id=$siteid\">".get_string("sitelogs")."</A>";
$moddata[]="<A HREF=\"$CFG->wwwroot/admin/config.php\">".get_string("configvariables")."</A>";
$modicon[]=$icon;
$moddata[]="<A HREF=\"$CFG->wwwroot/admin/site.php\">".get_string("sitesettings")."</A>";
$modicon[]=$icon;
$moddata[]="<A HREF=\"$CFG->wwwroot/course/log.php?id=$siteid\">".get_string("sitelogs")."</A>";
$modicon[]=$icon;
$moddata[]="<A HREF=\"$CFG->wwwroot/theme/index.php\">".get_string("choosetheme")."</A>";
$modicon[]=$icon;
$moddata[]="<A HREF=\"$CFG->wwwroot/admin/lang.php\">".get_string("checklanguage")."</A>";
$modicon[]=$icon;
if (file_exists("$CFG->dirroot/admin/$CFG->dbtype")) {
$moddata[]="<A HREF=\"$CFG->wwwroot/admin/$CFG->dbtype/\">".get_string("managedatabase")."</A>";
$modicon[]=$icon;
}
$moddata[]="<HR>";
$modicon[]="";
$moddata[]="<A HREF=\"$CFG->wwwroot/course/edit.php\">".get_string("addnewcourse")."</A>";
$modicon[]=$icon;
$moddata[]="<A HREF=\"$CFG->wwwroot/course/categories.php\">".get_string("categories")."</A>";
$modicon[]=$icon;
$moddata[]="<A HREF=\"$CFG->wwwroot/course/teacher.php\">".get_string("assignteachers")."</A>";
$modicon[]=$icon;
$moddata[]="<A HREF=\"$CFG->wwwroot/course/delete.php\">".get_string("deletecourse")."</A>";
$modicon[]=$icon;
$moddata[]="<HR>";
$modicon[]="";
$moddata[]="<A HREF=\"$CFG->wwwroot/admin/user.php?newuser=true\">".get_string("addnewuser")."</A>";
$modicon[]=$icon;
$moddata[]="<A HREF=\"$CFG->wwwroot/admin/user.php\">".get_string("edituser")."</A>";
$modicon[]=$icon;
$fulladmin = "<P><A HREF=\"$CFG->wwwroot/admin/\">".get_string("admin")."</A>...";
print_side_block("", $moddata, "$fulladmin", $modicon);
echo "<IMG SRC=\"$CFG->wwwroot/pix/spacer.gif\" WIDTH=200 HEIGHT=0><BR>";
print_side_block("", $moddata, "$fulladmin", $modicon, $width);
echo "<IMG SRC=\"$CFG->wwwroot/pix/spacer.gif\" WIDTH=\"$width\" HEIGHT=1><BR>";
}
function print_course_admin_links($courseid) {
function print_course_admin_links($course, $width=180) {
global $THEME, $CFG;
echo "<BR>";
$adminicon[]="<IMG SRC=\"$CFG->wwwroot/pix/i/edit.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
if (isediting($courseid)) {
$admindata[]="<A HREF=\"view.php?id=$courseid&edit=off\">".get_string("turneditingoff")."</A>";
if (isediting($course->id)) {
$admindata[]="<A HREF=\"view.php?id=$course->id&edit=off\">".get_string("turneditingoff")."</A>";
} else {
$admindata[]="<A HREF=\"view.php?id=$courseid&edit=on\">".get_string("turneditingon")."</A>";
$admindata[]="<A HREF=\"view.php?id=$course->id&edit=on\">".get_string("turneditingon")."</A>";
}
$admindata[]="<A HREF=\"edit.php?id=$courseid\">".get_string("settings")."...</A>";
$admindata[]="<A HREF=\"edit.php?id=$course->id\">".get_string("settings")."...</A>";
$adminicon[]="<IMG SRC=\"$CFG->wwwroot/pix/i/settings.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
$admindata[]="<A HREF=\"log.php?id=$courseid\">".get_string("logs")."...</A>";
if (!$course->teachers) {
$course->teachers = get_string("defaultcourseteachers");
}
$admindata[]="<A HREF=\"teachers.php?id=$course->id\">$course->teachers...</A>";
$adminicon[]="<IMG SRC=\"$CFG->wwwroot/pix/i/settings.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
$admindata[]="<A HREF=\"grades.php?id=$course->id\">".get_string("grades")."...</A>";
$adminicon[]="<IMG SRC=\"$CFG->wwwroot/pix/i/grades.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
$admindata[]="<A HREF=\"log.php?id=$course->id\">".get_string("logs")."...</A>";
$adminicon[]="<IMG SRC=\"$CFG->wwwroot/pix/i/log.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
$admindata[]="<A HREF=\"$CFG->wwwroot/files/index.php?id=$courseid\">".get_string("files")."...</A>";
$admindata[]="<A HREF=\"$CFG->wwwroot/files/index.php?id=$course->id\">".get_string("files")."...</A>";
$adminicon[]="<IMG SRC=\"$CFG->wwwroot/files/pix/files.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
$admindata[]="<A HREF=\"$CFG->wwwroot/doc/view.php?id=$courseid&file=teacher.html\">".get_string("help")."...</A>";
$adminicon[]="<IMG SRC=\"$CFG->wwwroot/mod/reading/icon.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
$admindata[]="<A HREF=\"$CFG->wwwroot/doc/view.php?id=$course->id&file=teacher.html\">".get_string("help")."...</A>";
$adminicon[]="<IMG SRC=\"$CFG->wwwroot/mod/resource/icon.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
if ($teacherforum = forum_get_course_forum($courseid, "teacher")) {
$admindata[]="<A HREF=\"$CFG->wwwroot/mod/forum/view.php?f=$teacherforum->id\">".get_string("teacherforum")."</A>";
if ($teacherforum = forum_get_course_forum($course->id, "teacher")) {
$admindata[]="<A HREF=\"$CFG->wwwroot/mod/forum/view.php?f=$teacherforum->id\">".get_string("nameteacher", "forum")."</A>";
$adminicon[]="<IMG SRC=\"$CFG->wwwroot/mod/forum/icon.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
}
print_simple_box(get_string("administration"), $align="CENTER", $width="100%", $color="$THEME->cellheading");
print_side_block("", $admindata, "", $adminicon);
print_simple_box(get_string("administration"), $align="CENTER", $width, $color="$THEME->cellheading");
print_side_block("", $admindata, "", $adminicon, $width);
}
function print_course_categories($categories, $selected="none", $width=180) {
global $CFG, $THEME, $USER;
if ($selected == "index") { // Print comprehensive index of categories with courses
if ($courses = get_records_sql("SELECT * FROM course WHERE category > 0 ORDER BY shortname")) {
if (isset($USER->id) and !isadmin()) {
print_simple_box_start("LEFT", "100%");
print_heading("<A HREF=\"course/index.php?category=my\">".get_string("mycourses")."</A>", "LEFT");
$some = false;
echo "<UL>";
foreach ($courses as $key => $course) {
if (isteacher($course->id) or isstudent($course->id)) {
echo "<IMG SRC=\"$CFG->wwwroot/pix/i/course.gif\" HEIGHT=16 WIDTH=16>&nbsp;<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> &nbsp; ";
$some = true;
}
}
if (!$some) {
print_string("nocoursesyet");
}
echo "</UL>";
print_simple_box_end();
print_spacer(8,1);
}
foreach ($categories as $category) {
print_simple_box_start("CENTER", "100%");
print_heading("<A HREF=\"course/index.php?category=$category->id\">$category->name</A>", "LEFT");
$some = false;
echo "<UL>";
foreach ($courses as $key => $course) {
if ($course->category == $category->id) {
echo "<IMG SRC=\"$CFG->wwwroot/pix/i/course.gif\" HEIGHT=16 WIDTH=16>&nbsp;<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> &nbsp; ";
unset($courses[$key]);
$some = true;
}
}
if (!$some) {
print_string("nocoursesyet");
}
echo "</UL>";
print_simple_box_end();
print_spacer(8,1);
}
}
} else { // Print short list of categories only
foreach ($categories as $cat) {
$caticon[]="<IMG SRC=\"$CFG->wwwroot/pix/i/course.gif\" HEIGHT=16 WIDTH=16>";
if ($cat->id == $selected) {
$catdata[]="$cat->name";
} else {
$catdata[]="<A HREF=\"$CFG->wwwroot/course/index.php?category=$cat->id\">$cat->name</A>";
}
}
$catdata[] = "<A HREF=\"$CFG->wwwroot/course/index.php?category=all\">".get_string("fulllistofcourses")."</A>";
if (isset($USER->id)) {
$catdata[] = "<A HREF=\"$CFG->wwwroot/course/index.php?category=my\">".get_string("mycourses")."</A>";
}
print_side_block("", $catdata, $showall.$mine, $caticon, $width);
}
}
function print_log_graph($course, $userid=0, $type="course.png", $date=0) {
global $CFG;
@@ -570,60 +628,35 @@ function print_log_graph($course, $userid=0, $type="course.png", $date=0) {
function add_course_module($mod) {
GLOBAL $db;
$timenow = time();
if (!$rs = $db->Execute("INSERT into course_modules
SET course = '$mod->course',
module = '$mod->module',
instance = '$mod->instance',
section = '$mod->section',
added = '$timenow' ")) {
return 0;
}
// Get it out again - this is the most compatible way to determine the ID
if ($rs = $db->Execute("SELECT id FROM course_modules
WHERE module = $mod->module AND added = $timenow")) {
return $rs->fields[0];
} else {
return 0;
}
$mod->added = time();
return insert_record("course_modules", $mod);
}
function add_mod_to_section($mod) {
// Returns the course_sections ID where the mod is inserted
GLOBAL $db;
if ($cw = get_record_sql("SELECT * FROM course_sections
WHERE course = '$mod->course' AND section = '$mod->section'") ) {
if ($section = get_record_sql("SELECT * FROM course_sections
WHERE course = '$mod->course' AND section = '$mod->section'") ) {
if ($cw->sequence) {
$newsequence = "$cw->sequence,$mod->coursemodule";
if ($section->sequence) {
$newsequence = "$section->sequence,$mod->coursemodule";
} else {
$newsequence = "$mod->coursemodule";
}
if (!$rs = $db->Execute("UPDATE course_sections SET sequence = '$newsequence' WHERE id = '$cw->id'")) {
return 0;
if (set_field("course_sections", "sequence", $newsequence, "id", $section->id)) {
return $section->id; // Return course_sections ID that was used.
} else {
return $cw->id; // Return course_sections ID that was used.
return 0;
}
} else { // Insert a new record
if (!$rs = $db->Execute("INSERT into course_sections
SET course = '$mod->course',
section = '$mod->section',
summary = '',
sequence = '$mod->coursemodule' ")) {
return 0;
}
// Get it out again - this is the most compatible way to determine the ID
if ($rs = $db->Execute("SELECT id FROM course_sections
WHERE course = '$mod->course' AND section = '$mod->section'")) {
return $rs->fields[0];
} else {
return 0;
}
$section->course = $mod->course;
$section->section = $mod->section;
$section->summary = "";
$section->sequence = $mod->coursemodule;
return insert_record("course_sections", $section);
}
}
@@ -634,14 +667,14 @@ function delete_course_module($mod) {
function delete_mod_from_section($mod, $section) {
GLOBAL $db;
if ($cw = get_record("course_sections", "id", "$section") ) {
if ($section = get_record("course_sections", "id", "$section") ) {
$modarray = explode(",", $cw->sequence);
$modarray = explode(",", $section->sequence);
if ($key = array_keys ($modarray, $mod)) {
array_splice($modarray, $key[0], 1);
$newsequence = implode(",", $modarray);
return set_field("course_sections", "sequence", $newsequence, "id", $cw->id);
return set_field("course_sections", "sequence", $newsequence, "id", $section->id);
} else {
return false;
}
+35 -22
View File
@@ -38,21 +38,28 @@
if ($timenow - $course->startdate > $COURSE_MAX_LOG_DISPLAY) {
$course->startdate = $timenow - $COURSE_MAX_LOG_DISPLAY;
}
$timestart = usergetmidnight($course->startdate);
$timestart = $coursestart = usergetmidnight($course->startdate);
$i = 0;
while ($timestart < $timenow) {
$timefinish = $timestart + (3600 * 24);
if (! $logcount = get_record_sql("SELECT COUNT(*) as count FROM log
WHERE user = '$user->id' AND course = '$course->id'
AND `time` > '$timestart' AND `time` < '$timefinish'")) {
$logs[$i] = 0;
}
$logs[$i] = $logcount->count;
$timefinish = $timestart + 86400;
$days[$i] = userdate($timestart, "%a %e %b");
$logs[$i] = 0;
$i++;
$timestart = $timefinish;
}
if ($rawlogs = get_records_sql("SELECT floor((`time` - $coursestart)/86400) as day,
count(*) as num FROM log
WHERE user = '$user->id'
AND course = '$course->id'
AND `time` > '$coursestart'
GROUP BY day ")) {
foreach ($rawlogs as $rawlog) {
$logs[$rawlog->day] = $rawlog->num;
}
}
$maxlogs = max($logs);
@@ -62,7 +69,7 @@
$graph->x_data = $days;
$graph->y_data['logs'] = $logs;
$graph->y_format['logs'] = array('colour' => 'blue','bar' => 'fill','legend' =>'actual','bar_size' => 0.9);
$graph->y_format['logs'] = array('colour' => 'blue','line' => 'line');
$graph->y_label_left = "Hits";
$graph->label_size = "6";
@@ -78,22 +85,28 @@
case "userday.png":
if ($date) {
$timestart = usergetmidnight($date);
$daystart = usergetmidnight($date);
} else {
$timestart = usergetmidnight(time());
$daystart = usergetmidnight(time());
}
while ($timestart < $timenow) {
$timefinish = $timestart + 3600;
if (! $logcount = get_record_sql("SELECT COUNT(*) as count FROM log
WHERE user = '$user->id' AND course = '$course->id'
AND `time` > '$timestart' AND `time` < '$timefinish'")) {
$logs[$i] = 0;
$dayfinish = $daystart + 86400;
for ($i=0; $i<=23; $i++) {
$logs[$i] = 0;
$hour = $daystart + $i * 3600;
$hh = (int)userdate($hour, "%I");
$hours[$i] = userdate($hour, "$hh %p");
}
if ($rawlogs = get_records_sql("SELECT floor((`time` - $daystart)/3600) as hour,
count(*) as num FROM log
WHERE user = '$user->id'
AND course = '$course->id'
AND `time` > '$daystart'
GROUP BY hour ")) {
foreach ($rawlogs as $rawlog) {
$logs[$rawlog->hour] = $rawlog->num;
}
$logs[$i] = $logcount->count;
$hh = (int)userdate($timestart, "%I");
$hours[$i] = userdate($timestart, "$hh %p");
$i++;
$timestart = $timefinish;
}
$maxlogs = max($logs);
+1
View File
@@ -28,6 +28,7 @@
$USER = get_user_info_from_db("id", $user);
$USER->loggedin = true;
$USER->site = $CFG->wwwroot;
$USER->realuser = $teacher_id;
save_session("USER");
+28 -5
View File
@@ -5,8 +5,27 @@
require("../config.php");
require("lib.php");
if (isset($cancel)) {
if ($SESSION->returnpage) {
$return = $SESSION->returnpage;
unset($SESSION->returnpage);
save_session("SESSION");
redirect($return);
} else {
redirect("view.php?id=$mod->course");
}
}
if (isset($course) && isset($HTTP_POST_VARS)) { // add or update form submitted
$mod = (object)$HTTP_POST_VARS;
if (isset($SESSION->modform)) { // Variables are stored in the session
$mod = $SESSION->modform;
unset($SESSION->modform);
save_session("SESSION");
} else {
$mod = (object)$HTTP_POST_VARS;
}
require_login($mod->course);
@@ -78,10 +97,6 @@
exit;
}
if (isset($return)) {
$SESSION->returnpage = $HTTP_REFERER;
save_session("SESSION");
}
if (isset($move)) {
@@ -161,6 +176,11 @@
error("This course section doesn't exist");
}
if (isset($return)) {
$SESSION->returnpage = "$CFG->wwwroot/mod/$module->name/view.php?id=$cm->id";
save_session("SESSION");
}
$form->coursemodule = $cm->id;
$form->section = $cm->section; // The section ID
$form->course = $course->id;
@@ -238,6 +258,9 @@
"$streditinga", "form.name", "", false);
}
unset($SESSION->modform); // Clear any old ones that may be hanging around.
save_session("SESSION");
$modform = "../mod/$module->name/mod.html";
if (file_exists($modform)) {
+8 -10
View File
@@ -2,18 +2,18 @@
// social.php - course format featuring social forum
// included from view.php
include("../mod/forum/lib.php");
include("../mod/reading/lib.php");
include_once("$CFG->dirroot/mod/forum/lib.php");
include_once("$CFG->dirroot/mod/resource/lib.php");
?>
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="5" CELLPADDING="5">
<TR>
<TD WIDTH="15%" VALIGN="TOP">
<TD WIDTH="200" VALIGN="TOP">
<?
print_simple_box(get_string("people"), $align="CENTER", $width="100%", $color="$THEME->cellheading");
$moddata[]="<A HREF=\"../user/index.php?id=$course->id\">".get_string("listofallpeople")."</A>";
$moddata[]="<A TITLE=\"".get_string("listofallpeople")."\" HREF=\"../user/index.php?id=$course->id\">".get_string("participants")."</A>";
$modicon[]="<IMG SRC=\"../user/users.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
$editmyprofile = "<A HREF=\"../user/view.php?id=$USER->id&course=$course->id\">".
$editmyprofile = "<A TITLE=\"$USER->firstname $USER->lastname\" HREF=\"../user/view.php?id=$USER->id&course=$course->id\">".
get_string("editmyprofile")."</A>";
if ($USER->description) {
$moddata[]= $editmyprofile;
@@ -32,7 +32,7 @@
if (isediting($site->id)) {
echo "<DIV ALIGN=right>";
popup_form("$CFG->wwwroot/course/mod.php?id=$course->id&section=0&add=",
$modnames, "section0", "", get_string("add")."...");
$modnames, "section0", "", get_string("add")."...", "mods", get_string("activities"));
echo "</DIV>";
}
@@ -51,12 +51,12 @@
// Admin links and controls
if (isteacher($course->id)) {
print_course_admin_links($course->id);
print_course_admin_links($course, "100%");
}
echo "</TD>";
echo "<TD WIDTH=\"55%\" VALIGN=\"TOP\">";
echo "<TD WIDTH=\"100%\" VALIGN=\"TOP\">";
if ($social = forum_get_course_forum($course->id, "social")) {
if (forum_is_subscribed($USER->id, $social->id)) {
$subtext = get_string("unsubscribe", "forum");
@@ -68,8 +68,6 @@
echo "<IMG ALT=\"\" HEIGHT=7 SRC=\"../pix/spacer.gif\"><BR>";
forum_print_latest_discussions($social->id, 10, "plain", "DESC", false);
$SESSION->fromdiscussion = "$CFG->wwwroot/course/view.php?id=$course->id";
save_session("SESSION");
} else {
notify("Could not find or create a social forum here");
+29 -27
View File
@@ -18,14 +18,23 @@
$strassignteachers = get_string("assignteachers");
$stradministration = get_string("administration");
$strexistingteachers = get_string("existingteachers");
$strnoexistingteachers = get_string("noexistingteachers");
$strpotentialteachers = get_string("potentialteachers");
$strnopotentialteachers = get_string("nopotentialteachers");
$straddteacher = get_string("addteacher");
$strremoveteacher = get_string("removeteacher");
$strsearch = get_string("search");
$strsearchagain = get_string("searchagain");
$strtoomanytoshow = get_string("toomanytoshow");
if (!$id) {
print_header("$site->fullname: $strassignteachers", "$site->fullname",
print_header("$site->shortname: $strassignteachers", "$site->fullname",
"<A HREF=\"$CFG->wwwroot/admin\">$stradministration</A> -> $strassignteachers");
if ($courses = get_records_sql("SELECT * from course WHERE category > 0 ORDER BY fullname")) {
print_heading("Choose a course to add teachers to");
print_heading(get_string("choosecourse"));
print_simple_box_start("CENTER");
foreach ($courses as $course) {
echo "<A HREF=\"teacher.php?id=$course->id\">$course->fullname</A><BR>";
@@ -44,19 +53,16 @@
}
print_header("$site->fullname: $course->shortname: $strassignteachers",
print_header("$site->shortname: $course->shortname: $strassignteachers",
"$site->fullname",
"<A HREF=\"$CFG->wwwroot/admin\">$stradministration</A> ->
<A HREF=\"teacher.php\">$strassignteachers</A> ->
$course->shortname", "");
print_heading($course->fullname);
print_heading("<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->fullname</A>");
/// Get all existing teachers for this course.
$teachers = get_records_sql("SELECT u.*,t.authority,t.id as teachid FROM user u, user_teachers t
WHERE t.course = '$course->id'
AND t.user = u.id
ORDER BY t.authority ASC");
$teachers = get_course_teachers($course->id);
/// Add a teacher if one is specified
@@ -84,7 +90,6 @@
if (! $teacher->id) {
error("Could not add that teacher to this course!");
}
$user->authority = $teacher->authority;
$teachers[] = $user;
}
@@ -95,33 +100,30 @@
error("That teacher (id = $remove) doesn't exist", "teacher.php?id=$course->id");
}
if ($teachers) {
foreach ($teachers as $tt) {
foreach ($teachers as $key => $tt) {
if ($tt->id == $user->id) {
delete_records("user_teachers", "id", "$tt->teachid");
remove_teacher($user->id, $course->id);
unset($teachers[$key]);
}
}
}
$teachers = get_records_sql("SELECT u.*,t.authority,t.id as teachid FROM user u, user_teachers t
WHERE t.course = '$course->id'
AND t.user = u.id
ORDER BY t.authority ASC");
}
/// Print the lists of existing and potential teachers
echo "<TABLE CELLPADDING=2 CELLSPACING=10 ALIGN=CENTER>";
echo "<TR><TH WIDTH=50%>Existing Teachers</TH><TH WIDTH=50%>Potential Teachers</TH></TR>";
echo "<TR><TH WIDTH=50%>$strexistingteachers</TH><TH WIDTH=50%>$strpotentialteachers</TH></TR>";
echo "<TR><TD WIDTH=50% NOWRAP VALIGN=TOP>";
/// First, show existing teachers for this course
if (! $teachers) {
echo "<P ALIGN=CENTER>No existing teachers</A>";
echo "<P ALIGN=CENTER>$strnoexistingteachers</A>";
} else {
foreach ($teachers as $teacher) {
echo "<P ALIGN=right>$teacher->firstname $teacher->lastname, $teacher->email &nbsp;&nbsp; <A HREF=\"teacher.php?id=$course->id&remove=$teacher->id\" TITLE=\"Remove teacher\"><IMG SRC=\"../pix/t/right.gif\" BORDER=0></A></P>";
echo "<P ALIGN=right>$teacher->firstname $teacher->lastname, $teacher->email &nbsp;&nbsp; <A HREF=\"teacher.php?id=$course->id&remove=$teacher->id\" TITLE=\"$strremoveteacher\"><IMG SRC=\"../pix/t/right.gif\" BORDER=0></A></P>";
}
}
@@ -130,14 +132,14 @@
/// Print list of potential teachers
if ($search) {
$users = get_records_sql("SELECT * from user WHERE confirmed = 1
$users = get_records_sql("SELECT * from user WHERE confirmed = 1 AND deleted = 0
AND (firstname LIKE '%$search%' OR
lastname LIKE '%$search%' OR
email LIKE '%$search%')
AND username <> 'guest'");
AND username <> 'guest' AND username <> 'changeme'");
} else {
$users = get_records_sql("SELECT * from user WHERE confirmed = 1
AND username <> 'guest'");
$users = get_records_sql("SELECT * from user WHERE confirmed = 1 AND deleted = 0
AND username <> 'guest' AND username <> 'changeme'");
}
@@ -155,22 +157,22 @@
}
if (! $potential) {
echo "<P ALIGN=CENTER>No potential teachers</A>";
echo "<P ALIGN=CENTER>$strnopotentialteachers</A>";
if ($search) {
echo "<FORM ACTION=teacher.php METHOD=GET>";
echo "<INPUT TYPE=hidden NAME=id VALUE=\"$course->id\">";
echo "<INPUT TYPE=text NAME=search SIZE=20>";
echo "<INPUT TYPE=submit VALUE=\"Search again\">";
echo "<INPUT TYPE=submit VALUE=\"$strsearchagain\">";
echo "</FORM>";
}
} else {
if ($search) {
echo "<P ALIGN=CENTER>(Search results)</P>";
echo "<P ALIGN=CENTER>($strsearchresults)</P>";
}
if (count($potential) <= 20) {
foreach ($potential as $user) {
echo "<P ALIGN=LEFT><A HREF=\"teacher.php?id=$course->id&add=$user->id\" TITLE=\"Add teacher\"><IMG SRC=\"../pix/t/left.gif\" BORDER=0></A>&nbsp;&nbsp;$user->firstname $user->lastname, $user->email";
echo "<P ALIGN=LEFT><A HREF=\"teacher.php?id=$course->id&add=$user->id\" TITLE=\"$straddteacher\"><IMG SRC=\"../pix/t/left.gif\" BORDER=0></A>&nbsp;&nbsp;$user->firstname $user->lastname, $user->email";
}
} else {
echo "<P ALIGN=CENTER>There are too many users to show.<BR>";
@@ -178,7 +180,7 @@
echo "<FORM ACTION=teacher.php METHOD=GET>";
echo "<INPUT TYPE=hidden NAME=id VALUE=\"$course->id\">";
echo "<INPUT TYPE=text NAME=search SIZE=20>";
echo "<INPUT TYPE=submit VALUE=Search>";
echo "<INPUT TYPE=submit VALUE=\"$strsearch\">";
echo "</FORM>";
}
}
+92
View File
@@ -0,0 +1,92 @@
<?PHP // $Id$
// Allows a teacher to edit teacher order and roles for a course
require("../config.php");
require("lib.php");
require_variable($id); // course id
if (! $course = get_record("course", "id", $id)) {
error("Course ID was incorrect");
}
require_login($course->id);
if (!isteacher($course->id)) {
error("Only teachers can edit the course!");
}
/// If data submitted, then process and store.
if (match_referer() && isset($HTTP_POST_VARS)) {
$rank = array();
// Peel out all the data from variable names.
foreach ($HTTP_POST_VARS as $key => $val) {
if ($key <> "id") {
$type = substr($key,0,1);
$num = substr($key,1);
$rank[$num][$type] = $val;
}
}
foreach ($rank as $num => $vals) {
if (! $teacher = get_record_sql("SELECT * FROM user_teachers WHERE course='$course->id' and user='$num'")) {
error("No such teacher in course $course->shortname with user id $num");
}
$teacher->role = $vals[r];
$teacher->authority = $vals[a];
if (!update_record("user_teachers", $teacher)) {
error("Could not update teacher entry id = $teacher->id");
}
}
redirect("teachers.php?id=$course->id", get_string("changessaved"));
}
/// Otherwise fill and print the form.
print_header("$course->shortname: $course->teachers", "$course->fullname",
"<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A>
-> $course->teachers");
if (!$teachers = get_course_teachers($course->id)) {
error("No teachers found in this course!");
}
print_heading($course->teachers);
$table->head = array ("", get_string("name"), get_string("order"), get_string("role"));
$table->align = array ("RIGHT", "LEFT", "CENTER", "CENTER");
$table->size = array ("35", "", "", "");
$option[0] = get_string("hide");
for ($i=1; $i<=8; $i++) {
$option[$i] = $i;
}
echo "<FORM ACTION=teachers.php METHOD=post>";
foreach ($teachers as $teacher) {
$picture = print_user_picture($teacher->id, $course->id, $teacher->picture, false, true);
$authority = choose_from_menu ($option, "a$teacher->id", $teacher->authority, "", "", "", true);
if (!$teacher->role) {
$teacher->role = $course->teacher;
}
$table->data[] = array ($picture, "$teacher->firstname $teacher->lastname", $authority,
"<INPUT TYPE=text NAME=\"r$teacher->id\" VALUE=\"$teacher->role\" SIZE=30>");
}
print_table($table);
echo "<INPUT TYPE=hidden NAME=id VALUE=\"$course->id\">";
echo "<CENTER><BR><INPUT TYPE=submit VALUE=\"".get_string("savechanges")."\"> ";
helpbutton("teachers", $course->teachers);
echo "</CENTER>";
echo "</FORM>";
print_footer($course);
?>
+6 -6
View File
@@ -6,7 +6,7 @@
// courses that aren't so rigidly defined by time.
// Included from "view.php"
include("../mod/forum/lib.php");
include_once("$CFG->dirroot/mod/forum/lib.php");
if (! $sections = get_all_sections($course->id) ) {
$section->course = $course->id; // Create a default section.
@@ -46,9 +46,9 @@
$blinker = " <BLINK>*</BLINK>";
print_simple_box(get_string("people"), $align="CENTER", $width="100%", $color="$THEME->cellheading");
$moddata[]="<A HREF=\"../user/index.php?id=$course->id\">".get_string("listofallpeople")."</A>";
$moddata[]="<A TITLE=\"".get_string("listofallpeople")."\" HREF=\"../user/index.php?id=$course->id\">".get_string("participants")."</A>";
$modicon[]="<IMG SRC=\"../user/users.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
$editmyprofile = "<A HREF=\"../user/view.php?id=$USER->id&course=$course->id\">".get_string("editmyprofile")."</A>";
$editmyprofile = "<A TITLE=\"$USER->firstname $USER->lastname\" HREF=\"../user/view.php?id=$USER->id&course=$course->id\">".get_string("editmyprofile")."</A>";
if ($USER->description) {
$moddata[]= $editmyprofile;
} else {
@@ -68,7 +68,7 @@
$modicon[] = "<IMG SRC=\"../mod/$modname/icon.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
}
}
print_simple_box("Activities", $align="CENTER", $width="100%", $color="$THEME->cellheading");
print_simple_box(get_string("activities"), $align="CENTER", $width="100%", $color="$THEME->cellheading");
print_side_block("", $moddata, "", $modicon);
// Print a form to search forums
@@ -79,7 +79,7 @@
// Admin links and controls
if (isteacher($course->id)) {
print_course_admin_links($course->id);
print_course_admin_links($course);
}
// Start main column
@@ -141,7 +141,7 @@
if (isediting($course->id)) {
echo "<DIV ALIGN=right>";
popup_form("$CFG->wwwroot/course/mod.php?id=$course->id&section=$section&add=",
$modnames, "section$section", "", "$stradd...");
$modnames, "section$section", "", "$stradd...", "mods", get_string("activities"));
echo "</DIV>";
}
+1 -4
View File
@@ -26,13 +26,10 @@
if (isset($confirm)) {
if (! unenrol_student_in_course($user->id, $course->id)) {
if (! unenrol_student($user->id, $course->id)) {
error("An error occurred while trying to unenrol you.");
}
// remove some other things
delete_records("forum_subscriptions", "user", $user->id);
add_to_log($course->id, "course", "unenrol", "view.php?id=$course->id", "$user->id");
if ($user->id == $USER->id) {
+6 -3
View File
@@ -38,13 +38,16 @@
} else if ($help == "off") {
$USER->help = false;
}
save_session("USER");
$SESSION->fromdiscussion = "$CFG->wwwroot/course/view.php?id=$course->id";
save_session("SESSION");
if (! $course->category) { // This course is not a real course.
redirect("$CFG->wwwroot");
redirect("$CFG->wwwroot/");
}
$courseword = get_string("course");
print_header("$courseword: $course->fullname", "$course->fullname", "$course->shortname", "search.search", "", true,
@@ -67,6 +70,6 @@
error("Course format not defined yet!");
}
print_footer($course);
print_footer();
?>
+9 -7
View File
@@ -2,7 +2,7 @@
// Display the whole course as "weeks" made of of modules
// Included from "view.php"
include("../mod/forum/lib.php");
include_once("$CFG->dirroot/mod/forum/lib.php");
if (! $sections = get_all_sections($course->id)) {
$section->course = $course->id; // Create a default section.
@@ -33,9 +33,9 @@
// Links to people
print_simple_box(get_string("people"), $align="CENTER", $width="100%", $color="$THEME->cellheading");
$moddata[]="<A HREF=\"../user/index.php?id=$course->id\">".get_string("listofallpeople")."</A>";
$moddata[]="<A TITLE=\"".get_string("listofallpeople")."\" HREF=\"../user/index.php?id=$course->id\">".get_string("participants")."</A>";
$modicon[]="<IMG SRC=\"../user/users.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
$editmyprofile = "<A HREF=\"../user/view.php?id=$USER->id&course=$course->id\">".get_string("editmyprofile")."</A>";
$editmyprofile = "<A TITLE=\"$USER->firstname $USER->lastname\" HREF=\"../user/view.php?id=$USER->id&course=$course->id\">".get_string("editmyprofile")."</A>";
if ($USER->description) {
$moddata[]= $editmyprofile;
} else {
@@ -66,7 +66,7 @@
// Admin links and controls
if (isteacher($course->id)) {
print_course_admin_links($course->id);
print_course_admin_links($course);
}
// Start main column
@@ -99,8 +99,8 @@
$thisweek = (($weekdate <= $timenow) && ($timenow < $nextweekdate));
$weekday = date("j F", $weekdate);
$endweekday = date("j F", $weekdate+(6*24*3600));
$weekday = userdate($weekdate, "%e %B");
$endweekday = userdate($weekdate+518400, "%e %B");
if ($thisweek) {
$highlightcolor = $THEME->cellheading2;
@@ -136,7 +136,7 @@
if (isediting($course->id)) {
echo "<DIV ALIGN=right>";
popup_form("$CFG->wwwroot/course/mod.php?id=$course->id&section=$week&add=",
$modnames, "section$week", "", "$stradd...");
$modnames, "section$week", "", "$stradd...", "mods", get_string("activities"));
echo "</DIV>";
}
@@ -182,6 +182,8 @@
print_recent_activity($course);
print_simple_box_end();
echo "<BR><IMG SRC=\"../pix/spacer.gif\" WIDTH=210 HEIGHT=1>";
echo "</TD></TR></TABLE>\n";
?>
+92 -25
View File
@@ -8,27 +8,65 @@
<H2>Credits</H2>
<P><B>Moodle </B>itself is Copyright &copy; 2001-2002, <A HREF="http://dougiamas.com/">
<P><B>Moodle </B>itself is Copyright &copy; 2001-2002, <A TARGET=_top HREF="http://dougiamas.com/">
Martin Dougiamas</A>. &nbsp;It is distributed under the <A HREF="licence.html">
GNU Public License</A>.</P>
<H3>Other contributors</H3>
<H3><BR>Special thanks</H3>
<UL>
<LI><B>Dr Peter Taylor</B>, at Curtin University of Technology, for working
with the prototype and making many useful suggestions</LI>
<LI><B><A TARGET=_top HREF="http://pctaylor.com">Dr Peter C. Taylor</A></B>, at Curtin University of Technology in Perth, Australia, for working
with the prototypes and making many useful suggestions along the way
<LI><B>Art Lader</B>, at Aiken High School, SC, USA for many good deeds.
</UL>
<BR>
<H3><BR>Translations</H3>
<BLOCKQUOTE>
<P>Many thanks to these people - each translation takes many hours of work.
<UL>
<LI><B>br - Portuguese (Brazilian)</B>, by Fabricio Valadares (webdesigner@unincor.br).
<LI><B>fi - Finnish</B>, by Petri Asikainen (paca@sci.fi), Jaana Tolvanen <jaanat@cedunet.com>
<LI><B>fr - French</B>, by Sebastien Nameche (seb@gaia.anet.fr)
<LI><B>de - German</B>, by Holger Schadeck (Holger.Schadeck@webdesign-forum.de)
<LI><B>it - Italian</B>, by Davide Suraci (icarused@tiscalinet.it)
</UL>
</BLOCKQUOTE>
<H3><BR>Other contributors</H3>
<BLOCKQUOTE>
<P>Thanks to all of you contributing ideas and code, including:
<UL>
<LI>Petri Asikainen,
<LI>Matt Hope,
<LI>James Miller,
<LI>Tom Murdock,
<LI>Sebastien Nameche,
<LI>Dustin Rue,
<LI>Giovanni Tummarello,
</UL>
... and also:</P>
<UL>
<LI>anyone else who has made donations <A TARGET=_top HREF="http://moodle.com/donations">Donations page</A>, and
<LI>everyone else who contributes <A TARGET=_top HREF="http://bugs.moodle.com">bug tracker</A>, and
<LI>everyone enrolled in the "<A TARGET=_top HREF="http://moodle.com/course/">Using Moodle</A>" course at moodle.com</A>
</UL>
</BLOCKQUOTE>
<P></P>
<H3>Moodle libraries</H3>
<H3><BR>Moodle libraries</H3>
<BLOCKQUOTE>
<P>Some of Moodle's libraries were written by other people, and are being
redistributed as part of Moodle under the LGPL. &nbsp;Copyright information
from this software is included below:</P>
redistributed as part of Moodle under the LGPL. My thanks go out to the
authors of all these excellent products - without them Moodle would be missing
important functionality. &nbsp;Copyright information for this software is included below:</P>
<P><B>ADOdb &nbsp; </B>- &nbsp;lib/adodb<BR>
</P>
@@ -50,11 +88,23 @@ Interbase, Foxpro, Access, ADO, Sybase, DB2 and ODBC.</P>
<P>Class to draw line, point, bar, and area graphs, including numeric
x-axis and double y-axis.</P>
<P> Version: 1.6.3<BR>
<P> Version: 1.6.3 (with modifications)<BR>
Copyright &copy;&nbsp;2000&nbsp; Herman Veluwenkamp,&nbsp;hermanV@mindless.com<BR>
License: LGPL<BR>
</P>
</BLOCKQUOTE>
<P><B>IP-Atlas</B>&nbsp; - &nbsp; lib/ipatlas</P>
<BLOCKQUOTE>PHP scripts to show the location of an IP address on a map.<BR>
<BR>
Version: 1.0 (with modifications)<BR>
Copyright &copy; 2002 &nbsp; Ivan Kozik<BR>
License: GNU GPL<BR>
URL: <A HREF="http://www.xpenguin.com/ip-atlas.php" TARGET="newpage">http://www.xpenguin.com/ip-atlas.php</A><BR>
</BLOCKQUOTE>
<P><B>PHP mailer</B> &nbsp; - &nbsp;lib/class.phpmailer.php<BR>
</P>
@@ -68,6 +118,34 @@ or SMTP.&nbsp; Methods are based upon the standard AspEmail(tm) classes.<BR>
URL: &nbsp; <A HREF="http://phpmailer.sourceforge.net" TARGET="newpage">http://phpmailer.sourceforge.net</A><BR>
<BR>
</BLOCKQUOTE>
<P><B>PHP Simple Excel File Generator</B>&nbsp; - &nbsp; lib/psxlsgen.php</P>
<BLOCKQUOTE>Class to generate very simple MS Excel files (xls)
via PHP.<BR>
<BR>
Version: 0.3b<BR>
Copyright &copy; 2001 &nbsp;Erol Ozcan &lt;eozcan@superonline.com&gt;<BR>
License: GNU LGPL<BR>
URL: <A HREF="http://psxlsgen.sourceforge.net" TARGET="newpage">http://psxlsgen.sourceforge.net</A><BR>
</BLOCKQUOTE>
<P><B>Richtext Editor</B>&nbsp; - &nbsp; lib/rte</P>
<BLOCKQUOTE>HTML text editor for embedding in web pages.<BR>
<BR>
Version: 0.30 beta 1 (plus modifications)<BR>
Copyright &copy; 2001 Ramesys (Contracting Services) Limited &lt;Austin.France@Ramesys.com&gt;
License: GNU LGPL<BR>
URL: <A HREF="http://richtext.sourceforge.net" TARGET="newpage">http://richtext.sourceforge.net</A><BR>
</BLOCKQUOTE>
<P><B>SMTP class &nbsp; </B>- &nbsp;lib/class.smtp.php<BR>
</P>
@@ -81,18 +159,7 @@ or SMTP.&nbsp; Methods are based upon the standard AspEmail(tm) classes.<BR>
<BR>
</BLOCKQUOTE>
<P><B>PHP Simple Excel File Generator</B>&nbsp; - &nbsp; lib/psxlsgen.php</P>
<BLOCKQUOTE>Class to generate very simple MS Excel files (xls)
via PHP.<BR>
<BR>
Version: 0.3b<BR>
Copyright &copy; 2001 &nbsp;Erol Ozcan &lt;eozcan@superonline.com&gt;<BR>
License: GNU LGPL<BR>
URL: <A HREF="http://psxlsgen.sourceforge.net">http://psxlsgen.sourceforge.net</A><BR>
</BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE><BR>
</BLOCKQUOTE>
+8 -7
View File
@@ -34,7 +34,7 @@
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>
on this later). <br><br>
</li>
<li><strong>Moodle should be easy to install, learn and modify</strong><br>
<br>
@@ -49,7 +49,7 @@
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>
as standard.<br><br>
</li>
<li><strong>It should be easy to upgrade from one version to the next</strong><br>
<br>
@@ -57,14 +57,14 @@
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 &quot;cvs update -d&quot;
and then visit the site home page to complete an upgrade.<br>
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>
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>
@@ -84,7 +84,7 @@
<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 six default modules: assignment, choice, forum, journal, reading,
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>
@@ -140,8 +140,9 @@
<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>reading.php - strings for reading module</li>
<li>survey.php - strings for reading 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><em>
+95 -12
View File
@@ -8,22 +8,105 @@
<H2>Features</H2>
Here is a big list of some of the features in Moodle 1.0:
<UL><LI>Supports a social constructionist pedagogy (collaboration, activities, critical reflection, etc)</LI><LI>Suitable for 100% online classes as well as supplementing face-to-face learning<LI>Simple, lightweight, browser-compatible interface</LI><LI>Plug-in "themes" allow you to customise the colours, fonts, layout etc</LI><LI>Easy to install on most platforms</LI><LI>Easy administration - students can create their own accounts. Email addresses are verified.</LI><LI>One account works for the whole server</LI><LI>Security - teachers can add an "enrolment key" to their courses to keep out non-students. They can give out this key face-to-face or via personal email etc</LI><LI>Students are encouraged to build an online profile including photos, description etc</LI><LI>Every user can specify their own timezone, and every date in Moodle is translated to that timezone (eg posting dates, assignment due dates etc)</LI><LI>Choice of course formats such as by week, by topic or a discussion-focussed social format</LI><LI>Flexible array of course modules - Forums, Journals, Readings, Choices, Surveys, Assignments.</LI><LI>New modules can be written and plugged in to existing Moodle installations</LI><LI>The code is clearly-written PHP under a GPL license - easy to modify and localise</LI><LI>Full database abstraction supports all major brands of database (except for initial table definition)</LI><LI>Ready for internationalisation - supports plug-in languages and locale-based date formats etc</LI><LI>Mail integration - copies of forum posts, teacher feedback etc can be mailed in HTML or plain text.</LI><LI>Recent changes to the course since the last login are displayed on the course home page</LI><LI>Full user logging and tracking - activity reports for each student are available with graphs and details about each module (last access, number of times read) as well as a detailed "story" of each students involvement including postings, journal entries etc on one page.</LI>
Here is a big list of some of the features in Moodle:
<UL>
<LI>Supports a social constructionist pedagogy (collaboration, activities, critical
reflection, etc)</LI>
<LI>Suitable for 100% online classes as well as supplementing face-to-face learning
<LI>Simple, lightweight, browser-compatible interface</LI>
<LI>Plug-in "themes" allow you to customise the colours, fonts, layout etc</LI>
<LI>Easy to install on most platforms</LI>
<LI>Easy administration - students can create their own accounts. Email addresses
are verified.</LI>
<LI>Plug-in authentication modules are supported (eg LDAP) for integration with
existing user databases</LI>
<LI>One account works for all courses on a server</LI>
<LI>Security - teachers can add an "enrolment key" to their courses to keep
out non-students. They can give out this key face-to-face or via personal
email etc</LI>
<LI>Students are encouraged to build an online profile including photos, description
etc</LI>
<LI>Every user can specify their own timezone, and every date in Moodle is translated
to that timezone (eg posting dates, assignment due dates etc)</LI>
<LI>Choice of course formats such as by week, by topic or a discussion-focussed
social format</LI>
<LI>Flexible array of course modules - Forums, Journals, Quizzes, Resources,
Choices, Surveys, Assignments.</LI>
<LI>Most text entry areas (resources, forum postings, journal entries etc) can
be edited using an embedded WYSIWYG HTML editor</LI>
<LI>All grades for Forums, Journals, Quizzes and Assignments can be viewed on
one page (and downloaded as a spreadsheet file)</LI>
<LI>New modules can be written and plugged in to existing Moodle installations</LI>
<LI>The code is clearly-written PHP under a GPL license - easy to modify and
localise</LI>
<LI>Moodle code uses encryption, data validation and careful design to be as
secure from hackers as possible</LI>
<LI>Full database abstraction supports all major brands of database (except
for initial table definition)</LI>
<LI>Ready for internationalisation - supports plug-in languages and locale-based
date formats etc</LI>
<LI>Mail integration - copies of forum posts, teacher feedback etc can be mailed
in HTML or plain text.</LI>
<LI>Recent changes to the course since the last login are displayed on the course
home page</LI>
<LI>Full user logging and tracking - activity reports for each student are available
with graphs and details about each module (last access, number of times read)
as well as a detailed "story" of each students involvement including postings,
journal entries etc on one page.</LI>
</UL>
<B>Forum Module</B>
<B>Assignment Module</B>
<UL>
<LI>Assignments can be specified with a due date and a maximum grade.</LI>
<LI>Students can upload their assignments (any file format) to the server -
they are date-stamped.</LI>
<LI>Late assignments are allowed, but the amount of lateness is shown clearly
to the teacher</LI>
<LI>For each particular assignment, the whole class can be assessed (grade and
comment) on one page in one form.</LI>
<LI>Teacher feedback is appended to the assignment page for each student, and
notification is mailed out.</LI>
</UL>
<P><B>Choice Module</B> </P>
<UL>
<LI>Like a poll. Can either be used to vote on something, or to get feedback
from every student (eg research consent)</LI>
</UL>
<B></B>
<P><B>Forum Module</B> </P>
<UL><LI>Different types of forums are available, such as teacher-only, course news, open-to-all, and one-thread-per-user.</LI><LI>All postings have the authors photo attached.</LI><LI>Discussions can be viewed nested, flat or threaded, oldest or newest first.</LI><LI>Individual forums can be subscribed to by each person so that copies are forwarded via email, or the teacher can force subscription for all</LI>
</UL>
<B>Survey Module</B>
<B>Journal Module</B>
<UL>
<LI>Journals are private between student and teacher.</LI>
<LI>Each journal entry can be directed by an open question.</LI>
<LI>For each particular journal entry, the whole class can be assessed on one
page in one form.</LI>
<LI>Teacher feedback is appended to the journal entry page, and notification
is mailed out.</LI>
</UL>
<P><B>Quiz Module</B> </P>
<UL>
<LI>Teachers can define a database of questions for re-use in different quizzes</LI>
<LI>Quizzes are automatically graded, and can be re-graded if questions are
modified </LI>
<LI>Quizzes can have a limited time window outside of which they are not available</LI>
<LI>At the teacher's option, quizzes can be attempted multiple times, and can
show feedback and correct answers</LI>
<LI>Questions allow HTML and images</LI>
<LI>Multiple-choice questions supporting single or multiple answers</LI>
<LI>Short Answer questions (words or phrases)</LI>
<LI>True-False questions </LI>
</UL>
<P><B>Resource Module</B> </P>
<UL>
<LI>Supports display of any electronic content</LI>
<LI>Files can be uploaded and managed on the server, or created on the fly using
web forms (text or HTML)</LI>
<LI>External content on the web can be linked to or seamlessly included within
the course interface.</LI>
</UL>
<B></B><B>Survey Module</B>
<UL><LI>Built-in surveys (COLLES, ATTLS) have been proven as instruments for analysing online classes</LI><LI>Online survey reports always available, including many graphs. Data is downloadable as an Excel spreadsheet or CSV text file.</LI><LI>Survey interface prevents partly-finished surveys.</LI><LI>Feedback is provided to the student of their results compared to the class averages</UL>
<B>Readings Module</B>
<UL><LI>Supports display of any electronic content</LI><LI>Files can be uploaded and managed on the server, or created on the fly using web forms (text or HTML)</LI><LI>External content on the web can be linked to or seamlessly included within the course interface.</LI></UL>
<B>Choice Module</B>
<UL><LI>Like a poll. Can either be used to vote on something, or to get feedback from every student (eg research consent)</LI></UL>
<B>Journal Module</B>
<UL><LI>Journals are private between student and teacher.</LI><LI>Each journal entry can be directed by an open question.</LI><LI>For each particular journal entry, the whole class can be assessed on one page in one form.</LI><LI>Teacher feedback is appended to the journal entry page, and notification is mailed out.</LI></UL>
<B>Assignment Module</B>
<UL><LI>Assignments can be specified with a due date and a maximum grade.</LI><LI>Students can upload their assignments (any file format) to the server - they are date-stamped.</LI><LI>Late assignments are allowed, but the amount of lateness is shown clearly to the teacher</LI><LI>For each particular assignment, the whole class can be assessed (grade and comment) on one page in one form.</LI><LI>Teacher feedback is appended to the assignment page for each student, and notification is mailed out.</LI></UL>
<P>&nbsp;</P>
<P ALIGN="CENTER"><FONT SIZE="1"><A HREF="index.html" TARGET="_top">Moodle Documentation</A></FONT></P>
+22 -1
View File
@@ -10,15 +10,36 @@
I have a deeply-held belief in the importance of unrestricted education and
empowered teaching, and Moodle is the main way I can contribute to the realisation
of these ideals.
<P>As Moodle gains in maturity, I hope its directions are influenced by the community
of developers and users. A dynamic database of proposed features and their status
can be found at <A TARGET=_top HREF="http://bugs.moodle.org/">bugs.moodle.org</A>.
Your <a href="developer.html">contributions</a> in the form of ideas, code,
feedback and promotion are all very welcome.
<P>Now that 1.0 has been released, most of my efforts will concentrate on the
<P>Now that 1.0.1 has been released, most of my efforts will concentrate on the
macro level (supporting larger classes and integrating into larger institutions)
and the micro level (improving support for decisions and processes, for both
teachers and learners).
<P>The next 6 months or so I will have to slow down my own development a little
(because I have a PhD thesis to finish). During this time there'll be a number
of small upgrades 1.0.2, 1.0.3 etc that I expect will contain minor new features
and polishing. I'll also be working with people adding new plugins (support for
more databases, new modules and new themes).
<P>Sometime in the first half of 2003 you can expect a major release (1.1, maybe 1.5) that has
new features like:
<UL>
<LI>Full user account management (eg connection to external databases, import/export etc)
<LI>Full grade management
<LI>Ability to define groups and group work
<LI>Automatic linking in texts to uploaded resources (like Wiki)
<LI>Online support for teachers to design and maintain classes
<LI>Online support for students in collaboration processes
</UL>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER"><FONT SIZE="1"><A HREF="index.html" TARGET="_top">Moodle Documentation</A></FONT></P>
<P ALIGN="CENTER"><FONT SIZE="1">Version: $Id$</FONT></P>
+260 -195
View File
@@ -4,7 +4,6 @@
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>Installing Moodle</H2>
<P>This guide explains how to install Moodle for the first time.</P>
<P>Sections in this document:</P>
@@ -14,81 +13,97 @@
<LI><A HREF="#site">Site structure</A></LI>
<LI><A HREF="#data">Create a data directory</A></LI>
<LI><A HREF="#database">Create a database</A></LI>
<LI><A HREF="#webserver">Check web server settings</A></LI>
<LI><A HREF="#config">Edit config.php</A></LI>
<LI><A HREF="#admin">Go to the admin page</A></LI>
<LI><A HREF="#cron">Set up cron</A></LI>
<LI><A HREF="#course">Create a new course</A></LI>
</OL>
<H3><A NAME="requirements"></A>Requirements</H3>
<P>Moodle is primarily developed in Linux using PHP, Apache and MySQL, and regularly
tested under Windows XP and Mac OS X environments.</P>
<P>All you should need are:</P>
<UL>
<LI>a working installation of <A HREF="http://www.php.net/">PHP</A> (version
4.1.0 or better), including the <A HREF="http://www.boutell.com/gd/">GD</A>
library for manipulating images.</LI>
<LI>a working database server (<A HREF="http://www.mysql.com/">MySQL</A> for
now, but soon it will support PostgreSQL, MSSQL, Oracle, Interbase, Foxpro,
Access, ADO, Sybase, DB2 or ODBC).</LI>
</UL>
<P>On a Windows platform, the quickest way to satisfy these requirements is to
download <A HREF="http://www.phpgeek.com/">PHPTriad</A>, <A HREF="http://www.foxserv.net/">FoxServ</A>,
or <A HREF="http://www.easyphp.org/">EasyPHP</A>
which will install Apache, PHP, and MySQL for you. Make sure you enable the
GD module so Moodle can process images - you may have to edit php.ini and remove
the comment (;) from this line: 'extension=php_gd.dll'.</P>
<P>On Mac OS X I highly recommend the <a href="http://fink.sourceforge.net/">fink</a>
project.</P>
<H3><A NAME="requirements"></A>1. Requirements</H3>
<blockquote>
<p>Moodle is primarily developed in Linux using PHP, Apache and MySQL, and regularly
tested under Windows XP and Mac OS X environments.</p>
<p>All you should need are:</p>
<ul>
<li>a working installation of <A HREF="http://www.php.net/">PHP</A> (version
4.1.0 or later), with the following features enabled (most PHP installations
these days will have all of these):
<ul>
<LI>JPEG and/or PNG image editing support via the <A HREF="http://www.boutell.com/gd/">GD library</A></li>
<LI>Sessions support
<LI>File uploading
</UL>
<li>a working database server (<A HREF="http://www.mysql.com/">MySQL</A> for
now, but soon it will support PostgreSQL, MSSQL, Oracle, Interbase, Foxpro,
Access, ADO, Sybase, DB2 or ODBC).</li>
</ul>
<p>On a Windows platform, the quickest way to satisfy these requirements is
to download <A HREF="http://www.phpgeek.com/">PHPTriad</A>, <A HREF="http://www.foxserv.net/">FoxServ</A>,
or <A HREF="http://www.easyphp.org/">EasyPHP</A> which will install Apache,
PHP, and MySQL for you. Make sure you enable the GD module so Moodle can process
images - you may have to edit php.ini and remove the comment (;) from this
line: 'extension=php_gd.dll'.</p>
<p>On Mac OS X I highly recommend the <a href="http://fink.sourceforge.net/">fink</a>
project.</p>
</blockquote>
<P>&nbsp;</P>
<H3><A NAME="downloading"></A>Download</H3>
<P>There are two ways to get Moodle, as a compressed package and via CVS. These
are explained in detail on the download page on <A HREF="http://moodle.com/">http://moodle.com/</A></P>
<P>After downloading and unpacking the archive, or checking out the files via
CVS, you will be left with a directory called &quot;moodle&quot;, containing
a number of files and folders. </P>
<P>You can either place the whole folder in your web server documents directory,
in which case the site will be located at <B>http://yourwebserver.com/moodle</B>,
or you can copy all the contents straight into the main web server documents
directory, in which case the site will be simply <B>http://yourwebserver.com</B>.</P>
<H3><A NAME="downloading"></A>2. Download</H3>
<blockquote>
<p>There are two ways to get Moodle, as a compressed package and via CVS. These
are explained in detail on the download page on <A HREF="http://moodle.com/">http://moodle.com/</A></p>
<p>After downloading and unpacking the archive, or checking out the files via
CVS, you will be left with a directory called &quot;moodle&quot;, containing
a number of files and folders. </p>
<p>You can either place the whole folder in your web server documents directory,
in which case the site will be located at <B>http://yourwebserver.com/moodle</B>,
or you can copy all the contents straight into the main web server documents
directory, in which case the site will be simply <B>http://yourwebserver.com</B>.</p>
</blockquote>
<P>&nbsp;</P>
<H3><A NAME="site"></A>Site structure</H3>
<P>Here is a quick summary of the contents of the Moodle folder, to help get you
oriented:</P>
<BLOCKQUOTE>
<P>config.php - the only file you need to edit to get started<br>
version.php - defines the current version of Moodle code<BR>
index.php - the front page of the site</P>
<UL>
<LI>admin/ - code to administrate the whole server </LI>
<LI>course/ - code to display and manage courses </LI>
<LI>doc/ - help documentation for Moodle (eg this page)</LI>
<LI>files/ - code to display and manage uploaded files</LI>
<LI>lang/ - texts in different languages, one directory per language </LI>
<LI>lib/ - libraries of core Moodle code </LI>
<LI>login/ - code to handle login and account creation </LI>
<LI>mod/ - all Moodle course modules</LI>
<LI>pix/ - generic site graphics</LI>
<LI>theme/ - theme packs/skins to change the look of the site.</LI>
<LI>user/ - code to display and manage users</LI>
</UL>
<P>&nbsp;</P>
<H3><A NAME="site"></A>3. Site structure</H3>
<BLOCKQUOTE>
<p>Here is a quick summary of the contents of the Moodle folder, to help get
you oriented:</p>
<blockquote>
<p>config.php - the only file you need to edit to get started<br>
version.php - defines the current version of Moodle code<BR>
index.php - the front page of the site</p>
<ul>
<li>admin/ - code to administrate the whole server </li>
<li>auth/ - plugin modules to authenticate users </li>
<li>course/ - code to display and manage courses </li>
<li>doc/ - help documentation for Moodle (eg this page)</li>
<li>files/ - code to display and manage uploaded files</li>
<li>lang/ - texts in different languages, one directory per language </li>
<li>lib/ - libraries of core Moodle code </li>
<li>login/ - code to handle login and account creation </li>
<li>mod/ - all Moodle course modules</li>
<li>pix/ - generic site graphics</li>
<li>theme/ - theme packs/skins to change the look of the site.</li>
<li>user/ - code to display and manage users</li>
</ul>
<p>&nbsp;</p>
</blockquote>
</BLOCKQUOTE>
<H3><A NAME="data"></A>Create a data directory</H3>
<P>Moodle will also need some space on your hard disk to store uploaded files,
such as course documents and user pictures.</P>
<P>Create a directory for this purpose somewhere <B>away</B> from the web server
documents directory (we don't want these files to be directly accessible from
the web), and ensure that the web server software has permission to write to
this directory. On Unix machines, this means setting the owner of the directory
to be something like &quot;nobody&quot; or &quot;apache&quot;.</P>
<H3><A NAME="data"></A>4. Create a data directory</H3>
<blockquote>
<p>Moodle will also need some space on your hard disk to store uploaded files,
such as course documents and user pictures.</p>
<p>Create a directory for this purpose somewhere <B>away</B> from the web server
documents directory (we don't want these files to be directly accessible from
the web), and ensure that the web server software has permission to write
to this directory. On Unix machines, this means setting the owner of the directory
to be something like &quot;nobody&quot; or &quot;apache&quot;.</p>
</blockquote>
<P>&nbsp;</P>
<H3><A NAME="database"></A>Create a database</H3>
<P>You need to create an empty database (eg "moodle") in your database system
along with a special user (eg "moodleuser") that has access to that database
(and that database only. For example, don't use the "root" user for the moodle
database in a production system - it's a security hazard). </P>
<P>eg for MySQL: </P>
<PRE>
<H3><A NAME="database"></A>5. Create a database</H3>
<blockquote>
<p>You need to create an empty database (eg "moodle") in your database system
along with a special user (eg "moodleuser") that has access to that database
(and that database only. For example, don't use the "root" user for the moodle
database in a production system - it's a security hazard). </p>
<p>eg for MySQL: </p>
<PRE>
# mysql -u root -p
> CREATE DATABASE moodle;
> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.*
@@ -96,107 +111,164 @@
> quit
# mysqladmin -p reload
</PRE>
<p>(For MySQL I highly recommend the use of <a href="http://phpmyadmin.sourceforge.net/">phpMyAdmin</a>
to manage your databases).</p>
</blockquote>
<P>&nbsp;</P>
<H3><A NAME="webserver" id="webserver"></A>6. Check your web server settings</H3>
<blockquote>
<p>Firstly, make sure that your web server is set up to use index.php as a default
page (perhaps in addition to index.html, default.htm and so on).</p>
<p>In Apache, this is done using a DirectoryIndex parameter in your httpd.conf
file. Mine usually looks like this:</p>
<blockquote>
<pre><strong>DirectoryIndex</strong> index.php index.html index.htm </pre>
</blockquote>
<p>Just make sure index.php is in the list (and preferably towards the start
of the list, for efficiency).</p>
<p>Secondly, check your PHP configuration file (usually called php.ini) and
make sure uploading has been turned on:</p>
<blockquote>
<pre>file_uploads = On</pre>
</blockquote>
<p>Most distributions of PHP have this turned on by default, but you may want
to check it anyway. </p>
<p>If you don't have access to httpd.conf or php.ini on your server, another
way you can set both of the above settings (and more) is to put definitions in a
.htaccess file in Moodle's main directory. This only works on Apache servers
and only when Overrides have been allowed. A sample .htaccess file
is included with Moodle (called lib/htaccess) that includes further information.
<P>(For MySQL I highly recommend the use of <a href="http://phpmyadmin.sourceforge.net/">phpMyAdmin</a>
to manage your databases).</P>
<H3><A NAME="config"></A>Edit config.php</H3>
<P>Now you can edit the configuration file, <strong>config.php</strong>. This
file is used by all other files in Moodle.</P>
<P>To start with, make a copy of config-dist.php and call it config.php. We do
this so that your config.php won't be overwritten in case you upgrade Moodle
later on.
<P>Edit config.php to specify the database details that you just defined, as well as the
site address, file system directory, data directory and so on. The config file
has detailed directions.</P>
<P>For the rest of this installation document we will assume your site is at:
http://example.com/moodle</P>
</blockquote>
<p>&nbsp;</p>
<H3><A NAME="config"></A>7. Edit config.php</H3>
<blockquote>
<p>Now you can edit the configuration file, <strong>config.php</strong>, using a
text editor. This file is used by all other files in Moodle.</p>
<p>To start with, make a copy of config-dist.php and call it config.php. We
do this so that your config.php won't be overwritten in case you upgrade Moodle
later on. </p>
<p>Edit config.php to specify the database details that you just defined, as
well as the site address, file system directory and data directory.
The config file has detailed directions.</p>
<p>For the rest of this installation document we will assume your site is at:
<u>http://example.com/moodle</u></p>
</blockquote>
<P>&nbsp;</P>
<H3><A NAME="admin"></A>Go to the admin page</H3>
<P>The admin page should now be working at: http://example.com/moodle/admin</P>
<P>If you try and access the front page of your site you'll be taken there automatically
anyway. </P>
<P>The first time you access this page, Moodle will set up your database and prompt
you for more information.</P>
<P>Firstly, the main database tables are created. You should see a number of SQL
statements followed by status messages (in green or red) that look like this:</P>
<BLOCKQUOTE>
<P>CREATE TABLE course ( id int(10) unsigned NOT NULL auto_increment, category
int(10) unsigned NOT NULL default '0', password varchar(50) NOT NULL default
'', fullname varchar(254) NOT NULL default '', shortname varchar(15) NOT NULL
default '', summary text NOT NULL, format tinyint(4) NOT NULL default '1',
teacher varchar(100) NOT NULL default 'Teacher', startdate int(10) unsigned
NOT NULL default '0', enddate int(10) unsigned NOT NULL default '0', timemodified
int(10) unsigned NOT NULL default '0', PRIMARY KEY (id)) TYPE=MyISAM</P>
<P><FONT COLOR="#006600">SUCCESS</FONT></P>
<P>...and so on, followed by: <FONT COLOR="#FF0000">Main databases set up successfully</FONT>.
</P>
</BLOCKQUOTE>
<P>If you don't see these, then there must have been some problem with the database
or the configuration settings you defined in config.php. Check that PHP isn't
in a restricted "safe mode" (commercial web hosts often have safe mode turned
on). You can check PHP variables by creating a little file containing &lt? phpinfo
?&gt and looking at it through a browser. Check all these and try this page
again.</P>
<P>Scroll down the very bottom of the page and press the &quot;Continue&quot;
link.</P>
<P>Next you will see a similar page that sets up all the tables required by each
Moodle module. As before, they should all be green, otherwise you may be a problem
in the module code.</P>
<P>Scroll down the very bottom of the page and press the &quot;Continue&quot;
link.</P>
<P>You should now see a form where you can define more parameters for your Moodle
site, such as the name, the description shown on the front page, and so on.
Fill this out (you can always go back and change these later) and then press
&quot;Update the site&quot;.</P>
<P>Finally, you will then be asked to create a top-level administration user for
future access to the admin pages. Fill out the details with your own name, email
etc and then click &quot;Update this user&quot;. You will be returned to the
main admin page, which contain a number of links arranged in a menu (these items
also appear on the home page when you are logged in as the admin user).</P>
<P><strong>Make sure you remember the username and password you chose for the
administration user, as they will be necessary to access the administration
page in future.</strong></P>
<P>All your further administration of Moodle can now be done using the administration
menu, which includes tasks such as:</P>
<UL>
<LI>creating and deleting courses</LI>
<LI>creating and editing user accounts</LI>
<LI>administering teacher accounts</LI>
<LI>changing site-wide settings</LI>
</UL>
<P>&nbsp;</P>
<H3><A NAME="cron"></A>Set up cron</H3>
<P>Some of Moodle's modules require continual checks to perform tasks. For example,
Moodle needs to check the discussion forums so it can mail out copies of posts
to people who have subscribed.</P>
<P>The script that does all this is located in the admin directory, and is called
cron.php. However, it can not run itself, so you need to set up a mechanism
where this script is run regularly (eg every five minutes). This provides a
&quot;heartbeat&quot; so that the script can perform functions at periods defined
by each module.</P>
<P>Test that the script works by running it directly from your browser:</P>
<BLOCKQUOTE>
<PRE>http://example.com/moodle/admin/cron.php</PRE>
</BLOCKQUOTE>
<P>Now, you need to set up some of way of running the script automatically and
regularly. </P>
<BLOCKQUOTE>
<H4>Running the script from a command line</H4>
<P>You can call the page from the command line just as you did in the example
above. For example, you can use a Unix utility like 'wget':</P>
<BLOCKQUOTE>
<PRE>wget -q -O /dev/null http://example.com/moodle/admin/cron.php</PRE>
</BLOCKQUOTE>
<P>Note in this example that the output is thrown away (to /dev/null).</P>
<P>The same thing using lynx:</P>
<H3><A NAME="admin"></A>8. Go to the admin page</H3>
<blockquote>
<p>The admin page should now be working at: http://example.com/moodle/admin.
If you try and access the front page of your site you'll be taken there automatically
anyway. The first time you access this admin page, you will be presented with
a GPL agreement with which you need to agree before you can continue with the setup.</p>
<P>(Moodle will also try to set some cookies in your browser. If you have
your browser set up to let you choose to accept cookies, then you <B>must</B>
accept the Moodle cookies, or Moodle won't work properly.)
<p>Now Moodle will start setting set up your database. Firstly, the main database
tables are created. You should see a number of SQL statements followed by
status messages (in green or red) that look like this:</p>
<blockquote>
<p>CREATE TABLE course ( id int(10) unsigned NOT NULL auto_increment, category
int(10) unsigned NOT NULL default '0', password varchar(50) NOT NULL default
'', fullname varchar(254) NOT NULL default '', shortname varchar(15) NOT
NULL default '', summary text NOT NULL, format tinyint(4) NOT NULL default
'1', teacher varchar(100) NOT NULL default 'Teacher', startdate int(10)
unsigned NOT NULL default '0', enddate int(10) unsigned NOT NULL default
'0', timemodified int(10) unsigned NOT NULL default '0', PRIMARY KEY (id))
TYPE=MyISAM</p>
<p><FONT COLOR="#006600">SUCCESS</FONT></p>
<p>...and so on, followed by: <FONT COLOR="#FF0000">Main databases set up
successfully</FONT>. </p>
</blockquote>
<p>If you don't see these, then there must have been some problem with the database
or the configuration settings you defined in config.php. Check that PHP isn't
in a restricted "safe mode" (commercial web hosts often have safe mode turned
on). You can check PHP variables by creating a little file containing &lt?
phpinfo() ?&gt and looking at it through a browser. Check all these and try
this page again.</p>
<p>Scroll down the very bottom of the page and press the &quot;Continue&quot;
link.</p>
<p>Next you will see a similar page that sets up all the tables required by
each Moodle module. As before, they should all be green, otherwise you may
be a problem in the module code.</p>
<p>Scroll down the very bottom of the page and press the &quot;Continue&quot;
link.</p>
<p>You should now see a form where you can define more configuration variables
for your installation, such as the default language, SMTP hosts and so on.
Don't worry too much about getting everything right just now - you can always
come back and edit these later on using the admin interface. Scroll down
to the bottom and click &quot;Save changes&quot;.</p>
<p>Next is a form where you can define parameters for your Moodle site and the
front page, such as the name, format, description and so on.
Fill this out (you can always go back and change these later) and then press
&quot;Save changes&quot;.</p>
<p>Finally, you will then be asked to create a top-level administration user
for future access to the admin pages. Fill out the details with your own name,
email etc and then click &quot;Save changes&quot;. Not all the fields are
required, but if you miss any important fields you'll be re-prompted for them.
</p>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<p><strong>Make sure you remember the username and password you chose
for the administration user account, as they will be necessary to
access the administration page in future.</strong></p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<p>Once successful, you will be returned to the main admin page, which contain
a number of links arranged in a menu (these items also appear on the home
page when you are logged in as the admin user). All your further administration
of Moodle can now be done using this menu, such as:</p>
<ul>
<li>creating and deleting courses</li>
<li>creating and editing user accounts</li>
<li>administering teacher accounts</li>
<li>changing site-wide settings like themes etc</li>
</ul>
</blockquote>
<P>&nbsp;</P>
<H3><A NAME="cron"></A>9. Set up cron</H3>
<blockquote>
<p>Some of Moodle's modules require continual checks to perform tasks. For example,
Moodle needs to check the discussion forums so it can mail out copies of posts
to people who have subscribed.</p>
<p>The script that does all this is located in the admin directory, and is called
cron.php. However, it can not run itself, so you need to set up a mechanism
where this script is run regularly (eg every five minutes). This provides
a &quot;heartbeat&quot; so that the script can perform functions at periods
defined by each module.</p>
<p>Test that the script works by running it directly from your browser:</p>
<blockquote>
<PRE>http://example.com/moodle/admin/cron.php</PRE>
</blockquote>
<p>Now, you need to set up some of way of running the script automatically and
regularly. </p>
<H4> Running the script from a command line</H4>
<p>You can call the page from the command line just as you did in the example
above. For example, you can use a Unix utility like 'wget':</p>
<blockquote>
<PRE>wget -q -O /dev/null http://example.com/moodle/admin/cron.php</PRE>
</blockquote>
<p>Note in this example that the output is thrown away (to /dev/null).</p>
<p>The same thing using lynx:</p>
<blockquote>
<pre>lynx -dump http://example.com/moodle/admin/cron.php &gt; /dev/null</pre>
</blockquote>
<P>Alternatively you could use a standalone version of PHP, compiled to be run
<p>Alternatively you could use a standalone version of PHP, compiled to be run
on the command line. The advantage with doing this is that your web server
logs aren't filled with constant requests to cron.php. The disadvantage is
that you need to have access to a command-line version of php.</P>
<blockquote>
that you need to have access to a command-line version of php.</p>
<blockquote>
<PRE>/opt/bin/php /web/moodle/admin/cron.php
@@ -205,42 +277,35 @@
</PRE>
</blockquote>
<h4>Automatically running the script every 5 minutes</h4>
<P>On Unix systems: Use <B>cron</B>. Edit your cron settings from the commandline
using &quot;crontab -e&quot; and add a line like:</P>
<BLOCKQUOTE>
<p>On Unix systems: Use <B>cron</B>. Edit your cron settings from the commandline
using &quot;crontab -e&quot; and add a line like:</p>
<blockquote>
<PRE>*/5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php</PRE>
</BLOCKQUOTE>
<P>On Windows systems: The simplest way is to use my package <A TITLE="Click to download this package (150k)" HREF="http://moodle.com/download/moodle-cron-for-windows.zip">moodle-cron-for-windows.zip</A> which makes all this very easy.</P>
<P>Other platforms: you will need to find another way to do this (please let
</blockquote>
<p>On Windows systems: The simplest way is to use my package <A TITLE="Click to download this package (150k)" HREF="http://moodle.com/download/moodle-cron-for-windows.zip">moodle-cron-for-windows.zip</A>
which makes this whole thing very easy.</p>
<p>Other platforms: you will need to find another way to do this (please let
me know so I can update this documentation).<br>
</P>
</BLOCKQUOTE>
<H3><A NAME="course"></A>Create a new course</H3>
<P>Now that Moodle is running properly, you can create a course. </P>
<P>Start on the admin page ( http://example.com/moodle/admin ) and select &quot;Create
a new course&quot;.</P>
<P>Fill out the form, paying special attention to the course format.</P>
<P>If you choose a &quot;<strong>weekly</strong>&quot; format, then course modules
will be arranged in sections called &quot;weeks&quot;. The weeks in your course
are defined by the start date and the number of weeks you choose on this form.
The idea is that the next time you run this course, you can just change the
dates and keep the essential course format.</P>
<P>The &quot;<strong>topics</strong>&quot; format is pretty much the same, except
it doesn't use &quot;weeks&quot;. Useful when you arrange a course into different-sized
chunks of time. The start date will not be used on the main course display.</P>
<P>The &quot;<strong>social</strong>&quot; format is for courses that don't have
a start or finish. It is basically arranged around one big forum and works a
nice replacement to standard mailing lists. Again the start date will not affect
the operation of the course - it will only affect the display of logs.</P>
<P>Press &quot;Update this course&quot;, and you will be taken to a new form where
you can assign teachers to the course. You can only add existing user accounts
from this form - if you want to create a new teacher account then either ask
the teacher to create one for themselves (see the login page), or create one
for them using the &quot;Add a new user&quot; on the Admin page.</P>
<P>Once done, your course is ready to customise, and is accessible via the &quot;Courses&quot;
link on the home page.</P>
<P>See the &quot;<A HREF="teacher.html">Teacher Manual</A>&quot; for more details
on course-building.</P>
</p>
</blockquote>
<H3><A NAME="course"></A>10. Create a new course</H3>
<blockquote>
<p>Now that Moodle is running properly, you can create a course. </p>
<p>Select &quot;Create a new course&quot; from the Admin page (or the admin
links on the home page).</p>
<p>Fill out the form, paying special attention to the course format. You don't
have to worry about the details too much at this stage, as everything can
be changed later by the teacher.</p>
<p>Press &quot;Save changes&quot;, and you will be taken to a new form where
you can assign teachers to the course. You can only add existing user accounts
from this form - if you want to create a new teacher account then either ask
the teacher to create one for themselves (see the login page), or create one
for them using the &quot;Add a new user&quot; on the Admin page.</p>
<p>Once done, the course is ready to customise, and is accessible via the &quot;Courses&quot;
link on the home page.</p>
<p>See the &quot;<A HREF="teacher.html">Teacher Manual</A>&quot; for more details
on course-building.</p>
</blockquote>
<P>&nbsp;</P>
<P ALIGN="CENTER"><FONT SIZE="1"><A HREF="index.html" TARGET="_top">Moodle Documentation</A></FONT></P>
<P ALIGN="CENTER"><FONT SIZE="1">Version: $Id$</FONT></P>
+16 -5
View File
@@ -92,7 +92,7 @@
<p align="center"><img src="pix/files.jpg" width="400" height="347"></p>
<p>&nbsp;</p>
<p>This interface is only available to teachers - it is not accessible by students.
Individual files are made available to students later on (as &quot;Readings&quot;
Individual files are made available to students later on (as &quot;Resources&quot;
- see the next section).</p>
<p>As you can see in the screenshot, files are listed alongside subdirectories.
You can create any number of subdirectories to organise your files and move
@@ -109,7 +109,7 @@
with the same name as an existing file it will automatically be overwritten.</p>
<p>A final note: if your content resides out on the web then you don't need
to upload the files at all - you can link directly to them from inside the
course (see the Readings module and the next section).</p>
course (see the Resources module and the next section).</p>
<HR>
</blockquote>
<H3><A NAME="activities"></A>Setting up activities</H3>
@@ -135,7 +135,7 @@
<BR>
<dt><strong>Choice</strong></dt>
<dd>A choice activity is very simple - you ask a question and specify a choice
of responses (currently only two). Students can make that choice, and you
of responses. Students can make their choice, and you
have a report screen where you can see the results. I use it to gather research
consent from my students, but you could use it for quick polls or class
votes.</dd>
@@ -158,13 +158,24 @@
and students will receive an automatic email informing them of your feedback.</dd>
<BR>
<BR>
<dt><strong>Reading</strong></dt>
<dd>Readings are the content of your course. Each reading can be any file
<dt><strong>Resource</strong></dt>
<dd>Resources are the content of your course. Each resource can be any file
you have uploaded or can point to using a URL. You can also maintain simple text-based pages by typing them
directly into a form.</dd>
<BR>
<BR>
<dt><strong>Survey</strong></dt>
<dd>This module allows you to design and set quiz tests, consisting of
multiple choice, true-false, and short answer questions. These
questions are kept in a categorised database, and can be re-used
within courses and even between courses. Quizzes can allow
multiple attempts. Each attempt is automatically marked, and the
teacher can choose whether to give feedback or to show correct answers.
This module includes grading facilities.
</dd>
<BR>
<BR>
<dt><strong>Survey</strong></dt>
<dd>The survey module provides a number of predefined survey instruments that are useful in
evaluating and understanding your class. Currently they include the COLLES and the ATTLS instruments.
They can be given to students early in the course as a diagnostic tool and at the end of the
+5 -3
View File
@@ -12,10 +12,12 @@
redirect("$CFG->wwwroot/course/", "Message sent, thanks", 3);
die;
}
print_header("$CFG->sitename:Error", "$CFG->sitename: Error 404", "", "form.text");
print_simple_box("An unusual error occurred (tried to reach a page that doesn't exist).<P align=center>$REQUEST_URI", "center", "", "$THEME->cellheading");
$site = get_site();
print_header("$site->fullname:Error", "$site->fullname: Error 404", "", "form.text");
print_simple_box("An unusual error occurred (tried to reach a page that doesn't exist).<P align=center>$REDIRECT_URL", "center", "", "$THEME->cellheading");
?>
+12 -4
View File
@@ -7,11 +7,18 @@
$lifetime = 86400;
if (!$PATH_INFO) {
error("This script DEPENDS on $PATH_INFO being available. Read the README.");
if (isset($file)) { // workaround for situations where / syntax doesn't work
$PATH_INFO = $file;
}
if (!$PATH_INFO) {
error("This script DEPENDS on PATH_INFO being available. Read the README.");
}
if (! $args = get_slash_arguments()) {
error("No valid arguments supplied");
}
$args = get_slash_arguments();
$numargs = count($args);
$courseid = (integer)$args[0];
@@ -35,7 +42,8 @@
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $lifetime) . " GMT");
header("Cache-control: max_age = $lifetime"); // a day
header("Pragma: ");
header("Content-Length: ".filesize($pathname));
header("Content-disposition: inline; filename=$filename");
header("Content-length: ".filesize($pathname));
header("Content-type: $mimetype");
readfile("$pathname");
} else {
+78 -67
View File
@@ -35,13 +35,29 @@
print_footer($course);
}
function html_header($formfield=""){
global $course;
function html_header($course, $wdir, $formfield=""){
$strfiles = get_string("files");
print_header("$course->shortname: $strfiles", "$course->fullname",
"<A HREF=\"../course/view.php?id=$course->id\">$course->shortname</A> -> $strfiles", $formfield);
if ($wdir == "/") {
print_header("$course->shortname: $strfiles", "$course->fullname",
"<A HREF=\"../course/view.php?id=$course->id\">$course->shortname</A>
-> $strfiles", $formfield);
} else {
$dirs = explode("/", $wdir);
$numdirs = count($dirs);
$link = "";
$navigation = "";
for ($i=1; $i<$numdirs; $i++) {
$navigation .= " -> ";
$link .= "/".urlencode($dirs[$i]);
$navigation .= "<A HREF=\"index.php?id=$course->id&wdir=$link\">".$dirs[$i]."</A>";
}
print_header("$course->shortname: $strfiles", "$course->fullname",
"<A HREF=\"../course/view.php?id=$course->id\">$course->shortname</A> ->
<A HREF=\"index.php?id=$course->id&wdir=/\">$strfiles</A> $navigation", $formfield);
}
echo "<table border=0 align=center cellspacing=3 cellpadding=3 width=640>";
echo "<tr>";
echo "<td colspan=\"2\">";
@@ -80,7 +96,7 @@
switch ($action) {
case "upload":
html_header();
html_header($course, $wdir);
if ($save) {
if (!is_uploaded_file($userfile['tmp_name']) and $userfile['size'] > 0) {
echo "<P>Error: That was not a valid file.";
@@ -99,10 +115,8 @@
displaydir($wdir);
} else {
if (! $filesize = ini_get("upload_max_filesize")) {
$filesize = "5M";
}
$upload_max_filesize = get_real_size($filesize);
$upload_max_filesize = get_max_upload_file_size();
$filesize = display_size($upload_max_filesize);
echo "<P>Upload a file (maximum size $filesize) into <B>$wdir</B>:";
echo "<TABLE><TR><TD COLSPAN=2>";
@@ -129,7 +143,7 @@
case "delete":
if ($confirm) {
html_header();
html_header($course, $wdir);
foreach ($USER->filelist as $file) {
$fullfile = $basedir.$file;
if (! fulldelete($fullfile)) {
@@ -141,7 +155,7 @@
html_footer();
} else {
html_header();
html_header($course, $wdir);
if (setfilelist($HTTP_POST_VARS)) {
echo "<P ALIGN=CENTER>You are about to delete:</P>";
print_simple_box_start("center");
@@ -159,7 +173,7 @@
break;
case "move":
html_header();
html_header($course, $wdir);
if ($count = setfilelist($HTTP_POST_VARS)) {
$USER->fileop = $action;
$USER->filesource = $wdir;
@@ -171,7 +185,7 @@
break;
case "paste":
html_header();
html_header($course, $wdir);
if ($USER->fileop == "move") {
foreach ($USER->filelist as $file) {
$shortfile = basename($file);
@@ -189,7 +203,7 @@
case "rename":
if ($name) {
html_header();
html_header($course, $wdir);
$name = clean_filename($name);
if (file_exists($basedir.$wdir."/".$name)) {
echo "Error: $name already exists!";
@@ -199,7 +213,7 @@
displaydir($wdir);
} else {
html_header("form.name");
html_header($course, $wdir, "form.name");
echo "<P>Rename <B>$file</B> to:";
echo "<TABLE><TR><TD>";
echo "<FORM ACTION=index.php METHOD=post NAME=form>";
@@ -224,7 +238,7 @@
case "mkdir":
if ($name) {
html_header();
html_header($course, $wdir);
$name = clean_filename($name);
if (file_exists($basedir.$wdir."/".$name)) {
echo "Error: $name already exists!";
@@ -234,7 +248,7 @@
displaydir($wdir);
} else {
html_header("form.name");
html_header($course, $wdir, "form.name");
echo "<P>Create folder in $wdir:";
echo "<TABLE><TR><TD>";
echo "<FORM ACTION=index.php METHOD=post NAME=form>";
@@ -257,7 +271,7 @@
break;
case "edit":
html_header();
html_header($course, $wdir);
if (isset($text)) {
$fileptr = fopen($basedir.$file,"w");
fputs($fileptr, stripslashes($text));
@@ -280,14 +294,14 @@
echo htmlspecialchars($contents);
echo "</TEXTAREA>";
echo "</TD></TR><TR><TD>";
echo " <INPUT TYPE=submit VALUE=\"Save changes\">";
echo " <INPUT TYPE=submit VALUE=\"".get_string("savechanges")."\">";
echo "</FORM>";
echo "</TD><TD>";
echo "<FORM ACTION=index.php METHOD=get>";
echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
echo " <INPUT TYPE=submit VALUE=\"Cancel\">";
echo " <INPUT TYPE=submit VALUE=\"".get_string("cancel")."\">";
echo "</FORM>";
echo "</TD></TR></TABLE>";
}
@@ -296,7 +310,7 @@
case "zip":
if ($name) {
html_header();
html_header($course, $wdir);
$name = clean_filename($name);
$files = "";
foreach ($USER->filelist as $file) {
@@ -309,7 +323,7 @@
displaydir($wdir);
} else {
html_header("form.name");
html_header($course, $wdir, "form.name");
if (setfilelist($HTTP_POST_VARS)) {
echo "<P ALIGN=CENTER>You are about create a zip file containing:</P>";
print_simple_box_start("center");
@@ -342,7 +356,7 @@
break;
case "unzip":
html_header();
html_header($course, $wdir);
if ($file) {
echo "<P ALIGN=CENTER>Unzipping $file:</P>";
print_simple_box_start("center");
@@ -369,7 +383,7 @@
clearfilelist();
default:
html_header();
html_header($course, $wdir);
displaydir($wdir);
html_footer();
break;
@@ -460,21 +474,6 @@ function printfilelist($filelist) {
}
function display_size($file) {
$file_size = filesize($file);
if ($file_size >= 1073741824) {
$file_size = round($file_size / 1073741824 * 100) / 100 . "g";
} else if ($file_size >= 1048576) {
$file_size = round($file_size / 1048576 * 100) / 100 . "m";
} else if ($file_size >= 1024) {
$file_size = round($file_size / 1024 * 100) / 100 . "k";
} else {
$file_size = $file_size . "b";
}
return $file_size;
}
function print_cell($alignment="center", $text="&nbsp;") {
echo "<TD ALIGN=\"$alignment\" NOWRAP>";
echo "<FONT SIZE=\"-1\" FACE=\"Arial, Helvetica\">";
@@ -488,7 +487,7 @@ function displaydir ($wdir) {
global $basedir;
global $id;
global $USER;
global $USER, $CFG;
$fullpath = $basedir.$wdir;
@@ -506,30 +505,37 @@ function displaydir ($wdir) {
}
closedir($directory);
$strname = get_string("name");
$strsize = get_string("size");
$strmodified = get_string("modified");
$straction = get_string("action");
$strmakeafolder = get_string("makeafolder");
$struploadafile = get_string("uploadafile");
$strwithchosenfiles = get_string("withchosenfiles");
$strmovetoanotherfolder = get_string("movetoanotherfolder");
$strmovefilestohere = get_string("movefilestohere");
$strdeletecompletely = get_string("deletecompletely");
$strcreateziparchive = get_string("createziparchive");
$strrename = get_string("rename");
$stredit = get_string("edit");
$strunzip = get_string("unzip");
echo "<FORM ACTION=\"index.php\" METHOD=post NAME=dirform>";
echo "<HR WIDTH=640 ALIGN=CENTER NOSHADE SIZE=1>";
echo "<TABLE BORDER=0 cellspacing=2 cellpadding=2 width=640>";
echo "<TR><TD>&nbsp;</TD><TD COLSPAN=5><P><B>Current folder: $wdir</B></P>";
echo "<TR>";
echo "<TH WIDTH=5></TH>";
echo "<TH ALIGN=left>Name</TH>";
echo "<TH ALIGN=right>Size</TH>";
echo "<TH ALIGN=right>Modified</TH>";
echo "<TH ALIGN=right>Action</TH>";
echo "<TH ALIGN=left>$strname</TH>";
echo "<TH ALIGN=right>$strsize</TH>";
echo "<TH ALIGN=right>$strmodified</TH>";
echo "<TH ALIGN=right>$straction</TH>";
echo "</TR>\n";
if ($wdir == "/") {
$wdir = "";
} else {
$updir = dirname($wdir);
echo "<TR>";
print_cell("center", "");
print_cell("left", "<A HREF=\"index.php?id=$id&wdir=$updir\"><IMG SRC=\"pix/parent.gif\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"Parent folder\"></A> <A HREF=\"index.php?id=$id&wdir=$updir\">Up to $updir</A>");
echo "</TR>\n";
}
$count = 0;
if ($dirlist) {
@@ -549,7 +555,7 @@ function displaydir ($wdir) {
print_cell("left", "<A HREF=\"index.php?id=$id&wdir=$fileurl\"><IMG SRC=\"pix/folder.gif\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"Folder\"></A> <A HREF=\"index.php?id=$id&wdir=$fileurl\">".htmlspecialchars($dir)."</A>");
print_cell("right", "-");
print_cell("right", $filedate);
print_cell("right", "<A HREF=\"index.php?id=$id&wdir=$wdir&file=$filesafe&action=rename\">rename</A>");
print_cell("right", "<A HREF=\"index.php?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>");
echo "</TR>";
}
@@ -573,25 +579,31 @@ function displaydir ($wdir) {
print_cell("center", "<INPUT TYPE=checkbox NAME=\"file$count\" VALUE=\"$fileurl\">");
echo "<TD ALIGN=left NOWRAP>";
link_to_popup_window ("/file.php/$id$fileurl", "display",
if ($CFG->slasharguments) {
$ffurl = "/file.php/$id$fileurl";
} else {
$ffurl = "/file.php?file=/$id$fileurl";
}
link_to_popup_window ($ffurl, "display",
"<IMG SRC=\"pix/$icon\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"File\">",
480, 640);
echo "<FONT SIZE=\"-1\" FACE=\"Arial, Helvetica\">";
link_to_popup_window ("/file.php/$id$fileurl", "display",
link_to_popup_window ($ffurl, "display",
htmlspecialchars($file),
480, 640);
echo "</FONT></TD>";
print_cell("right", display_size($filename));
$file_size = filesize($filename);
print_cell("right", display_size($file_size));
print_cell("right", $filedate);
if ($icon == "text.gif" || $icon == "html.gif") {
$edittext = "<A HREF=\"index.php?id=$id&wdir=$wdir&file=$fileurl&action=edit\">edit</A>";
$edittext = "<A HREF=\"index.php?id=$id&wdir=$wdir&file=$fileurl&action=edit\">$stredit</A>";
} else if ($icon == "zip.gif") {
$edittext = "<A HREF=\"index.php?id=$id&wdir=$wdir&file=$fileurl&action=unzip\">unzip</A>";
$edittext = "<A HREF=\"index.php?id=$id&wdir=$wdir&file=$fileurl&action=unzip\">$strunzip</A>";
} else {
$edittext = "";
}
print_cell("right", "$edittext <A HREF=\"index.php?id=$id&wdir=$wdir&file=$filesafe&action=rename\">rename</A>");
print_cell("right", "$edittext <A HREF=\"index.php?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>");
echo "</TR>";
}
@@ -608,13 +620,12 @@ function displaydir ($wdir) {
echo "<INPUT TYPE=hidden NAME=id VALUE=\"$id\">";
echo "<INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\"> ";
$options = array (
"move" => "Move to another folder",
"delete" => "Delete completely",
"zip" => "Create zip archive"
"move" => "$strmovetoanotherfolder",
"delete" => "$strdeletecompletely",
"zip" => "$strcreateziparchive"
);
if ($count) {
choose_from_menu ($options, "action", "", $nothing="With chosen files...", "javascript:document.dirform.submit()");
//echo "<INPUT TYPE=submit VALUE=Go>";
choose_from_menu ($options, "action", "", "$strwithchosenfiles...", "javascript:document.dirform.submit()");
}
echo "</FORM>";
@@ -624,7 +635,7 @@ function displaydir ($wdir) {
echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
echo " <INPUT TYPE=hidden NAME=action VALUE=paste>";
echo " <INPUT TYPE=submit VALUE=\"Move files to here\">";
echo " <INPUT TYPE=submit VALUE=\"$strmovefilestohere\">";
echo "</FORM>";
}
echo "<TD ALIGN=right>";
@@ -632,7 +643,7 @@ function displaydir ($wdir) {
echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
echo " <INPUT TYPE=hidden NAME=action VALUE=mkdir>";
echo " <INPUT TYPE=submit VALUE=\"Make a folder\">";
echo " <INPUT TYPE=submit VALUE=\"$strmakeafolder\">";
echo "</FORM>";
echo "</TD>";
echo "<TD ALIGN=right>";
@@ -640,7 +651,7 @@ function displaydir ($wdir) {
echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
echo " <INPUT TYPE=hidden NAME=action VALUE=upload>";
echo " <INPUT TYPE=submit VALUE=\"Upload a file\">";
echo " <INPUT TYPE=submit VALUE=\"$struploadafile\">";
echo "</FORM>";
echo "</TD></TR>";
echo "</TABLE>";
+1
View File
@@ -18,6 +18,7 @@ function mimeinfo($element, $filename) {
"swf" => array ("type"=>"application/x-shockwave-flash", "icon"=>"image.gif"),
"pdf" => array ("type"=>"application/pdf", "icon"=>"pdf.gif"),
"doc" => array ("type"=>"application/msword", "icon"=>"word.gif"),
"ppt" => array ("type"=>"application/vnd.ms-powerpoint", "icon"=>"powerpoint.gif"),
"xls" => array ("type"=>"application/vnd.ms-excel", "icon"=>"excel.gif")
);
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

+6 -2
View File
@@ -10,6 +10,8 @@
optional_variable($text, "No text to display");
optional_variable($module, "moodle");
$lang = current_language();
print_header();
if (ereg("\\.\\.", $file)) {
@@ -18,9 +20,9 @@
if ($file) {
if ($module == "moodle") {
$filepath = "$CFG->dirroot/lang/$CFG->lang/help/$file";
$filepath = "$CFG->dirroot/lang/$lang/help/$file";
} else {
$filepath = "$CFG->dirroot/lang/$CFG->lang/help/$module/$file";
$filepath = "$CFG->dirroot/lang/$lang/help/$module/$file";
}
if (file_exists("$filepath")) {
@@ -45,6 +47,8 @@
echo $text;
echo "</P>";
}
close_window_button();
?>
</BODY>
</HTML>
+98 -79
View File
@@ -3,116 +3,135 @@
require("config.php");
include("course/lib.php");
include("mod/reading/lib.php");
include("mod/resource/lib.php");
include("mod/forum/lib.php");
if (! $site = get_site()) {
redirect("$CFG->wwwroot/admin/");
redirect("$CFG->wwwroot/admin/index.php");
}
if (isadmin()) {
if (moodle_needs_upgrading()) {
redirect("$CFG->wwwroot/admin/");
redirect("$CFG->wwwroot/admin/index.php");
}
$headerbutton = update_course_icon($site->id);
} else {
if (isset($USER->id)) {
$headerbutton = "<FONT SIZE=2><A HREF=\"$CFG->wwwroot/login/logout.php\">".get_string("logout")."</A></FONT>";
} else {
$headerbutton = "<FONT SIZE=2><A HREF=\"$CFG->wwwroot/login\">".get_string("login")."</A></FONT>";
$headerbutton = "<FONT SIZE=2><A HREF=\"$CFG->wwwroot/login/index.php\">".get_string("login")."</A></FONT>";
}
}
print_header("$site->fullname", "$site->fullname", "", "",
print_header("$site->fullname", "$site->fullname", "home", "",
"<META NAME=\"Description\" CONTENT=\"".stripslashes(strip_tags($site->summary))."\">",
true, $headerbutton);
$side = 180;
?>
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="5" CELLPADDING="5">
<TR>
<TD VALIGN="TOP" NOWRAP>
<?
<?
$sections = get_all_sections($site->id);
if ($site->newsitems > 0 or $sections[0]->sequence or isediting($site->id)) {
$sections = get_all_sections($site->id);
if ($site->newsitems > 0 or $sections[0]->sequence or isediting($site->id)) {
if ($sections[0]->sequence or isediting($site->id)) {
get_all_mods($site->id, $mods, $modnames, $modnamesplural, $modnamesused);
print_simple_box(get_string("mainmenu"), "CENTER", "100%", "$THEME->cellheading");
}
echo "<TD WIDTH=\"$side\" VALIGN=TOP NOWRAP>"; $firstcolumn=true;
if ($sections[0]->sequence or isediting($site->id)) {
get_all_mods($site->id, $mods, $modnames, $modnamesplural, $modnamesused);
print_simple_box(get_string("mainmenu"), "CENTER", $side, "$THEME->cellheading");
}
if ($sections[0]->sequence) {
print_section($site->id, $sections[0], $mods, $modnamesused, true);
}
if (isediting($site->id)) {
echo "<DIV ALIGN=right>";
popup_form("$CFG->wwwroot/course/mod.php?id=$site->id&section=0&add=",
$modnames, "section0", "", "Add...");
echo "</DIV>";
}
if ($site->newsitems > 0 ) {
print_simple_box(get_string("courses"), "CENTER", "100%", "$THEME->cellheading");
print_all_courses($cat=1, "minimal", 10);
}
echo "<IMG SRC=\"pix/spacer.gif\" WIDTH=200 HEIGHT=0><BR>";
if ($sections[0]->sequence) {
print_section($site->id, $sections[0], $mods, $modnamesused, true, $side);
}
if (isadmin()) {
print_admin_links($site->id);
}
?>
</TD>
<TD WIDTH="70%" VALIGN="TOP">
<? if ($site->newsitems == 0 ) {
print_simple_box(get_string("availablecourses"), "CENTER", "100%", "$THEME->cellheading");
echo "<IMG HEIGHT=8 SRC=\"pix/spacer.gif\" ALT=\"\"><BR>";
print_all_courses();
} else {
if (! $newsforum = forum_get_course_forum($site->id, "news")) {
error("Could not find or create a main news forum for the site");
}
if (isset($USER->id)) {
$SESSION->fromdiscussion = "$CFG->wwwroot";
save_session("SESSION");
if (forum_is_subscribed($USER->id, $newsforum->id)) {
$subtext = get_string("unsubscribe", "forum");
} else {
$subtext = get_string("subscribe", "forum");
}
$headertext = "<TABLE BORDER=0 WIDTH=100% CELLPADDING=0 CELLSPACING=0><TR>
<TD>".get_string("sitenews")."</TD>
<TD ALIGN=RIGHT><FONT SIZE=1>
<A HREF=\"mod/forum/subscribe.php?id=$newsforum->id\">$subtext</A>
</TD></TR></TABLE>";
} else {
$headertext = get_string("sitenews");
}
print_simple_box($headertext, "CENTER", "100%", $THEME->cellheading);
echo "<IMG HEIGHT=8 SRC=\"pix/spacer.gif\" ALT=\"\"><BR>";
forum_print_latest_discussions($newsforum->id, $site->newsitems);
}
?>
</TD>
<TD WIDTH="30%" VALIGN="TOP">
<?
if (isediting($site->id)) {
$site->summary .= "<BR><CENTER><A HREF=\"admin/site.php\"><IMG SRC=\"pix/i/edit.gif\" BORDER=0></A>";
echo "<DIV ALIGN=right>";
popup_form("$CFG->wwwroot/course/mod.php?id=$site->id&section=0&add=",
$modnames, "section0", "", get_string("add")."...");
echo "</DIV>";
}
print_simple_box($site->summary, "", "100%", $THEME->cellheading);
?>
</TD>
if ($site->newsitems > 0 ) {
$categories = get_all_categories();
if (count($categories) > 1) {
print_simple_box(get_string("categories"), "CENTER", $side, "$THEME->cellheading");
print_course_categories($categories, "none", $side);
} else {
print_simple_box(get_string("courses"), "CENTER", $side, "$THEME->cellheading");
$category = array_shift($categories);
print_all_courses($category->id, "minimal", 10);
}
}
print_spacer(1,$side);
}
if (isadmin()) {
if (!$firstcolumn) {
echo "<TD WIDTH=\"$side\" VALIGN=TOP NOWRAP>"; $firstcolumn=true;
}
print_admin_links($site->id, $side);
}
if ($firstcolumn) {
echo "</TD>";
}
echo "<TD WIDTH=70% VALIGN=TOP>";
if ($site->newsitems == 0 ) {
print_simple_box(get_string("availablecourses"), "CENTER", "100%", "$THEME->cellheading");
print_spacer(8,1);
$categories = get_all_categories();
if (count($categories) > 1) {
print_course_categories($categories, "index");
} else {
print_all_courses("all");
}
} else {
if (! $newsforum = forum_get_course_forum($site->id, "news")) {
error("Could not find or create a main news forum for the site");
}
if (isset($USER->id)) {
$SESSION->fromdiscussion = "$CFG->wwwroot";
save_session("SESSION");
if (forum_is_subscribed($USER->id, $newsforum->id)) {
$subtext = get_string("unsubscribe", "forum");
} else {
$subtext = get_string("subscribe", "forum");
}
$headertext = "<TABLE BORDER=0 WIDTH=100% CELLPADDING=0 CELLSPACING=0><TR>
<TD>".get_string("sitenews")."</TD>
<TD ALIGN=RIGHT><FONT SIZE=1>
<A HREF=\"mod/forum/subscribe.php?id=$newsforum->id\">$subtext</A>
</TD></TR></TABLE>";
} else {
$headertext = get_string("sitenews");
}
print_simple_box($headertext, "CENTER", "100%", $THEME->cellheading);
print_spacer(8,1);
forum_print_latest_discussions($newsforum->id, $site->newsitems);
}
echo "</TD>";
echo "<TD WIDTH=30% VALIGN=TOP>";
if (isediting($site->id)) {
$site->summary .= "<BR><CENTER><A HREF=\"admin/site.php\"><IMG SRC=\"pix/i/edit.gif\" BORDER=0></A>";
}
print_simple_box($site->summary, "", "100%", $THEME->cellheading);
print_spacer(1,$side);
echo "</TD>";
?>
</TR>
</TABLE>
<? print_footer("home") ?>
<? print_footer("home"); // Please do not modify this line ?>
+23
View File
@@ -0,0 +1,23 @@
README FOR LANGUAGE PLUGIN
--------------------------
This directory contains all the strings and texts needed
to render a Moodle site in a particular language.
The default language is English. If a string is missing
for any reason from another language, then the English
version will be used.
Note that each installed module should have a file here,
as well as the main file which is called "moodle.php".
The "help" directory contains whole pages written in HTML,
and the "docs" directory contains other miscellaneous
documents.
If you are thinking of translating Moodle to another language,
please contact me so I can help you!
Cheers,
Martin martin@dougiamas.com
+30
View File
@@ -0,0 +1,30 @@
<?PHP // $Id$
// assignment.php - created with Moodle 1.0.6 dev (2002101001)
$string['assignmentdetails'] = "Aufgabendetails";
$string['assignmentname'] = "Aufgabenname";
$string['assignmenttype'] = "Aufgabentyp";
$string['description'] = "Beschreibung ";
$string['duedate'] = "Abgabefrist";
$string['early'] = "\$a früh";
$string['failedupdatefeedback'] = "Keine Aktualisierung der Eintragsmeldung für Benutzer \$a";
$string['feedbackupdated'] = "Eintragsmeldung aktualisiert für \$a Leute ";
$string['late'] = "\$a spät ";
$string['maximumgrade'] = "Höchster Grad ";
$string['maximumsize'] = "Maximale Größe";
$string['modulename'] = "Aufgabe";
$string['modulenameplural'] = "Aufgaben";
$string['newsubmissions'] = "Aufgaben eingetragen";
$string['notsubmittedyet'] = "Noch nicht eingetragen";
$string['overwritewarning'] = "Hinweis: erneutes Hochladen ERSETZT Ihren gegenwärtigen Eintrag ";
$string['submissionfeedback'] = "Eintragsmeldung";
$string['submissions'] = "Einträge";
$string['submitassignment'] = "Tragen Sie Ihre Aufgabe ein unter Verwendung dieses Formulars";
$string['submitted'] = "Eingetragen";
$string['typeuploadsingle'] = "Laden Sie einzige Datei hoch, Wert zwischen 0 - 100 Punkten";
$string['uploadedfiles'] = "hochgeladene Dateien";
$string['viewsubmissions'] = "Zeige \$a eingetragen Aufgaben ";
$string['yoursubmission'] = "Ihre Eintrag";
?>
+17
View File
@@ -0,0 +1,17 @@
<?PHP // $Id$
// choice.php - created with Moodle 1.0.6 dev (2002100200)
$string['answered'] = "Beantwortet";
$string['choice'] = "Wahl \$a";
$string['choicename'] = "Wahlname";
$string['choicetext'] = "Wahltext";
$string['modulename'] = "Wahl ";
$string['modulenameplural'] = "Wahlen ";
$string['notanswered'] = "Noch nicht beantwortet";
$string['responses'] = "Antworten ";
$string['responsesto'] = "Antworten zu \$a";
$string['savemychoice'] = "Meine Wahl speichern";
$string['viewallresponses'] = "Zeige \$a Antworten";
?>
+18
View File
@@ -0,0 +1,18 @@
ABOUT THIS DIRECTORY
--------------------
DO NOT CHANGE, RENAME OR MOVE ANY OF THE FILES
IN THIS DIRECTORY unless you REALLY know what
you are doing.
Changing these files could mess up your course.
This directory contains files uploaded to your
course within particular modules (mostly by
students), such as assignment submissions and
forum attachments.
The names of the directories and files within
this directory are very specific and are
automatically maintained by Moodle.
+113
View File
@@ -0,0 +1,113 @@
<?PHP // $Id$
// forum.php - created with Moodle 1.0.6 dev (2002100200)
$string['addanewdiscussion'] = "Ein neues Diskussion-Thema hinzufügen";
$string['allowchoice'] = "Jeder darf auswählen";
$string['allowdiscussions'] = "Darf ein \$a in dieses Forum schreiben? ";
$string['allowratings'] = "Dürfen Einträge bewertet werden?";
$string['allowsdiscussions'] = "Jeder darf in diesem Forum ein Diskussion-Thema beginnen.";
$string['anyfile'] = "Jede Datei";
$string['attachment'] = "Anhang";
$string['bynameondate'] = "durch \$a->name - \$a->date ";
$string['couldnotadd'] = "Eintrag konnte aufgrund eines unbekannten Fehlers nicht hinzugefügt werden.";
$string['couldnotdeleteratings'] = "Das kann nicht gelöscht werden, weil es schon bewertet wurde .";
$string['couldnotdeletereplies'] = "Das kann nicht gelöscht werden, weil es schon beantwortet wurde .";
$string['couldnotupdate'] = "Der Eintrags konnte aufgrund eines unbekannten Fehlers nicht übernommen werden.";
$string['delete'] = "Löschen";
$string['deleteddiscussion'] = "Das Diskussion Thema ist gelöscht worden ";
$string['deletedpost'] = "Der Eintrag wurde gelöscht";
$string['deletesure'] = "Möchten Sie diesen Eintrag wirklich löschen?";
$string['discussion'] = "Diskussion";
$string['discussions'] = "Diskussionen";
$string['discussionsstartedby'] = "Diskussionen starteten am \$a";
$string['discussthistopic'] = "Diesen Eintrag diskutieren";
$string['eachuserforum'] = "Jeder trägt eine Diskussion ein.";
$string['edit'] = "Bearbeiten";
$string['editing'] = "Bearbeitung";
$string['emptymessage'] = "Fehler in Ihrem Eintrag. Vielleicht haben Sie keinen Text eingegeben oder der Anhang war zu gross. Ihre Änderungen wurden NICHT gespeichert.";
$string['everyonecanchoose'] = "Jeder kann sich eintragen";
$string['everyoneissubscribed'] = "Jeder ist in diesem Forum eingetragen";
$string['forcesubscribe'] = "Jeder ist zwingend in diesem Forum eingetragen";
$string['forcesubscribeq'] = "Jeder ist in zwingend diesem Forum eingetragen?";
$string['forum'] = "Forum";
$string['forumintro'] = "Einführung ins Forum";
$string['forumname'] = "Name des Forums";
$string['forums'] = "Foren";
$string['forumtype'] = "Forentyp";
$string['generalforum'] = "Standard Forum zur allgemeinen Nutzung";
$string['generalforums'] = "Allgemeines Forum";
$string['inforum'] = "in \$a";
$string['intronews'] = "Allgemeine Nachrichten und Ankündigungen";
$string['introsocial'] = "Ein offenes Forum, um über alles zu Plaudern";
$string['introteacher'] = "Ein Forum ausschliesslich für Anmerkungen und Diskussionen der Lehrer";
$string['learningforums'] = "Lernforum";
$string['maxtimehaspassed'] = "Die Höchstdauer für die Bearbeitung diesen Eintrag (\$a) ist überschritten!";
$string['message'] = "Mitteilung";
$string['modeflatnewestfirst'] = "Anzeige der Antworten flach, aktuellste zuerst";
$string['modeflatoldestfirst'] = "Anzeige der Antworten flach, älteste zuerst";
$string['modenested'] = "Anzeige der Antworten geschachtelt";
$string['modethreaded'] = "Anzeige der Antworten geschachtelt hierarchisch";
$string['modulename'] = "Forum";
$string['modulenameplural'] = "Foren";
$string['more'] = "mehr";
$string['namenews'] = "Nachrichtenforum";
$string['namesocial'] = "Soziales Forum";
$string['nameteacher'] = "Lehrer-Forum";
$string['newforumposts'] = "Neue Foren-Beiträge";
$string['nodiscussions'] = "Es befindet sich noch kein Diskussionsthema in diesem Forum";
$string['noguestpost'] = "Gäste dürfen hier nicht eintragen";
$string['noposts'] = "Keine Beiträge";
$string['nosubscribers'] = "Momentan gibt es keine Teilnehmer in diesem Forum";
$string['nownotsubscribed'] = "\$a->name wird keine Kopien von '\$a->forum' per Email erhalten";
$string['nowsubscribed'] = "\$a->name wird Kopien von '\$a->forum' per Email erhalten";
$string['numposts'] = "\$a Beiträge";
$string['olderdiscussions'] = "Ältere Diskussionen";
$string['openmode0'] = "Keine Diskussionen, keine Antworten";
$string['openmode1'] = "Keine Diskussionen, aber Atworten erlaubt";
$string['openmode2'] = "Discussions and replies are allowed";
$string['parentofthispost'] = "Verfasser dieses Beitrags";
$string['postadded'] = "Ihr Eintrag wurde erfolgreich hinzugefügt. <P>Sie haben \$a zu bearbeiten, sofern Sie Änderungen machen möchten.";
$string['postingtip'] = "<B>Eintragstipps
für Antworten
<UL>
<LI>lesen Sie Ihre aufmerksam durch
<LI>achten sie auf Dinge, die Sie kommentieren
</UL>
Beim Schreiben
<UL>
<LI>verfassen Sie Ihren Beitrag kurz und themenbezogen
<LI>drücken Sie sich klar aus
<LI>überlegen Sie sich Fragen die Sie stellen können
</UL>";
$string['postmailinfo'] = "Hiermit erhalten Sie die Kopie einer Mitteilung, die auf der internet-Seite \$a eingetragen wurde.
Um auf diese zu antworten, folgen Sie bitte diesem Link:";
$string['postrating1'] = "Durchaus differrnziertes Wissen";
$string['postrating2'] = "Durchaus diffenziert und fundiert";
$string['postrating3'] = "Zeigt meistens fundiertes Wissen";
$string['postupdated'] = "Ihr Beitrag wurde aktualisiert";
$string['processingpost'] = "Bearbeite Beitrag \$a";
$string['rate'] = "Bewerte";
$string['ratings'] = "Bewertung";
$string['re'] = "Re:";
$string['readtherest'] = "Lesen Sie den Rest des Themas";
$string['repliesmany'] = "\$a Antworten bis jetzt";
$string['repliesone'] = "\$a Antwort bis jetzt";
$string['reply'] = "Antwort";
$string['search'] = "Suche";
$string['searchforums'] = "Durchsuche Foren";
$string['sendinratings'] = "Aktuelle Bewertung senden";
$string['showsubscribers'] = "Teilnehmer anzeigen";
$string['singleforum'] = "Eine einzelne, einfache Diskussion";
$string['subject'] = "Betreff";
$string['subscribe'] = "In diesem Forum anmelden";
$string['subscribed'] = "Angemeldet";
$string['subscribers'] = "Teilnehmer";
$string['subscribersto'] = "Teilnehmer für '\$a'";
$string['unsubscribe'] = "Von diesem Forum abmelden";
$string['youratedthis'] = "Ihre Bewertung";
$string['yournewtopic'] = "Ihr neues Diskussionsthema";
$string['yourreply'] = "Ihre Antwort";
?>
+7
View File
@@ -0,0 +1,7 @@
<P ALIGN=CENTER><B>Choice options</B></P>
<P>Here is where you specify the options that participants
have to choose from.
<P>You can fill in any number of these: it's OK to leave some blank
if you don't need the full 6 options.
+3
View File
@@ -0,0 +1,3 @@
<P ALIGN=CENTER> <B>Kurs-Rubriken</B> </P>
<P> Ihr <SPAN ID=UNKNOWNWORD><FONT COLOR="#ff00ff">sel@ction</FONT></SPAN> Der Verwalter kann mehrere Kurs-Rubriken angelegt haben.<P> Zum Beispiel, "Wissenschaft", "Geisteswissenschaften", "Gesundheitswesen" etc.<P> Die passende für Ihren Kurs wählen. Diese Auswahl bestimmt, wo Ihr Kurs auf der aufgelistet wird und es erleichtert den Teilnehmern, den richtigen Kurrs zu finden.
+24
View File
@@ -0,0 +1,24 @@
<P ALIGN=CENTER><B>Moodle course formats</B></P>
<P><B>Weekly format</B></P>
<UL>
The course is organised week by week, with a clear start date and a finish date.
Each week consists of activities. Some of them, like journals, may have
"open windows" of, say, two weeks after which they become unavailable.
</UL>
<P><B>Topics format</B></P>
<UL>
Very similar to the weekly format, except that each "week" is called a topic.
A "topic" is not restricted to any time limit. You don't need to specify any
dates.
</UL>
<P><B>Social format</B></P>
<UL>
This format is oriented around one main forum, the Social forum, which appears
listed on the main page. It is useful for situations that are more freeform.
They may not even be courses. For example, it could be used as a departmental
notice board.
</UL>
+4
View File
@@ -0,0 +1,4 @@
<P ALIGN=CENTER><B>Course Full name</B></P>
<P>The full name of the course is displayed at the top of the screen and in the course listings.</P>
+15
View File
@@ -0,0 +1,15 @@
<P ALIGN=CENTER><B>Course News Items</B></P>
<P>A special forum called "News" appears in the
"weekly" and "topics" course formats. It's
a good place to post notices for all students
to see. (By default, all students are subscribed
to this forum, and will receive your notices by
email.)
<P>This setting determines how many recent items
appear on your course home page, in a news box
down the right-hand side.
<P>If you set it to "0 news items" then the news
box won't even appear.
+14
View File
@@ -0,0 +1,14 @@
<P ALIGN=CENTER><B>Course Number of Weeks/Topics</B></P>
<P>This setting is only used by the 'weekly' and 'topics'
course formats.
<P>In the 'weekly' format, it specifies the number of weeks
that the course will run for, starting from the
course starting date.
<P>In the 'topics' format, it specifies the number of topics
in the course.
<P>Both of these translate to the number of "boxes" down the
middle of the course page.
+7
View File
@@ -0,0 +1,7 @@
<P ALIGN=CENTER><B>Course short name</B></P>
<P>Many institutions have a shorthand way of referring to a course, such as
BP102 or COMMS. Even you don't already have such a name for your course,
make one up here. It will be used in several places where the long name
isn't appropriate (such us in the subject line of email).</P>
+19
View File
@@ -0,0 +1,19 @@
<P ALIGN=CENTER><B>Course Start Date</B></P>
<P>This is where you specify the starting time of the
course (in your own timezone).
<P>If you are using a 'weekly' course format, this will
affect the display of the weeks. The first week will
start on the date you set here.
<P>This setting will not affect courses using the
'social' or 'topics' formats.
<P>However, one place this setting will be affect is
the display of logs, which use this date as the earliest
possible date you can display.
<P>In general, if your course does have a real starting date
then it makes sense to set this date to that, no matter
what course formats you are using.
+23
View File
@@ -0,0 +1,23 @@
<P ALIGN=CENTER><B>Course Enrolment Key</B></P>
<P>A course enrolment key is what keeps unwanted people
out of your course.
<P>If you leave this blank, then anyone who has created
a Moodle username on this site will be able to enrol
in your course simply by going in to it.
<P>If you put something here, then students who are trying
to get in for the FIRST TIME ONLY will be asked to supply
this word or phrase.
<P>The idea is that you will supply the key to authorised
people using another means like private email, snail mail,
on the phone or even verbally in a face to face class.
<P>If this password "gets out" and you have unwanted people
enrolling, you can unenrol them (see their user profile page)
and change this key. Any legitimate students who have already
enrolled will not be affected, but the unwanted people won't be
able to get back in.
+20
View File
@@ -0,0 +1,20 @@
<P ALIGN=CENTER><B>Allowing new posts</B></P>
<P>This option allows you to restrict students from posting
new content in this forum.
<P>For most forums you will want to leave students unrestricted
and choose the first option to allow them to start new discussion
topics (threads), and also to post replies within those threads.
<P>Sometimes, however, you will want to disable this ability. For
example, this is useful for the News forum when you only want
teachers to post new items that appear on the course main page.
In this case you might choose the third option "No discussions, no replies".
<P>Sometimes you might want to only allow teachers to start new
discussions, but still allow students to reply within those
threads (for example within the news forum on the site home page).
In this case you would choose the second option, "No discussions, but
replies are allowed".
+21
View File
@@ -0,0 +1,21 @@
<P ALIGN=CENTER><B>Attachments for posts</B></P>
<P>You can optionally attach ONE file from your own computer
to any post in the forums. This file is uploaded to the
server and stored with your post.
<P>This is useful when you want to share a picture, for example,
or a Word document.
<P>This file can be of any type, however it is highly recommended
that the file is named using standard 3-letter internet
suffixes such as .doc for a Word document, .jpg or .png
for an image, and so on. This will make it easier for others
to download and view your attachment in their browsers.
<P>If you re-edit a posting and attach a new file, then any
previous attached files for that post will be replaced.
<P>If you re-edit a posting with an attachment and leave
this space blank, then the original attachment will be
retained.
+16
View File
@@ -0,0 +1,16 @@
<P ALIGN=CENTER><B>Forum Types</B></P>
<P>There are several different types of forum to choose from:
<P><B>A single simple discussion</B> - is just a single topic, all on one page.
Useful for short, focussed discussions.
<P><B>Standard forum for general use</B> - is an open forum where any one can
start a new topic at any time. This is the best general-purpose forum.
<P><B>Each person posts one discussion</B> - Each person can post exactly one
new discussion topic (everyone can reply to them though). This is useful when
you want each student to start a discussion about, say, their reflections on
the week's topic, and everyone else responds to these.
<P>(More development to come in future versions of Moodle)
+70
View File
@@ -0,0 +1,70 @@
<P ALIGN=CENTER><B>Forum Ratings</B></P>
<P>Individual posts can be rated using a scale based on the theory of
<strong>separate and connected knowing</strong>.
<p>This theory may help you to look at human interactions
in a new way. It describes two different ways that we can evaluate and learn
about the things we see and hear.
<p>Although each of us may use these two methods in different amounts at different
times, it may be useful to imagine two people as examples, one who is a mostly
separate knower (Jim) and the other a mostly connected knower (Mary).</p>
<ul>
<li>Jim likes to remain as 'objective' as possible without including his feelings
and emotions. When in a discussion with other people who may have different
ideas, he likes to defend his own ideas, using logic to find holes in his
opponent's ideas. He is critical of new ideas unless they are proven facts
from reputable sources such as textbooks, respected teachers or his own direct
experience. Jim is a very <strong>separate knower</strong>.<br><br>
</li>
<li>Mary is more sensitive to other people. She is skilled at empathy and tends
to listen and ask questions until she feels she can connect and &quot;understand
things from their point of view&quot;. She learns by trying to share the experiences
that led to the knowledge she finds in other people. When talking to others,
she avoids confrontation and will often try to help the other person if she
can see a way to do so, using logical suggestions. Mary is a very <strong>connected
knower</strong>.</li>
</ul>
<p>Did you notice in these examples that the separate knower is male and the connected
knower is female? Some studies have shown that statistically this tends to be
the case, however individual people can be anywhere in the spectrum between
these two extremes. </p>
<p>For a collaborative and effective group of learners it may be best if everyone
were able to use BOTH ways of knowing.</p>
<p>In a particular situation like an online forum, a single post by a person may
+18
View File
@@ -0,0 +1,18 @@
<P ALIGN=CENTER><B>Forum Subscription</B></P>
<P>When a person is subscribed to a forum it means that
they will be sent email copies of every post in that forum
(posts are sent about 30 minutes after the post was first
written).
<P>People can usually choose whether or not they want to be
subscribed to each forum.
<P>However, if a teacher forces subscription on a particular forum
then this choice is taken away and everyone in the class will get
email copies.
<P>This is especially useful in the News forum and in forums
towards the beginning of the course (before everyone has
worked out that they can subscribe to these emails themselves).
+21
View File
@@ -0,0 +1,21 @@
<P ALIGN=CENTER><B>Guest Access</B></P>
<P>You have the choice of allowing "guests" into your course.
<P>People can log in as guests using the "Login as a guest" button
on the login screen.
<P>Guests ALWAYS have "read-only" access - meaning they can't leave
any posts or otherwise mess up the course for real students.
<P>This can be handy when you want to let a colleague in to
+13
View File
@@ -0,0 +1,13 @@
<P ALIGN=CENTER><B>Help on writing html</B></P>
<P>When writing HTML in Moodle, you are free to use any HTML tags you like
to produce the effect you want.
<P>Your code will normally be printed on the page within a table cell,
so:
<UL>
<LI>there is no need to use any &lt;HEAD> or &lt;BODY> tags
<LI>be careful about unmatched &lt;/TABLE> tags that may mess up the display.
</UL>
+12
View File
@@ -0,0 +1,12 @@
<P ALIGN=CENTER><B>Language Editing</B></P>
<P>To edit languages on this page the files need to be writable
by the web server process.
<P>Within some of the strings you will notice <B>$a</B> and <B>$a->something</B>.
<P>These represent variables that will be replaced by names or other words from
within Moodle.
<P>When there is only one variable, the $a form is used. When there are two or
more variables, then each one has a name.
+69
View File
@@ -0,0 +1,69 @@
<P ALIGN=CENTER><B>Activity Modules</B></P>
<P>Moodle contains a wide range of activity modules that can be used to
build up any type of course.</P>
<P><IMG VALIGN=absmiddle SRC="<?=$CFG->wwwroot?>/mod/forum/icon.gif">&nbsp;<B>Forums</B></P>
<UL>
<P>This activity can be the most important - it is here that most discussion takes place.
Forums can be structured in different ways, and can include peer rating of each posting.
The postings can be viewed in a variety for formats, and can include attachments.
By subscribing to a forum, participants will receive copies of each new posting
in their email. A teacher can impose subscription on everyone if they want to.
</UL>
<P><IMG VALIGN=absmiddle SRC="<?=$CFG->wwwroot?>/mod/journal/icon.gif">&nbsp;<B>Journals</B></P>
<UL>
<P>This module is a very important reflective activity. The teacher
asks the student to reflect on a particular topic, and the student can
edit and refine their answer over time. This answer is private and
can only be seen by the teacher, who can offer feedback and a grade
on each journal entry. It's usually a good idea to have about one
Journal activity per week.</P>
</UL>
<P><IMG VALIGN=absmiddle SRC="<?=$CFG->wwwroot?>/mod/resource/icon.gif">&nbsp;<B>Resources</B></P>
<UL>
<P>Resources are content: information the teacher wants to bring into the
course. These can be prepared files uploaded to the course
server; pages edited directly in Moodle; or external web pages
made to appear part of this course.</P>
</UL>
<P><IMG VALIGN=absmiddle SRC="<?=$CFG->wwwroot?>/mod/assignment/icon.gif">&nbsp;<B>Assignments</B></P>
<UL>
<P>Assignments allow the teacher to specify a task that requires students
to prepare digital content (any format) and submit it by uploading it
to the server. Typical assignments include essays, projects, reports
and so on. This module includes grading facilities.</P>
</UL>
<P><IMG VALIGN=absmiddle SRC="<?=$CFG->wwwroot?>/mod/quiz/icon.gif">&nbsp;<B>Quizzes</B></P>
<UL>
<P>This module allows the teacher to design and set quiz tests, consisting of
multiple choice, true-false, and short answer questions. These
questions are kept in a categorised database, and can be re-used
within courses and even between courses. Quizzes can allow
multiple attempts. Each attempt is automatically marked, and the
teacher can choose whether to give feedback or to show correct answers.
This module includes grading facilities.</P>
</UL>
<P><IMG VALIGN=absmiddle SRC="<?=$CFG->wwwroot?>/mod/choice/icon.gif">&nbsp;<B>Choices</B></P>
<UL>
<P>A choice activity is very simple - the teacher asks a question and specifies a
choice of multiple responses. It can be useful as a quick poll to
stimulate thinking about a topic; to allow the class to vote on
a direction for the course; or to gather research consent.
</UL>
<P><IMG VALIGN=absmiddle SRC="<?=$CFG->wwwroot?>/mod/survey/icon.gif">&nbsp;<B>Surveys</B></P>
<UL>
<P>The Survey module provides a number of verified survey instruments that
have been found useful in assessing and stimulating learning in
online environments. Teachers can use these to gather data from their
students that will help them learn about their class and reflect
on their own teaching.</P>
</UL>
+18
View File
@@ -0,0 +1,18 @@
<P ALIGN=CENTER><B>Uploading a picture</B></P>
<P>You can upload a picture from your computer to this server, and this picture will be used in various places to represent you.
<P>For this reason, the best images to use are a close-up of your face, but you can use any image you like.
<P>The picture must be in JPG or PNG format (ie the names will usually end in .jpg or .png).
<P>You can get a picture file using one of four methods:
<OL>
<LI>Using a digital camera, your photos will most likely already be on your computer in the right format.
<LI>You can use a scanner to scan a printed photograph. Make sure you save it as JPG or PNG format.
<LI>If you're artistic, you might draw a picture using a paint program.
<LI>Lastly, you can "steal" images from the web. <A TARGET=google HREF="http://images.google.com/">http://images.google.com</A> is a superb place to search for images. Once you find one, you can "right-click" on them with the mouse and choose "Save this image..." from the menu (different computers may vary slightly).
</OL>
<P>To upload the image, click the "Browse" button on this editing page, and select the image from your hard disk.
<P>NOTE: Make sure that the file is not larger than the maximum size listed, or it will not be uploaded.
<P>Then click "Update my Profile" at the bottom - the image file will be cropped to a square and resized down to 100x100 pixels.
<P>When you are taken back to your profile page, the image might not appear to have changed. If this is so, just use the "Reload" button in your browser.
+94
View File
@@ -0,0 +1,94 @@
<h2>Asking questions</h2>
<p>Socratic questions are open-ended, probing questions designed to promote critical
evaluation of ideas, as well as encourage the creation of new ideas. Below are
some examples of such questions:</p>
<h3>Questions of Clarification</h3>
<ul>
<li>What do you mean by ____?</li>
<li>What is your main point?</li>
<li>How does _____ relate to _____?</li>
<li>Could you put that another way?</li>
<li>Is your basic point _____ or _____?</li>
<li>What do you think is the main issue here?</li>
<li>Let me see if I understand you; do you mean _____ or _____?</li>
<li>How does this relate to our problem/discussion/issue?</li>
<li>What do you, Mike, mean by this remark? What do you take Mike to mean by
his remark?</li>
<li>Jane, can you summarize in your own words what Richard said? . . . Richard,
is this what you meant?</li>
<li>Could you give me an example?</li>
<li>Would this be an example, . . .?</li>
<li>Could you explain this further?</li>
<li>Would you say more about that?</li>
<li>Why do you say that?</li>
</ul>
<h3>Questions that probe assumptions</h3>
<ul>
<li>What are you assuming?</li>
<li>What is Jenny assuming?</li>
<li>What could we assume instead?</li>
<li>You seem to be assuming _____. Do I understand you correctly?</li>
<li>All of your reasoning depends on the idea that _____. Why have you based
your reasoning on _____ instead of _____?</li>
<li>You seem to be assuming _____. How do you justify taking that for granted?</li>
<li>Is that always the case? Why do you think the assumption holds here?</li>
<li>Why would someone make that assumption? </li>
</ul>
<h3>Questions that probe reasons and evidence</h3>
<ul>
<li>What would be an example?</li>
<li>How do you know?</li>
<li>Why do you think that is true?</li>
<li>Do you have any evidence for that?</li>
<li>What difference does that make?</li>
<li>What are your reasons for saying that?</li>
<li>What other information do you need?</li>
<li>Could you explain your reasons to us?</li>
<li>Are these reasons adequate?</li>
+6
View File
@@ -0,0 +1,6 @@
<P ALIGN=CENTER><B>Quiz attempts</B></P>
<P>Students may be allowed to have multiple attempts at a quiz.
<P>This can help make the process of taking the quiz more of
an educational activity rather than simply an assessment.
+17
View File
@@ -0,0 +1,17 @@
<P ALIGN=CENTER><B>Question categories</B></P>
<P>Rather than keeping all your questions in one big list,
you can create categories to keep them in.
<P>Each category consists of a name and a short description.
<P>Each category can also be "published", which means
that the category (and all questions in it) will be
available to all courses on this server, so that
other courses can use your questions in their quizzes.
<P>Categories can also be created or deleted at will.
However, if you try to delete a category containing
questions, then you will be asked to specify another
category to move them to.
+6
View File
@@ -0,0 +1,6 @@
<P ALIGN=CENTER><B>Show correct answers</B></P>
<P>If you enable correct answers, then the
feedback will show also show the correct answer
for each question (highlighted in a bright colour).
</P>
+5
View File
@@ -0,0 +1,5 @@
<P ALIGN=CENTER><B>Feedback</B></P>
<P>If you enable quiz feedback, then students will receive
question feedback on every answer (right or wrong).</P>
+25
View File
@@ -0,0 +1,25 @@
<P ALIGN=CENTER><B>Grading method</B></P>
<P>When multiple attempts are allowed, there are different ways
you can use the grades to calculate the student's final
grade for the quiz.
<P><B>Highest grade</B><P>
<UL>
<P>The final grade is the highest (best) grade in any attempt.
</UL>
<P><B>Average grade</B><P>
<UL>
<P>The final grade is the average (simple mean) grade of all attempts.
</UL>
<P><B>First grade</B><P>
<UL>
<P>The final grade is the grade gained on the first attempt (other attempts are ignored).
</UL>
<P><B>Last grade</B><P>
<UL>
<P>The final grade is the grade gained on the most recent attempt only.
</UL>
+11
View File
@@ -0,0 +1,11 @@
<P ALIGN=CENTER><B>Maximum grade</B></P>
<P>The maximum grade you set for a quiz is what all grades
are scaled to.
<P>For example, you might set the max grade to 20, because the
quiz is worth 20% of the whole course.
<P>Even though you might have 10 questions in your quiz
worth a total of 50 marks, all grades out of 50 will be
"scaled down" to the quiz max grade of 20.
+19
View File
@@ -0,0 +1,19 @@
<P ALIGN=CENTER><B>Multiple Choice questions</B></P>
<P>In response to a question (that may include a image) the respondent
chooses from multiple answers. There are two types of multiple choice
questions - single answer and multiple answer.
<P>Single-answer questions allow one and only one answer to be chosen.
Generally all the grades for such a question should be positive.
<P>Multiple-answer questions allow one or more answers to be chosen - each answer
may carry a positive or negative grade, so that choosing ALL the options
will not necessarily result in good grade. If the total grade is negative
then the total grade for this question will be zero. Careful, it is
possible to create questions that have scores greater than 100%.
<P>Finally, each answer (right or wrong) should include feedback - this feedback
will be shown to the respondent next to each of their answers (if the quiz
itself is configured to show feedback).
</P>
+37
View File
@@ -0,0 +1,37 @@
<P ALIGN=CENTER><B>Creating a new question</B></P>
<P>You can add a variety of different types of questions to a category:</P>
<P><B>Multiple Choice</B></P>
<UL>
<P>In response to a question (that may include a image) the respondent
chooses from multiple answers. There are two types of multiple choice
questions - single answer and multiple answer.
<P>More info: <? helpbutton("multichoice", "", "quiz") ?></P>
</UL>
<P><B>Short Answer</B></P>
<UL>
<P>In response to a question (that may include a image), the respondent
types a word or phrase. There may several possible correct answers,
with different grades. Answers may or may not be sensitive to case.
</P>
<P>More info: <? helpbutton("shortanswer", "", "quiz") ?></P>
</UL>
<P><B>True/False</B></P>
<UL>
<P>In response to a question (that may include a image), the respondent
selects from two options: True or False.
</P>
<P>More info: <? helpbutton("truefalse", "", "quiz") ?></P>
</UL>
<P><B>Random</B></P>
<UL>
<P>(Not yet implemented) Allows you to select a number of other questions from
which one gets randomly selected each time a student attempts the quiz.
</P>
<P>More info: <? helpbutton("random", "", "quiz") ?></P>
</UL>
+3
View File
@@ -0,0 +1,3 @@
<P ALIGN=CENTER><B>Random question</B></P>
+10
View File
@@ -0,0 +1,10 @@
<P ALIGN=CENTER><B>Short Answer questions</B></P>
<P>In response to a question (that may include a image) the respondent
types a word or short phrase.
<P>There may be several possible correct answers, each with a different
grade. If the "Case sensitive" option is selected, then you can
have different scores for "Word" or "word".
<P>Answers are compared exactly, so be careful with your spelling!
+5
View File
@@ -0,0 +1,5 @@
<P ALIGN=CENTER><B>Opening and closing the quiz</B></P>
<P>You can specify times when the quiz is accessible for people to make attempts.
<P>Before the opening time, and after the closing time, the quiz will be unavailable.
+11
View File
@@ -0,0 +1,11 @@
<P ALIGN=CENTER><B>True/False questions</B></P>
<P>In response to a question (that may include a image) the respondent
chooses from True or False.
<P>If feedback is enabled, then the appropriate feedback message is
shown to the respondent after answering the quiz. For example,
if the correct answer is "False", but they answer "True" (getting
it wrong) then the "True" feedback is shown.
</P>
+23
View File
@@ -0,0 +1,23 @@
<P ALIGN=CENTER><B>Resource Type</B></P>
<P>Resources are any content you can dream up. These are the
different types, which mostly specify how the content is
to be accessed:
<P><B>Plain text</B> - the easiest type. You can just type (edit) the page into a form
on the following page. Some things you type will be automatically formatted, just like
forum postings. See help on typing text: <? helpbutton("text", get_string("helptext")) ?>
<P><B>HTML text</B> - for more advanced users. No automatic formatting is performed,
you need to do it all manually using HTML codes.
<P><B>Reference</B> - a scholarly reference to a journal or book.
<P><B>Uploaded file</B> - displays any file you have uploaded into the course. See the 'Files' section.
<P><B>Web link</B> - A URL to somewhere on the web. When anyone clicks on this resource
activity they will be taken out of the course (the page you've specified will fill the browser window).
<P><B>Web page</B> - A URL to somewhere on the web. Like the previous type, this
will display a web page. Unlike the previous type, though, the page will displayed
within a frame, as if it is integrated within the course.
+8
View File
@@ -0,0 +1,8 @@
<P ALIGN=CENTER><B>Reading Summary</B></P>
<P>The summary is a very short description of the resource.
<P>Do not be tempted to write too much here, or to include the
resource itself!
<P>You'll get a chance to specify the content on the next page.
+149
View File
@@ -0,0 +1,149 @@
<P ALIGN=CENTER><B>About the Rich Text HTML editor</B></P>
<P>The Rich Text editor is currently only available when using Microsoft Internet Explorer 5.5 or later.
<P>It provides a word-processor interface embedded in your web page to allow you to edit text in an intuitive way, and produces normal HTML code.
<P>In addition to formatting text, this editor provides a number of extra features you may find useful.
<P><B>Paste text in from other Applications</B></P>
<UL>
<P>You can cut and paste rich text from other Windows applications such as Microsoft Word
straight into this editor, and your formatting will be preserved. Just use the normal cut and paste
menus in your web browser (or Control-C and Control-V).
</UL>
<P><B>Inserting images <img border="0" hspace="10" src="lib/rte/images/icon_ins_image.gif"></B></P>
<UL>
<P>If you have images that are already published on a web site and accessible via a URL, you can include these images in your texts using the "Insert Image" button.
</UL>
<P><B>Inserting Tables <img border="0" hspace="10" src="lib/rte/images/icon_ins_table.gif"></B></P>
<UL>
<P>To add layout to your texts, you can use the "Insert Tables" button in the toolbar.
</UL>
<P><B>Inserting Links <img border="0" hspace="10" src="lib/rte/images/icon_ins_link.gif"></B></P>
<UL>
<P>To make a new link, first type the text that you want to be a link. Then select it and click the link button in the toolbar. Type the URL you want to link to and it's done!
</UL>
<P><B>Inserting smilies (emoticons) <img border="0" hspace="10" src="pix/s/smiley.gif" width="15" height="15"></B></P>
<UL>
<P>To embed these small icons in your text, click on the smiley icon in the toolbar. A dialog will pop up that allows you to select from the following smiley icons. (Alternatively, you can just type the corresponding code straight into your text and it will be converted later when your text is displayed).
<table border="1">
<tr valign="top">
<td>
<table border="0" align="center" cellpadding="10">
<tr>
<td><img border="0" hspace="10" src="pix/s/smiley.gif" width="15" height="15"></td>
<td>smile</td>
<td NOWRAP><FONT FACE=Courier>:-)</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/biggrin.gif" width="15" height="15"></td>
<td>big grin</td>
<td NOWRAP><FONT FACE=Courier>:-D</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/wink.gif" width="15" height="15"></td>
<td>wink</td>
<td NOWRAP><FONT FACE=Courier>;-)</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/mixed.gif" width="15" height="15"></td>
<td>mixed</td>
<td NOWRAP><FONT FACE=Courier>:-/</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/thoughtful.gif" width="15" height="15"></td>
<td>thoughtful</td>
<td NOWRAP><FONT FACE=Courier>V-.</FONT></td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/tongueout.gif" width="15" height="15"></td>
<td>tongue out</td>
<td NOWRAP><FONT FACE=Courier>:-P</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/cool.gif" width="15" height="15"></td>
<td>cool</td>
<td NOWRAP><FONT FACE=Courier>B-)</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/approve.gif" width="15" height="15"></td>
<td>approve</td>
<td NOWRAP><FONT FACE=Courier>^-)</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/wideeyes.gif" width="15" height="15"></td>
<td>wide eyes</td>
<td NOWRAP><FONT FACE=Courier>8-)</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/surprise.gif" width="15" height="15"></td>
<td>surprise</td>
<td NOWRAP><FONT FACE=Courier>8-o</td>
</tr>
</table>
</td>
<td>
<table border="0" align="center" cellpadding="10">
<tr>
<td><img alt border="0" hspace="10" src="pix/s/sad.gif" width="15" height="15"></td>
<td>sad</td>
<td NOWRAP><FONT FACE=Courier>:-(</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/shy.gif" width="15" height="15"></td>
<td>shy</td>
<td NOWRAP><FONT FACE=Courier>8-.</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/blush.gif" width="15" height="15"></td>
<td>blush</td>
<td NOWRAP><FONT FACE=Courier>:-I</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/kiss.gif" width="15" height="15"></td>
<td>kisses</td>
<td NOWRAP><FONT FACE=Courier>:-X</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/clown.gif" width="15" height="15"></td>
<td>clown</td>
<td NOWRAP><FONT FACE=Courier>:o)</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/blackeye.gif" width="15" height="15"></td>
<td>black eye</td>
<td NOWRAP><FONT FACE=Courier>P-|</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/angry.gif" width="15" height="15"></td>
<td>angry</td>
<td NOWRAP><FONT FACE=Courier>8-[</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/dead.gif" width="15" height="15"></td>
<td>dead</td>
<td NOWRAP><FONT FACE=Courier>xx-P</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/sleepy.gif" width="15" height="15"></td>
<td>sleepy</td>
<td NOWRAP><FONT FACE=Courier>|-.</td>
</tr>
<tr>
<td><img alt border="0" hspace="10" src="pix/s/evil.gif" width="15" height="15"></td>
<td>evil</td>
<td NOWRAP><FONT FACE=Courier>}-]</td>
</tr>
</table>
</table>
</UL>
+99
View File
@@ -0,0 +1,99 @@
<P ALIGN=CENTER><B>Available surveys</B></P>
<P>Currently, Moodle only offers specific types of surveys (future versions
will enable you to create your own).</P>
<P>The available surveys have been chosen as being particularly useful for
evaluating online learning environments that use a constructivist pedagogy.
They are useful to identify certain trends that may be happening among
your participants.
(To see a paper where these are used in a detailed analysis, see:
<A TARGET=paper HREF="http://dougiamas.com/writing/herdsa2002">http://dougiamas.com/writing/herdsa2002</A>)</P>
<HR>
<P><B>COLLES - Constructivist On-Line Learning Environment Survey</B></P>
<UL>
<p>The COLLES comprises an economical 24 statements grouped into six scales,
each of which helps us address a key question about the quality of the on-line
learning environment: </p>
<table BORDER="0" CELLSPACING="10" CELLPADDING="10">
<tr>
<td valign=top>Relevance</td>
<td>How relevant is on-line learning to students' professional practices?
</td>
</tr>
<tr>
<td valign=top>Reflection </td>
<td>Does on-line learning stimulate students' critical reflective thinking?
</td>
</tr>
<tr>
<td valign=top>Interactivity </td>
<td>To what extent do students engage on-line in rich educative dialogue?
</td>
</tr>
<tr>
<td valign=top>Tutor Support</td>
<td>How well do tutors enable students to participate in on-line learning?
</td>
</tr>
<tr>
<td valign=top>Peer Support </td>
<td>Is sensitive and encouraging support provided on-line by fellow students?
</td>
</tr>
<tr>
<td valign=top>Interpretation </td>
<td>Do students and tutors make good sense of each other's on-line communications?</td>
</tr>
</table>
<p>Underpinning the dynamic view of learning is a new theory of knowing: social
constructivism, which portrays the learner as an active conceptualiser within
a socially interactive learning environment. Social constructivism is an epistemology,
or way of knowing, in which learners collaborate reflectively to co-construct
new understandings, especially in the context of mutual inquiry grounded in
their personal experience. </p>
<p>Central to this collaboration is the development of students' communicative
competence, that is, the ability to engage in open and critical discourse
with both the teacher and peers. This discourse is characterised by an empathic
orientation to constructing reciprocal understanding, and a critical attitude
towards examining underlying assumptions. </p>
<p>The COLLES has been designed to enable you
to monitor the extent to which you are able to exploit the interactive capacity
of the World Wide Web for engaging students in dynamic learning practices. </p>
<P>
(This information has been adapted from the COLLES page. You can find out more about
COLLES and the authors of it at:
<A TARGET=paper HREF="http://surveylearning.com/colles/">http://surveylearning.com/colles/</A>)</P>
</UL>
<HR>
<P><B>ATTLS - Attitudes to Thinking and Learning Survey</B></P>
<UL>
<P>The theory of 'ways of knowing', originally from the field of gender research (Belenky et al., 1986) provides us with a survey tool to examine the quality of discourse within a collaborative environment.
<P>The Attitudes Towards Thinking and Learning Survey (ATTLS) is an instrument developed by Galotti et al. (1999) to measure the extent to which a person is a 'connected knower' (CK) or a 'separate knower' (SK).
<P>People with higher CK scores tend to find learning more enjoyable, and are often more cooperative, congenial and more willing to build on the ideas of others, while those with higher SK scores tend to take a more critical and argumentative stance to learning.
<P>Studies have shown that these two learning styles are independent of each other (Galotti et al., 1999; Galotti et al., 2001). Additionally, they are only a reflection of learning attitudes, not learning capacities or intellectual power.
<P><I>Belenky, M. F., Clinchy, B. M., Goldberger, N. R., & Tarule, J. M. (1986). Women's Ways of Knowing: The Development of Self, Voice, and Mind. New York: Basic Books, Inc. </I></P>
<P><I>Galotti, K. M., Clinchy, B. M., Ainsworth, K., Lavin, B., & Mansfield, A. F. (1999). A New Way of Assessing Ways of Knowing: The Attitudes Towards Thinking and Learning Survey (ATTLS). Sex Roles, 40(9/10), 745-766.</I></P>
<P><I>Galotti, K. M., Reimer, R. L., & Drebus, D. W. (2001). Ways of knowing as learning styles: Learning MAGIC with a partner. Sex Roles, 44(7/8), 419-436.</I></P>
</UL>
+22
View File
@@ -0,0 +1,22 @@
<P ALIGN=CENTER><B>Teachers</B></P>
<P>This page shows the list of people who are assigned to be
"teachers" in this course (by the system administrator).
<P>You can use this form to assign a role (title) to each person
such as "Professor", "Tutor", "Assistant" and so on. These
will appear on the site's course listing and also on the
list of participants for your course. If you leave the
role empty then the default word for teacher will be used
(the one you set in the Course Settings page).
<P>You can also order this list (to put the main teacher at the
top, for example). Simply select numbers from the menus
in the "Order" column. After pressing "Save changes" you will
see the new order.
<P><B>NOTE:</B> A special case occurs if you use select "Hide"
for a teacher. In this case, the teacher will
NOT BE SHOWN on the course listings or the list of
participants. They will be "hidden" from students
(unless they post messages to the forums etc)
+43
View File
@@ -0,0 +1,43 @@
<P ALIGN=CENTER><B>Help on writing text</B></P>
Writing text in Moodle works pretty much the way you would expect, but you also have the ability to include "smilies", "URL addresses" and some HTML tags in your text.
<P><B>Smilies (emoticons)</B></P>
<UL>
<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=5>
<TR><TH>Name <TH>Picture <TH>You type</TR>
<TR><TD>smile <TD ALIGN=CENTER><img ALT=smile SRC="<?=$CFG->wwwroot?>/pix/s/smiley.gif"><TD ALIGN=CENTER> :-) </TD></TR>
<TR><TD>sad <TD ALIGN=CENTER><img ALT=sad SRC="<?=$CFG->wwwroot?>/pix/s/sad.gif"><TD ALIGN=CENTER> :-( </TD></TR>
<TR><TD>grin <TD ALIGN=CENTER><img ALT=grin SRC="<?=$CFG->wwwroot?>/pix/s/biggrin.gif"><TD ALIGN=CENTER> :-D </TD></TR>
<TR><TD>wink <TD ALIGN=CENTER><img ALT=wink SRC="<?=$CFG->wwwroot?>/pix/s/wink.gif"><TD ALIGN=CENTER> ;-) </TD></TR>
<TR><TD>mixed <TD ALIGN=CENTER><img ALT=mixed SRC="<?=$CFG->wwwroot?>/pix/s/mixed.gif"><TD ALIGN=CENTER> :-/ </TD></TR>
<TR><TD>wide-eyed <TD ALIGN=CENTER><img ALT=wide-eyed SRC="<?=$CFG->wwwroot?>/pix/s/wideeyes.gif"><TD ALIGN=CENTER> 8-) </TD></TR>
<TR><TD>tongue-out <TD ALIGN=CENTER><img ALT=tongue-out SRC="<?=$CFG->wwwroot?>/pix/s/tongueout.gif"><TD ALIGN=CENTER> :-P </TD></TR>
<TR><TD>surprise <TD ALIGN=CENTER><img ALT=surprised SRC="<?=$CFG->wwwroot?>/pix/s/surprise.gif"><TD ALIGN=CENTER> :-o </TD></TR>
<TR><TD>cool <TD ALIGN=CENTER><img ALT=cool SRC="<?=$CFG->wwwroot?>/pix/s/cool.gif"><TD ALIGN=CENTER> B-) </TD></TR>
</TABLE>
</UL>
<P><B>URLs</B></P>
<UL>
<P>Any "word" starting with <B>www.</B> or <B>http://</B> will automatically be turned into a clickable link.
<P>For example: <A HREF="http://www.yahoo.com">www.yahoo.com</A> or <A HREF="http://curtin.edu">http://curtin.edu</A>
</UL>
<P><B>HTML tags</B></P>
<UL>
<P>You can use a limited subset of HTML tags to add emphasis to your texts.
<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=5>
<TR><TH>HTML tags<TH>Produces</TR>
<TR><TD>&lt;B> bold &lt;/B> <TD> <B>bold text</B> </TR>
<TR><TD>&lt;I> italic &lt;/I> <TD> <I>italic text</I> </TR>
<TR><TD>&lt;U> underline &lt;/U> <TD> <U>underlined text</U> </TR>
<TR><TD>&lt;FONT SIZE=1> small &lt;/FONT> <TD> <FONT SIZE=1>small</FONT> </TR>
<TR><TD>&lt;FONT SIZE=4> large &lt;/FONT> <TD> <FONT SIZE=4>large</FONT> </TR>
<TR><TD>&lt;FONT COLOR=green> example &lt;/FONT> <TD> <FONT color=green>example</FONT> </TR>
<TR><TD valign=top>&lt;UL>&lt;LI>one &lt;LI>two &lt;/UL> <TD valign=top> <UL><LI>one<LI>two</UL> </TR>
<TR><TD>&lt;HR><TD> <HR> </TR>
</TABLE>
</UL>
+41
View File
@@ -0,0 +1,41 @@
<P ALIGN=CENTER><B>Formatting text</B></P>
<P>When writing text in Moodle there are currently two formats you can choose
to produce your text, depending on your expertise and the type of browser
you are using.
<P><B>Usually you can just leave this setting alone and things should
work as you expect</B>.
<P><B>1. Moodle auto-format</B></P>
<UL>
<P>This format is best for when you are using normal web forms for entry
(instead of the Richtext HTML editor). Just type text normally, as if you
were sending an email.
<P>When you save your text, Moodle will do a number of things to automatically
format your text for you.
<P>For example, URLs such as
<A HREF="http://yahoo.com/">http://yahoo.com</A> or even
<A HREF="http://www.yahoo.com/">www.yahoo.com</A> will be turned into links.
<P>Your line breaks will be retained, and blank lines will start new paragraphs.
<P>Smiley characters such as :-) will automatically become their graphical equivalents.
<P>You can even embed HTML code if you want to and it will be retained.
<P ALIGN=RIGHT><? helpbutton("text", get_string("helptext")) ?> More info about Moodle auto-formatting.</P>
</UL>
<P><B>2. HTML format</B></P>
<UL>
<P>This format assumes the text is pure HTML. If you are using the
HTML editor to edit text then this is the default format - all
the commands in the toolbar are producing HTML for you.
<P>Even if you are not using the Richtext HTML editor, you can use HTML code
in your text and it should come out exactly as you intended.
<P>Unlike the Moodle auto-format, no automatic formatting is performed.
<P ALIGN=RIGHT><? helpbutton("html", get_string("helphtml")) ?> More info about HTML</P>
<P ALIGN=RIGHT><? helpbutton("richtext", get_string("helprichtext")) ?> More info about the Richtext HTML editor</P>
</UL>
+27
View File
@@ -0,0 +1,27 @@
<?PHP // $Id$
// journal.php - created with Moodle 1.0.6 dev (2002100200)
$string['alwaysopen'] = "Immer offen";
$string['blankentry'] = "Leerer Eintrag";
$string['daysavailable'] = "Tage verfügbar";
$string['editingended'] = "Bearbeitungszeitraum ist abgelaufen";
$string['editingends'] = "Bearbeitungszeitraum endet";
$string['journalname'] = "Name des Journals";
$string['journalquestion'] = "Journal-Frage";
$string['journalrating1'] = "nicht zufriedenstellend";
$string['journalrating2'] = "zufriedenstellend";
$string['journalrating3'] = "hervorragend";
$string['modulename'] = "Journal";
$string['modulenameplural'] = "Journale";
$string['newjournalentries'] = "Neie Journal-Einträge";
$string['noentry'] = "Kein Eintrag";
$string['noratinggiven'] = "Keine Beurteilung abgegeben";
$string['notopenuntil'] = "Diese Journal wird geschlossen sein bis";
$string['notstarted'] = "Sie haben dieses Journal noch nicht begonnen";
$string['overallrating'] = "Allgemeine Beurteilung";
$string['rate'] = "Beutreilung";
$string['startoredit'] = "Journal-Eintrag beginnen oder bearbeiten";
$string['viewallentries'] = "Zeige \$a Journal-Einträge";
?>
+484
View File
@@ -0,0 +1,484 @@
<?PHP // $Id$
// moodle.php - created with Moodle 1.0.6 dev 3 (2002102101)
$string['action'] = "Aktion";
$string['activities'] = "Aktivitäten";
$string['activity'] = "Aktivität";
$string['activityreport'] = "Übersicht der Aktivitäten";
$string['add'] = "Hinzufügen";
$string['added'] = "Hinzugefügt \$a";
$string['addinganew'] = "Füge ein \$a";
$string['addinganewto'] = "Füge \$a->what ein zu \$a->to";
$string['addnewcourse'] = "Neuen Kurs anlegen";
$string['addnewuser'] = "Neuen Benutzer anlegen";
$string['address'] = "Addresse";
$string['addteacher'] = "Lehrer anlegen";
$string['admin'] = "Verwalter";
$string['administration'] = "Verwaltung";
$string['again'] = "nochmal";
$string['all'] = "Alle";
$string['alldays'] = "Jeden Tag";
$string['allfieldsrequired'] = "Alle Felder sind zwingend";
$string['alllogs'] = "Alle Statistiken";
$string['allow'] = "Zulassen";
$string['allowguests'] = "Diesen Kurs dürfen Gäste besuchen";
$string['allownot'] = "Nicht zulassem";
$string['allparticipants'] = "Alle Teilnehmer";
$string['alphanumerical'] = "Kann nur Buchstaben und Zahlen haben";
$string['alreadyconfirmed'] = "Die Registrierung wurde bereits bestätigt";
$string['answer'] = "Antwort";
$string['assessment'] = "Beurteilung";
$string['assignteachers'] = "Lehrer zuweisen";
$string['availablecourses'] = "Verfügbare Kurse";
$string['cancel'] = "Abbrechen";
$string['categories'] = "Kurs-Kategorie";
$string['category'] = "Kategorie";
$string['categoryadded'] = "Die Kategorie '\$a' wurde angelegt";
$string['categorydeleted'] = "Die Kategorie '\$a' wurde gelöscht";
$string['changedpassword'] = "Passwort geändert";
$string['changepassword'] = "Passwort ändern";
$string['changessaved'] = "Änderungen gespeichert";
$string['checklanguage'] = "Sprache prüfen";
$string['choose'] = "Auswahl";
$string['choosecourse'] = "Kurs auswählen";
$string['chooselivelogs'] = "Oder momentane Aktivität beobachten";
$string['chooselogs'] = "Wählen Sie die anzuzeigende Statistik aus";
$string['choosetheme'] = "Thema auswählen";
$string['chooseuser'] = "Nutzer auswählen";
$string['city'] = "Stadt/Ort";
$string['closewindow'] = "Dieses Fenster schließen";
$string['comparelanguage'] = "Sprache vergleichen und bearbeiten";
$string['complete'] = "Fertig";
$string['configauth'] = "Wählen Sie das Authentisierung Modul, das Sie benutzen möchten. Die Standardeinstellung ist ' email' und bietet die höchste Sicherheit. Die Methode 'keine' ist ohne Überprüfung.
Seien Sie vorsichtig damit, es sei denn Sie wissen wirklich, was Sie tun.
";
$string['configerrorlevel'] = "Wählen Sie die Menge der PHP Warnungen, die Sie angezeigt bekommen möchten. Normal ist gebräuchlicherwiese die beste Wahl.";
$string['configgdversion'] = "Zeigt Ihnen die Version von GD an, die installiert. Die Version, die als Standard angezeigt wird, ist die, die automatisch ermittelt worden ist. Ändern Sie diese nicht, es sei denn Sie wissen wirklich, was Sie tun. ";
$string['confightmleditor'] = "Wählen Sie aus, ob Sie die Verwendung der HTML Text-Eingabe zulassen möchten. Selbst, wenn Sie es zulassen, erscheint diese Text-Eingabe nur, wenn der Benutzer einen geeigneten Browser ( wie z.B. den IE 5.5 oder höher) benutzt.
Die Benutzer können ebenso auswählen, diesen nicht zu benutzen.";
$string['configintro'] = "Auf dieser Seite können Sie eine Anzahl von Konfigurations-Variablen spezifizieren, die Ihnen helfen, dass Moodle auf Ihrem Server vernünftig läuft. Sorgen Sie sich nicht grossartig - Die Standard-Einstellungen funktionieren nomalerweise sehr gut und Sie können jederzeit auf diese Seite zurückkommen und diese ändern.";
$string['configlang'] = "Wählen Sie die Standard-Sprache für die gesamte Seite. Die Benutzer können diese später überschreiben.";
$string['configlangdir'] = "In den meisten Sprachen schreibt man von links nach rechts, aber in einigen anderen, wie Arabisch oder Hebräisch, schreibt man von rechts nach links";
$string['configlocale'] = "Wählen Sie eine seitenweite locale - diese wird die Anzeige jedes Datums beeinflussen. Sie müssen die Daten dieser localen auf Ihrem Betriebssystem installiert haben. Sofern Sie nicht wissen, was Sie auswählen sollen, lassen Sie dieses Feld leer.";
$string['configlongtimenosee'] = "Wenn sich Studenten nach einer sehr langen Zeit nicht mehr angemeldet haben, werden Studenten automatisch nach diesem Termin aus dem Kurs ausgetragen.";
$string['configmaxeditingtime'] = "Hier bestimmen Sie die Zeitspanne, in der die Leute die Foren-Beiträge, Jounal-Antworten, eusw. erneut bearbeiten dürfen. Normalerweise sind 30 Minuten ein guter Wert. ";
$string['configproxyhost'] = "Wenn dieser <B>Server</B> einen Proxy braucht (beispielsweise eine Firewall), um Internetzugriff zu bekommen, dann tragen Sie hier den Namen und den Port des Proxys ein. Anderenfalls lassen sie das Feld leer";
$string['configslasharguments'] = "Dateien (Bilder, Dokumente, usw.) werden über ein Skript, das 'Slash-Argumente' benutz (hier die zweite Option). Diese Methode erlaubt es Dateien einfacher im Internet-Browsern, Proxy-Servern, usw., zwischengespeichert zu werden.
Leider erlauben nicht alle PHP-Server diese Methode, so dass Sie, sofern Sie Probleme bei der Anzeige von Dateien oder Bildern (beispielsweise den Benutzer-Fotos) haben, diese Variable auf die erste Option stellen müssen. ";
$string['configsmtphosts'] = "Geben Sie hier den vollen Namen von einem oder mehreren lokalen SMTP-Servern an, die Moodle für den Email-Versnad benutzen soll (beispielsweise 'email.a.de' oder 'email.a.de;email.b.de'). Wenn Sie dieses frei lassen, wird Moodle die Standard-Methode von PHP zum Senden von Emails verwenden.";
$string['configunzip'] = "Geben Sie hier den Pfad zum Programm unzip an (Nur Unix). Dieser wird für das Entpacken von ZIP-Archiven auf dem Server benötigt.";
$string['configvariables'] = "Variablen konfigurieren";
$string['configzip'] = "Geben Sie hier den Pfad zum Programm zip an (Nur Unix). Dieser wird für die Erstellung ZIP-Archiven auf dem Server benötigt.";
$string['confirmed'] = "Ihre Registrierung wurde bestätigt";
$string['continue'] = "Weiter";
$string['cookiesenabled'] = "Cookies müssen in Ihrem Browser eingeschaltet sein";
$string['copyrightnotice'] = "Urheberrechtsvermerk";
$string['country'] = "Land";
$string['course'] = "Kurs";
$string['courseformats'] = "Kurs-Format";
$string['courses'] = "Kurse";
$string['courseupdates'] = "Kurse aktuell";
$string['createaccount'] = "Meinen neuen Zugang einrichten";
$string['createuserandpass'] = "Einen neuen Benutzernamen und Passwort für den Zugang anlegen";
$string['createziparchive'] = "ZIP-Archiv erstellen";
$string['currentlanguage'] = "Aktuelle Sprache";
$string['currentlocaltime'] = "Die lokale Zeit";
$string['databasechecking'] = "Moodle Datenbank von Version \$a->oldversion auf \$a->newversion aktualisieren...";
$string['databasesetup'] = "Datenbank einspielen";
$string['databasesuccess'] = "Datenbank wurde erfolgreich aktualisiert";
$string['databaseupgrades'] = "Aktualisiere Datenbank";
$string['day'] = "Tag";
$string['days'] = "Tage";
$string['defaultcoursefullname'] = "Course Fullname 101";
$string['defaultcourseshortname'] = "CF101";
$string['defaultcoursestudent'] = "Student";
$string['defaultcoursestudents'] = "Studenten";
$string['defaultcoursesummary'] = "Viele Menschen würden gerne etwas dazu lernen.
Warum soll es im Internet keine Platform geben,
wo dieses Manko beseitigt viel.
Wissen ist Macht, kämpft gemeinsam gegen die Ohnmacht.";
$string['defaultcourseteacher'] = "Lehrer";
$string['defaultcourseteachers'] = "Lehrer";
$string['delete'] = "Löschen";
$string['deletecheck'] = "\$a löschen?";
$string['deletecheckfull'] = "Sind Sie sich wirklich sicher, \$a löschen?";
$string['deletecompletely'] = "Vollständig löschen";
$string['deletecourse'] = "Einen Kurs löschen";
$string['deletecoursecheck'] = "Sind Sie sich wirklich sicher, Kurs löschen, einschliesslich aller Daten?";
$string['deleted'] = "Gelöscht";
$string['deletedactivity'] = "\$a gelöscht";
$string['deletedcourse'] = "\$a wurde erfolgreich gelöscht";
$string['deletednot'] = "Kann \$a nicht löschen!";
$string['deletingcourse'] = "Lösche \$a";
$string['description'] = "Beschreibung";
$string['downloadexcel'] = "Im Excel-Format herunterladen";
$string['downloadtext'] = "Im Text-Format herunterladen";
$string['doyouagree'] = "Haben Sie diese Bedingungen gelesen und verstanden?";
$string['edit'] = "Bearbeite \$a";
$string['editcoursesettings'] = "Kurseinstellungen bearbeiten";
$string['editinga'] = "Bearbeite \$a";
$string['editmyprofile'] = "Profil bearbeiten";
$string['editsummary'] = "Zusammenfassung bearbeiten";
$string['editthisactivity'] = "Diese Aktivitär bearbeiten";
$string['edituser'] = "Nutzer-Zugang bearbeiten";
$string['email'] = "Email-Adresse";
$string['emailconfirm'] = "Bestätigen Sie Ihren Zugang";
$string['emailconfirmation'] = "Hallo \$a->firstname,
ein neuer Zugang wurde auf '\$a->sitename'
unter Verwendung Ihrer Email-Adresse beantragt.
Um Ihren neuen Zugang zu bestätigen,
gehen Sie bitte auf folgende Internet-Adresse:
\$a->link
In den meisten Email-Programmen erscheint dieser Link blau, so dass Sie diesen anklicken können.
Sofern dies nicht funktioniert,
kopieren Sie bitte diese Adresse in die obere Zeile des
Browsers-Fensters.
Grüße von der '\$a->sitename'-Verwaltung, \$a->admin";
$string['emailconfirmsent'] = " <P>Eine Email sollte an Ihre Adresse <B>\$a</B>
gesendet worden sein.
<P>Sie enthält einfache Anweisungen, um Ihre Registrierung zu vervollständigen.
<P>Bei weiteren Problemen kontaktieren Sie den Verwalter dieser Seite.";
$string['emaildisplay'] = "Email-Anzeige";
$string['emaildisplaycourse'] = "Nur Kurs-Mitgliedern meine Email-Adresse sichtbar machen";
$string['emaildisplayno'] = "Meine Email-Adresse vor jedem verbergen";
$string['emaildisplayyes'] = "Allow everyone to see my email address";
$string['emailexists'] = "Diese Email-Adresse ist bereits registriert.";
$string['emailformat'] = "Email-Format";
$string['emailmustbereal'] = "Anmerkung: Ihre Email-Adresse <b>muss</b> existieren";
$string['enrolmentkey'] = "Zugangs-Schlüssel";
$string['enrolmentkeyfrom'] = "Für diesen Kurs benötigen Sie einen 'Zugangs-Schlüssel' - ein einmaliges Passwort,<br>das Sie von \$a bekommen haben sollten<BR>
password that you should have got from ";
$string['enrolmentkeyhint'] = "Der Zugangs-Schlüssel war falsch, bitte versuchen Sie es erneut<BR>
(Hier ist ein Hinweis - Er startet mit '\$a'";
$string['entercourse'] = "Hier klicken, um den Kurs zu betreten";
$string['enteremailaddress'] = "Geben Sie hier Ihre Email-Adresse ein, um Ihr Passwort zurückzusetzen. Ein neues Password wird Ihnen via Email ztugesendet.";
$string['error'] = "Fehler";
$string['existingteachers'] = "Vorhandene Lehrer";
$string['feedback'] = "Rückmeldung";
$string['filemissing'] = "\$a fehlt";
$string['files'] = "Dateien";
$string['filloutallfields'] = "Bitte füllen Sie alle Formular-Felder aus";
$string['firstname'] = "Vorname";
$string['firsttime'] = "Sind Sie das erste Mal hier?";
$string['followingoptional'] = "Die folgenden Angaben sind optional";
$string['followingrequired'] = "Die folgenden Angaben sind zwingend";
$string['forgotten'] = "Benutzername und Passwort vergessen?";
$string['format'] = "Format";
$string['formathtml'] = "HTML-Format";
$string['formatsocial'] = "Sozilales Format";
$string['formattext'] = "Moodle Text-Format";
$string['formattexttype'] = "Formatierung";
$string['formattopics'] = "Themen-Format";
$string['formatweeks'] = "Wöchentliches Format";
$string['frontpagedescription'] = "Beschreibung auf Eingangsseite";
$string['frontpageformat'] = "Format der Eingangsseite";
$string['fulllistofcourses'] = "Alle Kurse";
$string['fullname'] = "Nachname";
$string['fullprofile'] = "Ganzes Profil";
$string['fullsitename'] = "Name der gesamten Seite";
$string['gd1'] = "GD 1.x ist installiert";
$string['gd2'] = "GD 2.x ist installiert";
$string['gdnot'] = "GD ist nicht installiert";
$string['gpl'] = "Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com) Dieses Programm ist freie Software; Sie können es weiterverbreiten bzw. es im Rahmen GNU General Public License, wie von der Free Software Foundation veröffentlicht, modifizieren; entweder Version 2 der Lizenz, oder (sofer nötig) jede spätere Version. Dieses Programm wird in der Hoffnung ausgeteilt, dass es nützlich sein wird, aber OHNE JEDE GARANTIE; sogar ohne die implizierte Garantie der MARKTFÄHIGKEIT oder der MARKTREIFE FÜR EINEM BESONDEREN ZWECK. Lesen Sie die GNU-Öffentlichkeitslizenz für mehr Details: http: // www.gnu.org/copyleft/gpl.html";
$string['grade'] = "Rang";
$string['grades'] = "Ränge";
$string['guestskey'] = "Gäste zulassen, die eine n Schlüssel haben";
$string['guestsno'] = "Gäste nicht erlaubt";
$string['guestsnotallowed'] = "'\$a' erlaubt Gästen keinen Zugang";
$string['guestsyes'] = "Zugang für Gäste ohne Schlüssel";
$string['guestuser'] = "Gast-Benutzer";
$string['guestuserinfo'] = "Dieser Benutzer ist ein besonderer Benutzer, der nur Lesezugriff auf einige Kurse erlaubt.";
$string['help'] = "Hilfe";
$string['helphtml'] = "Wie man HTML schreibt";
$string['helppicture'] = "Wie man ein Foto hochlädt";
$string['helpquestions'] = "Wie man fragen stellt";
$string['helprichtext'] = "Über die Richtext-Eingabe";
$string['helptext'] = "Wie man Text schreibt";
$string['hide'] = "Verstecken";
$string['home'] = "Startseite";
$string['hour'] = "Stunde";
$string['hours'] = "Stunden";
$string['htmleditor'] = "WYSIWYG HTML-Text-Eingabe verwenden (Nur IE 5.5. oder höher)";
$string['htmleditoravailable'] = "Die Rich-Text-Eingabe ist verfügbar";
$string['htmleditordisabled'] = "Sie haben die Rich-Text-Eingabe in Ihrem Benutzer-Profil deaktiviert.";
$string['htmleditordisabledadmin'] = "Der Verwaltr hat die Rich-Text-Eingabe in Ihrem Benutzer-Profil deaktiviert.";
$string['htmleditordisabledbrowser'] = "Die Rich-Text-Eingabe ist nicht verfügbar, weil Sie nicht den Internet Explorer 5.5 oder höher benutzen";
$string['htmlformat'] = "Sauberes HTML-Format";
$string['icqnumber'] = "ICQ-Nummer";
$string['idnumber'] = "Identifizierungsnummer";
$string['invalidemail'] = "Ungültige Email-Adresse";
$string['invalidlogin'] = "Ungültiger Zugang, bitte versuchen Sie es erneut";
$string['langltr'] = "Sprach-Richtung von links nach rechts";
$string['langrtl'] = "Sprach-Richtung von rechts nach links";
$string['languagegood'] = "Dieses Sprachpaket ist auf dem aktuellen Stand! :-)";
$string['lastaccess'] = "Letzter Zugriff";
$string['lastedited'] = "Zuletzt bearbeitet";
$string['lastmodified'] = "Zuletzt geändert";
$string['lastname'] = "Nachname";
$string['latestnews'] = "Neueste Nachrichten";
$string['leavetokeep'] = "Passwort-Feld leer lassen, um momentanes Passwort zu behalten";
$string['license'] = "GPL-Lizenz";
$string['listofallpeople'] = "Liste aller Leute";
$string['livelogs'] = "Aktuelle Statistiken der letzten Stunde";
$string['location'] = "Ort";
$string['loggedinas'] = "Sie sind angemeldet als \$a";
$string['loggedinnot'] = "Sie sind nicht angemeldet.";
$string['login'] = "Anmelden";
$string['loginas'] = "Anmelden als";
$string['loginguest'] = "Anmelden als Gast";
$string['loginsite'] = "Anmeldung für diese Seite";
$string['loginsteps'] = "Hallo! Für den vollen Zugang zu
den Kursen werden Sie sich eine Minute Zeit nehmen müssen,
um einen neuen Zugang für sich selbst auf dieser Website
zu erstellen. Jeder der individuellen Kurse kann auch
einen einmaligen &quot;Einschreibungsschlüssel&quot; haben,
den Sie später nicht mehr brauchen werden. Hier sind die
Schritte:
<OL size=2>
<LI> Füllen Sie das Formular <HREF=\$a>Neuer Zugang </A>
mit Ihren Angaben.
<LI> Umgehend geht eine Email an Ihre Adresse raus.
<LI> Lesen Sie die Email und klicken Sie den darin enthaltenen Internetverweis an. <LI> Ihr Zugang wird bestätigt, und Sie werden angemeldet sein. <LI> Jetzt wählen Sie den Kurs aus, an dem Sie teilnehmen möchten. <LI>Sollten Sie nach einen &quot;Zugangsschlüssel&quot; gefragt werden, benutzen Sie diesen, den Ihnen Ihr Lehrer gegeben hat. Dieser schaltet Sie für diesen Kurs frei. <LI>Nun können Sie auf den vollen Kurs zugreifen. Zukünftig brauchen Sie nur Ihren eigenen Benutzernamen und das Kennwort im Formular auf dieser Seite einzugeben, um sich anzumelden und Zugang zu jedem Kurs, bei dem Sie sich angemeldet haben, zu bekommen. </OL>";
$string['loginstepsnone'] = "Hallo!<P>Für vollen Zugang zu den Kursen müssen Sie sich einen Zugang anlegen. <P> Alles, was Sie tun müssen,ist einen Benutzernamen und ein Kennwort zu wählen, das Sie im Formular auf dieser Seite eintragen! <P>Sofern jemand anderes bereits Ihren Benutzernamen gewählt hat, müssen Sie einen anderen Benutzernamens verwenden.";
$string['loginto'] = "Angemeldet bei \$a";
$string['loginusing'] = "Melden Sie sich hier mit Benutzernamen und Kennwort an";
$string['logout'] = "Abmelden";
$string['logs'] = "Statistiken";
$string['mainmenu'] = "Hauptmenü";
$string['makeafolder'] = "Verzeichnis erstellen";
$string['makeeditable'] = "Sofern Sie '\$a' durch den Internet-Server bearbeitbar machen (beispielsweise Apache) können Sie diese Datei direkt auf dieser Seite bearbeiten";
$string['managedatabase'] = "Datenbank verwalten";
$string['markthistopic'] = "Dieses Thema als das gegenwärtige Thema kennzeichnen";
$string['maximumchars'] = "Höchstens \$a Buchstaben";
$string['maximumgrade'] = "Beste Note";
$string['maximumshort'] = "Höchstens";
$string['maxsize'] = "Maximale Größe: \$a";
$string['min'] = "Minute";
$string['mins'] = "Minuten";
$string['miscellaneous'] = "Verschiedens";
$string['missingcategory'] = "Sie müssen einen Rubrik auswählen";
$string['missingcity'] = "Stadt fehlt";
$string['missingcountry'] = "Land fehlt";
$string['missingdescription'] = "Beschreibung fehlr";
$string['missingemail'] = "Email-Adresse fehlt";
$string['missingfirstname'] = "Vorname fehlt";
$string['missingfullname'] = "Voller Name fehlt";
$string['missinglastname'] = "Nachname fehlt";
$string['missingnewpassword'] = "Neues Kennwort fehlt";
$string['missingpassword'] = "Kennwort fehlt";
$string['missingshortname'] = "Kurzer Name fehlt";
$string['missingshortsitename'] = "Kurzer Seitenname fehlt";
$string['missingsitedescription'] = "Seitenbeschreibung fehlt";
$string['missingsitename'] = "Seitenname fehlt";
$string['missingstrings'] = "Auf fehlende Textpassagen prüfen";
$string['missingstudent'] = "Schüler fehlt";
$string['missingsummary'] = "Zusammenfassung fehlt";
$string['missingteacher'] = "Sie müssen etwas auswählen";
$string['missingusername'] = "Benutzername fehlt";
$string['modified'] = "Geändert";
$string['modulesetup'] = "Leg Modul-Tabellen an";
$string['modulesuccess'] = "\$a Tabellen wurden korrkt angelegt";
$string['mostrecently'] = "neueste";
$string['movedown'] = "Nach unten verschieben";
$string['movefilestohere'] = "Dateien hierhin verschieben";
$string['movetoanotherfolder'] = "In einen anderen Ordner verschieben";
$string['moveup'] = "Nach oben verschieben";
$string['mustconfirm'] = "Sie müssen Ihren Zugang bestätigen";
$string['mycourses'] = "Meine Kurse";
$string['name'] = "Name";
$string['namesocial'] = "Abschnitt";
$string['nametopics'] = "Thema";
$string['nameweeks'] = "Woche";
$string['never'] = "Nie";
$string['new'] = "Neu";
$string['newaccount'] = "Neuer Zugang";
$string['newpassword'] = "Neues Kennwort";
$string['newpasswordtext'] = "Hallo \$a->firstname,
Ihr Zugangskennwort auf '\$a->sitename' wurde zurückgesetzt und Ihnen ist ein neues temporäres Kennwort zugewiesen worden.
Ihre Zugangsdaten sind jetzt:
Benutzername: \$a->username
Kennwort: \$a->newpassword
Bitte gehen Sie auf diese Seite und ändern Ihr Kennwort:
\$a->link
In den meisten Email-Programmen erscheint dieser Link blau, so dass Sie diesen anklicken können. Sofern dies nicht funktioniert, kopieren Sie bitte diese Adresse in die obere Zeile des Browsers-Fensters.
Grüße von der '\$a->sitename'-Verwaltung, \$a->signoff";
$string['newpicture'] = "Neues Foto";
$string['newsitem'] = "Nachricht ";
$string['newsitems'] = "Nachrichten";
$string['newsitemsnumber'] = "Anzuzeigende Nachrichten";
$string['newuser'] = "Neuer Benutzer";
$string['newusers'] = "Neue Benutzer";
$string['no'] = "Nein";
$string['nocoursesyet'] = "Keine Kurse in dieser Rubrik";
$string['noexistingteachers'] = "Keine Lehrer angelegt";
$string['nofilesyet'] = "Bislang wurden keine Dateien für Ihren Kurs hochgeladen";
$string['nograde'] = "Keine Note";
$string['noimagesyet'] = "Bislang wurden keine Grafiken für Ihren Kurs hochgeladen";
$string['none'] = "Nichts";
$string['nopotentialteachers'] = "Keine möglichen Lehrer";
$string['normal'] = "Normal";
$string['nostudentsyet'] = "Kein Schüler nimmt bislang an diesem Kurs teil";
$string['nosuchemail'] = "Keine solche Email-Adresse";
$string['noteachersyet'] = "Kein Lehrer bislang in diesem Kurs teil";
$string['notenrolled'] = "\$a nimmt nicht an diesem Kurs teil.";
$string['nothingnew'] = "Nichts Neues seit Ihrem letzten Besuch";
$string['nousersyet'] = "Bislang keine Benutzer";
$string['now'] = "jetzt";
$string['numberweeks'] = "Anzahl der Wochen/Themen";
$string['numdays'] = "\$a Tage";
$string['numminutes'] = "\$a Minuten";
$string['numviews'] = "\$a Einsichten";
$string['numweeks'] = "\$a Wochen";
$string['numwords'] = "\$a Wörter";
$string['numyears'] = "\$a Jahre";
$string['ok'] = "OK";
$string['opentoguests'] = "Gast-Zugriff";
$string['optional'] = "nicht zwingend";
$string['order'] = "Reihenfolge";
$string['outline'] = "Ausstehend";
$string['participants'] = "Teilnehmer";
$string['password'] = "Kennwort";
$string['passwordchanged'] = "Kennwort wurde geändert";
$string['passwordsdiffer'] = "Dieses Kennwort ist falsch";
$string['passwordsent'] = "Kennwort wurde gesendet";
$string['passwordsenttext'] = "
<P>Eine Email wurde an Ihre Adresse \$a->email gesendet.
<P><B>Schauen Sie bitte in Ihre Email nach Ihrem neuen Kennwort
<P>Das Kennwort wurde automatisch erzeugt.
Sicherlich möchten Sie es <A HREF=\$a->link>ändern</a>, um es sich leichter zu merken.";
$string['people'] = "Leute";
$string['personalprofile'] = "Eigenes Profil";
$string['phone'] = "Telefon";
$string['potentialteachers'] = "Mögliche Lehrer";
$string['preferredlanguage'] = "Bevorzugte Sprache";
$string['preview'] = "Vorschau";
$string['previeworchoose'] = "Vorschau oder Aussehen auswählen";
$string['question'] = "Frage";
$string['readme'] = "LIESMICH";
$string['recentactivity'] = "Neueste Aktivtäten";
$string['removeteacher'] = "Lehrer löschen";
$string['rename'] = "Umbenennen";
$string['requireskey'] = "Dieser Kurs setzt einen Zugangs-Schlüssel voraus";
$string['resources'] = "Arbeitsmittel";
$string['returningtosite'] = "Auf diese Internet-Seite zurückkehren?";
$string['revert'] = "Zurückkehren";
$string['role'] = "Abmelden";
$string['savechanges'] = "Änderungen speichern";
$string['search'] = "Suchen";
$string['searchagain'] = "Erneut Suchen";
$string['searchresults'] = "Suchergebnisse";
$string['sec'] = "Sekunde";
$string['secs'] = "Sekunden";
$string['section'] = "Abschnitt";
$string['selectacountry'] = "Land auswählen";
$string['senddetails'] = "Senden Sie meine Details via Email zu";
$string['separateandconnected'] = "Getrennte und Gemeinsame Art des Wissens";
$string['serverlocaltime'] = "Die Lokalzeit des Servers";
$string['settings'] = "Einstellungen";
$string['shortname'] = "Kurzname";
$string['shortsitename'] = "Kurzname der Seite (z.B. ein einziges Wort)";
$string['showallcourses'] = "Alle Kurse anzeigen";
$string['showalltopics'] = "Alle Themen Anzeigen";
$string['showallweeks'] = "Alle Wochen anzeigen";
$string['showlistofcourses'] = "Die Liste der Kurse anzeigen";
$string['showonlytopic'] = "Nur Thema \$a anzeigen";
$string['showonlyweek'] = "Nur Woche \$a anzeigen";
$string['showtheselogs'] = "Diese Stastiken anzeigen";
$string['site'] = "Seite";
$string['sitelogs'] = "Statistiken der Seite";
$string['sitenews'] = "Nachrichten der Site";
$string['sites'] = "Seiten";
$string['sitesettings'] = "Seiteneinstellungen";
$string['size'] = "Größe";
$string['socialheadline'] = "Soziales Forum - letzte Themen";
$string['someallowguest'] = "Einige Kurse können auch Gast-Zugang erlauben";
$string['startdate'] = "Datum des Kursbeginns";
$string['startsignup'] = "Jetzt einen neuen Zugang anlegen!";
$string['status'] = "Status";
$string['stringsnotset'] = "Folgende Textteile sind nicht vorhanden in \$a";
$string['success'] = "Erfolg";
$string['summary'] = "Zusammenfassung";
$string['summaryof'] = "Zusammenfassung von \$a";
$string['supplyinfo'] = "Geben Sie bitte ein paar Informationen über sich selbst an";
$string['teacheronly'] = "für \$a nur";
$string['textediting'] = "Wenn Sie einen Text bearbeiten";
$string['texteditor'] = "Standard Internet-Formulare benutzen";
$string['textformat'] = "Reines Textformat";
$string['thanks'] = "Danke";
$string['theme'] = "Thema";
$string['themesaved'] = "Neues Thema gepeichert";
$string['thischarset'] = "iso-8859-1";
$string['thislanguage'] = "Deutsch";
$string['timezone'] = "Zeitzone";
$string['today'] = "Heute";
$string['todaylogs'] = "Die heutigen Statistiken";
$string['toomanytoshow'] = "Es sind zuviele Benutzer anzuzeigen";
$string['topic'] = "Thema";
$string['topicoutline'] = "Ausstehendes Thema";
$string['total'] = "Insgesamt";
$string['turneditingoff'] = "Bearbeiten ausschalten";
$string['turneditingon'] = "Bearbeiten einschalten";
$string['undecided'] = "Unbestimmt";
$string['unenrol'] = "Abmelden";
$string['unenrolme'] = "Abmelden von \$a";
$string['unenrolsure'] = "Sind Sie siche, dass Sie \$a von diesem Kurs abmelden möchten?";
$string['unsafepassword'] = "Unsicheres Kennwort - probieren Sie ein anderses";
$string['unzip'] = "Eröffnen";
$string['update'] = "Aktualisieren";
$string['updated'] = "\$a aktualisiert";
$string['updatemyprofile'] = "Profil aktualisieren";
$string['updatesevery'] = "Aktualisiere alle \$a Sekunden";
$string['updatethis'] = "Aktualisiere diesen \$a";
$string['updatethiscourse'] = "Diesen Kurs aktualisieren";
$string['updatinga'] = "Aktualisiere \$a";
$string['updatingain'] = "Aktualisiere \$a->what in \$a->in";
$string['upload'] = "Hochladen";
$string['uploadafile'] = "Eine Datei hochladen";
$string['uploadthisfile'] = "Diese Datei hochladen";
$string['userdeleted'] = "Dieser Benutzer-Zugang wurde gelöscht";
$string['userdescription'] = "Beschreibung";
$string['username'] = "Benutzername";
$string['usernameexists'] = "Dieser Benutzername existiert, probieren Sie einen anderen";
$string['userprofilefor'] = "Benutzer-Profil für \$a";
$string['users'] = "Benutzer";
$string['webpage'] = "Internet-Seite";
$string['week'] = "Woche";
$string['weeklyoutline'] = "Wöchentlich ausstehend";
$string['welcometocourse'] = "Willkommen zu \$a";
$string['welcometocoursetext'] = "Willkommen zu \$a->coursename!
Einer der ersten Schritte, die Sie erledigen sollten, ist, Ihre Profil-Seite innerhalb des Kurses zu bearbeiten, damit wir mehr über Sie erfahren können:
\$a->profileurl";
$string['withchosenfiles'] = "Mit ausgewählten Dateien";
$string['wordforstudent'] = "Ihre Bezeichnung für Schüler";
$string['wordforstudenteg'] = "z.B. Student, Teilnehmer, usw.";
$string['wordforstudents'] = "Ihre Bezeichnung mehrere Schüler";
$string['wordforstudentseg'] = "z.B. Studenten, Teilnehmer, usw.";
$string['wordforteacher'] = "Ihre Bezeichnung für Lehrer";
$string['wordforteachereg'] = "z.B. Tutor, Professor, usw.";
$string['wordforteachers'] = "Ihre Bezeichnung für mehrere Lehrer";
$string['wordforteacherseg'] = "z.B. Tutororen, Professororen, usw.";
$string['wrongpassword'] = "Falsches Kennwort oder Benutzername";
$string['yes'] = "Ja";
$string['yourlastlogin'] = "Ihre letzte Anmeldung war";
$string['yourself'] = "selbst";
$string['yourteacher'] = "Ihr \$a";
?>
+103
View File
@@ -0,0 +1,103 @@
<?PHP // $Id$
// quiz.php - created with Moodle 1.0.6 dev 3 (2002102101)
$string['addselectedtoquiz'] = "Auswahl zum Quiz hinzufügen";
$string['alreadysubmitted'] = "Es sieht so aus, als hätten Sie diesen Versuch schon eingetragen";
$string['alwaysavailable'] = "Immer verfügbar";
$string['answer'] = "Antwort";
$string['answerhowmany'] = "Eine oder mehrere Antworten?";
$string['answersingleno'] = "Mehrere Antworten erlaubt";
$string['answersingleyes'] = "Nur eine Antwort";
$string['attempt'] = "Versuch \$a";
$string['attemptfirst'] = "Erster Versuch";
$string['attemptlast'] = "Letzter Versuch";
$string['attempts'] = "Versuche";
$string['attemptsallowed'] = "Erlaubte Versuche";
$string['attemptsunlimited'] = "Unbegrenzte Versuche";
$string['backtoquiz'] = "Zurück zur Quiz-Bearbeitung";
$string['bestgrade'] = "Höchstnote";
$string['caseno'] = "Nein, Schreibweise ist unwichtig";
$string['casesensitive'] = "Schreibweise";
$string['caseyes'] = "Ja, Schreibweise muss stimmen";
$string['categories'] = "Kategorien";
$string['category'] = "Kategorie";
$string['categoryinfo'] = "Rubrik-Information";
$string['categorymove'] = "Die Rubrik '\$a->name' enthält \$a->count Fragen. Bitte wählen Sie eine andere Rubrik, um sie zu verschieben.";
$string['categorymoveto'] = "In diese Rubrik verschieben";
$string['choice'] = "Auswahl";
$string['choices'] = "Verfügbare Auswahl";
$string['correctanswer'] = "Richtige Antwort";
$string['correctanswers'] = "Richtige Antworten";
$string['createnewquestion'] = "Eine neue Frage anlegen";
$string['daysavailable'] = "Tage verfügbar";
$string['default'] = "Standard";
$string['defaultinfo'] = "Die Standard-Rubrik für diese Frage";
$string['deletequestioncheck'] = "";
$string['editcategories'] = "Rubrik bearbeiten";
$string['editingmultichoice'] = "Eine Frage mit Mehrfachauswahl bearbeiten";
$string['editingquestion'] = "Eine Frage bearbeiten";
$string['editingquiz'] = "Ein Quiz bearbeiten";
$string['editingshortanswer'] = "Kurzantwort der Frage bearbeiten";
$string['editingtruefalse'] = "Ja/Nein-Frage bearbeiten";
$string['false'] = "Falsch";
$string['feedback'] = "Rückmeldung";
$string['filloutoneanswer'] = "Sie müssen mindestens eine mögliche Antwort geben. Leere Antworten werden ignoriert.";
$string['fillouttwochoices'] = "Sie müssen mindestens zwei mögliche Antwort geben. Leere Antworten werden ignoriert.";
$string['fractionsaddwrong'] = "Ihre positiven gewählten Punktzahlen ergeben keine 100%
<BR>Statt dessen ergeben Sie \$a%
<BR>Möchten Sie zurück gehen und diese Frage korrigieren?";
$string['fractionsnomax'] = "Eine dieser Antworten sollte 100% sein, so dass
<br>es möglich ist, die volle Punktzahl für diese Frage zu bekommen.
<br>Möchten Sie zurück gehen und diese Frage korrigieren?";
$string['gradeaverage'] = "Durchschnittsnote";
$string['gradehighest'] = "Beste Note";
$string['grademethod'] = "Bewertungsschema";
$string['guestsno'] = "Entschuldigung, aber Gäste können Quiz nicht sehen oder probieren.";
$string['imagedisplay'] = "Bild für die Anzeige";
$string['introduction'] = "Einleitung";
$string['marks'] = "Anmerkungen";
$string['modulename'] = "Quiz";
$string['modulenameplural'] = "Quiz";
$string['multichoice'] = "Mehrfachauswahl";
$string['noanswers'] = "Es wurde keine Antworten ausgewählt!";
$string['noattempts'] = "Dieses Quiz hat keiner ausgefüllt";
$string['nomoreattempts'] = "Kein Versuch mehr zugelassen";
$string['noquestions'] = "Es wurden noch keine Fragen eingetragen";
$string['publish'] = "Veröffentlichen";
$string['question'] = "Frage";
$string['questioninuse'] = "Die Frage '\$a' wird momentan benutzt:";
$string['questionname'] = "Title der Frage";
$string['questions'] = "Fragen";
$string['quizavailable'] = "Diese Quiz ist verfügbar bis: \$a";
$string['quizclose'] = "Dieses Quiz schließen";
$string['quizclosed'] = "Diese Quiz schließt am \$a";
$string['quiznotavailable'] = "Diese Quiz ist nicht verfügbar bis: \$a";
$string['quizopen'] = "Ein Quiz beginnen";
$string['random'] = "Zufällig setzen";
$string['regrade'] = "Alle Versuche zurücksetzen";
$string['regradecomplete'] = "Alle Versuche wurden zurückgesetzt";
$string['regradecount'] = "\$a->changed von \$a->attempt Noten wurden geändert";
$string['rename'] = "Umbenennen";
$string['report'] = "Berichte";
$string['save'] = "Speichern";
$string['savegrades'] = "Noten speichern";
$string['savemyanswers'] = "Meine Antworten speichern";
$string['savequiz'] = "Dieses gesamte Quiz speichern";
$string['score'] = "Grobe Punktzahl";
$string['select'] = "Auswählen";
$string['selectcategoryabove'] = "Wählen Sie eine obige Rubrik";
$string['shortanswer'] = "Kurzantwort";
$string['show'] = "Zeigen";
$string['showcorrectanswer'] = "Nach dem Antworten richtige Antwort anzeigen?";
$string['showfeedback'] = "Nach dem Antworten Rückmeldung anzeigen?";
$string['time'] = "Zeit";
$string['timecompleted'] = "Beendet";
$string['timetaken'] = "Verbrauchte Zeit";
$string['true'] = "Wahr";
$string['truefalse'] = "Wahr/Falsch";
$string['type'] = "Typ";
$string['viewallanswers'] = "Zeige \$a ausgefüllte Quiz";
$string['yourfinalgradeis'] = "Ihre Gesamtnote für dieses Quiz ist \$a";
?>
+30
View File
@@ -0,0 +1,30 @@
<?PHP // $Id$
// reading.php - created with Moodle 1.0.6 dev (2002100200)
$string['addresource'] = "Literatur hinzufügen";
$string['editingaresource'] = "Literatur bearbeiten";
$string['example'] = "Beispiel";
$string['examplereference'] = "Stefan Münz,
SelfHTML
";
$string['exampleurl'] = "http://selfhtml.teamone.de";
$string['filename'] = "Dateiname";
$string['fulltext'] = "Voller Text";
$string['htmlfragment'] = "HTML-Teil";
$string['modulename'] = "Literatur";
$string['modulenameplural'] = "Literatur";
$string['neverseen'] = "Nie gelesen";
$string['note'] = "Anmerkung";
$string['notefile'] = "Um mehr als eine Datei für diesen Kurs hochzuladen (damit dieses in der Liste erscheinen) benutzen Sie bitte den
<A HREF=\$a >Datei-Manager</A>.";
$string['notypechosen'] = "Sie müssen einen Typ auswählen. Verwenden Sie den Zurück-Knopf und probieren Sie es erneut";
$string['resourcetype'] = "Typ der Quelle";
$string['resourcetype1'] = "Referenz";
$string['resourcetype2'] = "Internet-Seite";
$string['resourcetype3'] = "Hochgeladene Datei";
$string['resourcetype4'] = "Reiner Text";
$string['resourcetype5'] = "Internet-Verknüpfung";
$string['resourcetype6'] = "HTML-Text";
?>
+45
View File
@@ -0,0 +1,45 @@
<?PHP // $Id$
// survey.php - created with Moodle 1.0.6 dev (2002100200)
$string['actual'] = "Aktuell";
$string['allquestions'] = "Alle Fragen geordnet, alle Kursteilnehmer";
$string['allscales'] = "Ale Ränge, alle Kursteilnehmer";
$string['alreadysubmitted'] = "Sie haben diese Übersicht bereits eingereicht ";
$string['analysisof'] = "Analyse von \$a";
$string['done'] = "Erledigt";
$string['download'] = "Herunterladen";
$string['downloadexcel'] = "Daten als Excel-Tabelle herunterladen";
$string['downloadinfo'] = "Sie können die Rohdaten dieser Übersicht vollständig in einer weiterverwendbaren Form herunterladen für die Analyse in Excel, SPSS oder anderen Paketen";
$string['downloadtext'] = "Daten als reine Text-Datei herunterladen";
$string['editingasurvey'] = "Eine Übrsicht bearbeiten";
$string['helpsurveys'] = "Hilfe zu den verschiedenen Typen der Übersichten";
$string['ifoundthat'] = "Ich habe dieses gefunden";
$string['introtext'] = "Einführungstext";
$string['ipreferthat'] = "Ich bevorzuge das";
$string['modulename'] = "Übersicht";
$string['modulenameplural'] = "Übersichten";
$string['name'] = "Name";
$string['newsurveyresponses'] = "Neue Übersicht der Antworten";
$string['nobodyyet'] = "Keiner hat diese Übersicht verfasst";
$string['notdone'] = "Noch nicht durchgeführt";
$string['notes'] = "Ihre persönliche Analyse und Anmerkungen";
$string['peoplecompleted'] = "\$a Leute haben bereits diese Übersicht verfasst";
$string['preferred'] = "Bevorzugt";
$string['question'] = "Frage";
$string['questions'] = "Fragen";
$string['report'] = "Bericht der Übersicht";
$string['savednotes'] = "Ihre Anmerkungen wurden gespeichert";
$string['scales'] = "Scales";
$string['seemoredetail'] = "Hier klicken für mehr Details";
$string['selectedquestions'] = "Ausgewählte Fragen aus einem Rang, alle Studenten";
$string['summary'] = "Zusammenfassung";
$string['surveycompleted'] = "Sie haben diese Übersicht verfasst. Das folgende Diagramm zeigt eine Zusammenfassung Ihrer Ergebnisse im Vergleich zu den Kursdurchschnitten. ";
$string['surveyname'] = "Name der Übersicht";
$string['surveysaved'] = "Übersicht gespeichert";
$string['surveytype'] = "Typ der Übersicht";
$string['thanksforanswers'] = "Danke für die Antworten zu dieser Übersicht, \$a";
$string['time'] = "Zeit";
$string['viewsurveyresponses'] = "Zeige \$a Antworten zur Übersicht";
?>

Some files were not shown because too many files have changed in this diff Show More